十字路口
线
的交点
a1
, b1
, c1
- 第一行的系数,
a2
, b2
, c2
- 第二行的系数,
x
, y
- 交点。
\(x = {-(c1 \cdot b2 - c2 \cdot b1) \over (a1 \cdot b2 - a2 \cdot b1)} \\ y = {-(a1 \ cdot c2 - a2 \cdot c1) \over (a1 \cdot b2 - a2 \cdot b1)} \)
我们已经知道如何检查直线的交点(它们不平行),并找到它们的交点。
现在让我们学习如何使用段来做到这一点。
首先,让我们学习如何简单地检查它们的交集。
线段相交 如果一个线段的末端位于另一个线段的相对侧,反之亦然(这很容易通过叉积检查)。 唯一不起作用的情况 - 线段位于一条直线上。 为此,您需要检查所谓的交点。 bounding box(线段的边界框)- 检查线段投影在 X
和 Y
上的交点。
轴。
既然我们知道如何检查线段是否相交,让我们学习如何找到它们相交的点(或线段):
- 如果它们不相交,那么很明显这样的点不存在;
- 否则,我们将构建这些线段所在的直线。
如果它们是平行的,那么线段位于同一条线上,我们需要找到相交线段 - 从线段左边界的最大值到右边界的最小值(点小于另一个点,如果它在左边,在相等的情况下 X
-coordinates - 如果它更低)。
如果线不平行,则找到它们的交点并将其返回。