2Dスペースの3点が同じ線上にあるかどうかを実際に教えてくれるコードを知りたいのですが。擬似コードでも十分ですが、Pythonの方が適しています。
ABC三角形の面積が0かどうかを確認できます。
[ Ax * (By - Cy) + Bx * (Cy - Ay) + Cx * (Ay - By) ] / 2
もちろん、実際に2で除算する必要はありません。
これはC++ですが、Pythonに適合させることができます。
bool collinear(int x1, int y1, int x2, int y2, int x3, int y3) {
return (y1 - y2) * (x1 - x3) == (y1 - y3) * (x1 - x2);
}
基本的に、ポイント1とポイント2の間、およびポイント1とポイント3の間の勾配が一致することを確認しています。スロープはyの変化をxの変化で割ったものなので、次のようになります。
y1 - y2 y1 - y3
------- = --------
x1 - x2 x1 - x3
クロス乗算は(y1 - y2) * (x1 - x3) == (y1 - y3) * (x1 - x2)
;
ダブルスを使用している場合は、イプシロンに対してチェックできます。
bool collinear(double x1, double y1, double x2, double y2, double x3, double y3) {
return fabs((y1 - y2) * (x1 - x3) - (y1 - y3) * (x1 - x2)) <= 1e-9;
}
y - y0 = a(x-x0)
(1)while a = (y1 - y0)/(x1 - x0)
and A(x0, y0)
B(x1, y1)
C(x2, y2)
。 C
statisfies(1)かどうかを確認します。適切な値を置き換えるだけです。
this を読み取り、それを使用して最初の2つの点を通る直線の方程式を見つけます。指示に従ってm
とb
を見つけます。次に、3番目のポイントとして、mx + b - y
を計算します。結果がゼロの場合、3番目の点は最初の2つと同じ線上にあります。
ルール1:任意の線形2次元空間では、2つの点は常に同じ線上にあります。
2点を取り、それらを通る線を表す方程式を作成します。次に、3番目の点もその線上にあるかどうかを確認します。
幸運を。