29

入力が与えられた場合:

double x1,y1,x2,y2;

一般的な形式の方程式(ax + by + c = 0の場合はdoublea、b、c)を見つけるにはどうすればよいですか?

注:これを計算で実行できるようにしたいと思います。したがって、スロープインターセプト形式に相当するものは次のようになります。

double dx, dy;
double m, b;

dx = x2 - x1;
dy = y2 - y1;
m = dy/dx;
b = y1;

明らかに、これは非常に単純ですが、一般的な方程式の形式の解を見つけることができませんでした(垂直線を実行できるため、より便利です)。私はすでに線形代数の本と計算幾何学に関する2冊の本を調べました(どちらもこれを説明するには高度すぎます)。

4

5 に答える 5

48

y-y1 = (y2-y1)/(x2-x1) * (x-x1)方程式(2点で定義される直線の方程式)から始める場合、いくつかの操作を通じて、を取得でき(y1-y2) * x + (x2-x1) * y + (x1-x2)*y1 + (y2-y1)*x1 = 0、次のことを認識できます。

  • a = y1-y2
  • b = x2-x1
  • c = (x1-x2)*y1 + (y2-y1)*x1
于 2012-11-06T00:51:16.423 に答える
3

2つの点を引くことによって接線を取得し(x2-x1, y2-y1)ます。それを正規化し、90度回転して、法線ベクトルを取得します(a,b)。定数を取得するには、ポイントの1つで内積を取りcます。

于 2012-11-06T00:43:19.030 に答える
2

2点から線を定義する方程式から始める場合

(x - x1)/(x2 - x1) = (y - y1)/(y2 - y1)

あなたは次の方程式で終わることができます

x(y2 - y1) - y(x2 - x1) - x1*y2 + y1*x2 = 0

したがって、係数は次のようになります。

  • a = y2-y1
  • b =-(x2-x1)= x1-x2
  • c = y1 * x2-x1 * y2

Cでのアルゴリズムの実装

inline v3 LineEquationFrom2Points(v2 P1, v2 P2) {
    v3 Result;

    Result.A = P2.y - P1.y;
    Result.B = -(P2.x - P1.x);
    Result.C = P1.y * P2.x - P1.x * P2.y;

    return(Result);
}
于 2018-10-11T09:25:51.287 に答える
1

ショートカットの手順: "問題:(4,5)(3、-7) " 解決:m = -12/ 1、12x -y = 48 "注:mは勾配です" 分子をコピーし、接辞"X"正の分数間の負のサインオン。(ヒント:simmilar sign = add + signをコピー) 1。2番目のセットを反対の符号に変更します。2。y1をy2に加算します(符号に応じて加算または減算します)。3。x1をx2に加算します(加算も意味します)または、符号に応じてそれらを減算します)、4。次に、問題セットのいずれかに12と1を乗算します。その後、「ブーム」多田!、あなたはあなたの答えを持っています

于 2014-01-18T11:11:20.257 に答える
-4
#include <stdio.h>
main()
{
    int a,b,c;
    char x,y;
    a=5;
    b=10;
    c=15;
    x=2;
    y=3;
    printf("the equation of line is %dx+%dy=%d" ,a,b,c);
}
于 2017-08-10T06:29:36.413 に答える