答案 0 :(得分:2)
好的,这不仅仅是一个数学问题,而是让我在这里解释一下。看看这张图片:
让我们通过矢量 A 为起点定义线段,为运行通过该线段的矢量 a 定义,该线段以箭头结束。同样对于其他段B和C分别有效。点 P 作为坐标,也是矢量。
现在让我们把线性代数作为我们的朋友,然后以编程方式有效。 : - )
在细分 a 的示例中,您可以分别与另一个一起执行此操作:
尝试存储并比较 dA , dB 和 dC 的平方距离,而不是保存距离,并进行比较。它将节省您计算可能变得非常昂贵的平方根。
这是一些伪代码:
vector3 AP = P-A;
vector3 projA = a.dot(AP);
vector3 nA = a.normalized();
dA = A + projA*na - P;
dA2 = dA.x*dA.x + dA.y*dA.y + dA.z*dA.z;
-> Compare and sort them by that value
希望它有所帮助...