12

2 つの線が重なっているかどうかを調べる必要があります。2 本の線が平行な場合、0 を返す交差点コードがあります。しかし、これらの 2 つの平行線が重なっているかどうかを知る必要があります。

編集:

A                    C       B                D
-----------------------------------------------

1 行目: AB

ライン 2: CD

ライン 1 がライン 2 と重なっているかどうかを確認する必要がありますが、両方のラインの勾配が 0 より大きい可能性があります。

4

9 に答える 9

2

どちらも平行であることがわかっているので、線分 CD に最初の線の端点 (点 A と点 B) のいずれかが含まれているかどうかを確認します。

于 2013-06-17T15:11:38.357 に答える
1

線の方程式は、無限の線の方向です。傾きまたは切片を見つけることで、それらを使って何もできません (水平線には傾きがありませんが)。線上の点を使用することをお勧めします。したがって、ABはあなたの線[(x、y)、(x、y)]であり、Cは点(x、y)の上にあるので、点が線上にあるかどうかを確認する必要があります。
ライン上のチェックポイント

于 2016-04-06T03:23:09.853 に答える
1

三角形 ACB と CBD の面積を計算すれば十分です。面積が 0 の場合、点は同一線上にあり、両方の面積が 0 の場合、線は重なっています。

三角形 ABC の面積は、次の式で計算できます。

2*面積(ABC)= (bx – ax)(cy – ay) – (cx – ax)(by – ay);

于 2014-05-21T12:04:51.160 に答える
0

2 つの線分が与えられます

AB = (A x ,A y ) から (B x ,By y )
までの線分 CD = (C x ,C y ) から (D x ,D y )までの線分

同じ傾きで。

  • E i, x = E i +1 の場合、 E i,x ≤ E i+1,xおよび E i,y ≤ E i+1,yとなるように、端点 E 1 < E 2 < E 3 < E 4を並べます。バツ
  • E 1と E 2が異なるセグメントからのものである場合、オーバーラップは E 2から E 3へのセグメントです。

いくつかの退化したケースがあります:

  • A < B = C < D
  • A < C = D < B
  • A < B = C = D
  • A = B = C = D

これらは、単一の交点になります。これらのいずれかがシステムで発生する可能性があるかどうかはわかりませんが、発生する場合は、その「重複」を考慮して特別なケースのチェックを追加するかどうかを決定する必要があります.

于 2013-06-17T16:20:45.910 に答える