如何计算矢量形式的射线段交叉?

时间:2014-01-19 16:46:59

标签: math computational-geometry

我需要计算一个平面中光线和线段的交点以及从光线原点到交点的距离的事实,但我非常了解计算几何,所以...怎么做?

1 个答案:

答案 0 :(得分:0)

具有端点A和B(所有向量)的段具有等式:

P(x) = A * x + B * (1 - x)

其中0 <= x <= 1。

射线与原点R和方向(单位)向量U有一个等式:

Q(y) = R + U * y

其中y> = 0。

你只需要解决这个等式:

P(x) = Q(y)

即,找到参数x和y(如果它们存在),满足该(向量)方程。您将有两个标量方程和两个变量来计算。您可以轻松地解决此线性系统,然后检查条件0 <= x <= 1且y> = 0.如果满足这些条件,则得到解决方案,否则没有交叉点。 y值将为您提供从光线原点到交叉点的距离。

此外,您还必须考虑许多退化情况,例如 - 光线通过两个分段端点等传递。