可能重复:
如何检测两条线段相交?
有人能提供一个算法或C代码,用于确定两条线段是否相交吗?
可能重复:
如何检测两条线段相交?
有人能提供一个算法或C代码,用于确定两条线段是否相交吗?
v1 = (x11, y11)
如果我们把上面的表达式改写成矩阵形式,那么现在我们有:
| x00 - x10 | | x11 | | x01 |
| y00 - y10 | = | y11 | s - | y01 | t
| x00 - x10 | | x11 x01 | | s|
| y00 - y10 | = | y11 y01 | |-t|
现在,我们需要考虑两种情况。首先,如果这个左边的向量是零向量,那么就有一个微不足道的解法——只需设置s=t=0,点就相交了。否则,只有右边的矩阵可逆时才有唯一解。如果我们让
| x11 x01 |
d = det(| y11 y01 |) = x11 y01 - x01 y11
然后是矩阵的逆
| x11 x01 |
| y11 y01 |
is given by
| y01 -x01 |
(1/d) | -y11 x11 |
| s| | y01 -x01 | | x00 - x10 |
|-t| = (1/d) | -y11 x11 | | y00 - y10 |
| (x00 - x10) y01 - (y00 - y10) x01 |
= (1/d) | -(x00 - x10) y11 + (y00 - y10) x11 |
s = (1/d) ((x00 - x10) y01 - (y00 - y10) x01)
t = (1/d) -(-(x00 - x10) y11 + (y00 - y10) x11)