最接近给定重心交点参数的点的 3D 三角形的顶点

Vertex of a 3D triangle that is closest to a point given barycentric parameter of intersection

所以我遇到了这个问题:我正在编写一个程序,您可以在其中单击屏幕上投影了 3D 对象的点,并且视觉上(在 2D 中)最接近该点的三角形网格的顶点将被选中。我已经计算了与三角形相交的重心坐标。如何使用这些重心坐标来计算最近的顶点? 感谢帮助

对于重心坐标 (u,v,w) 和三角形边长 a,b,c 到 A、B、C 顶点的平方距离是

dA^2 = -(a^2*v*w + b^2*w*(u-1) + c^2*v*(u-1)) = 
       -(a^2*v*w+b^2*w*u+c^2*v*u - b^2*w - c^2*v) = 

        b^2*w + c^2*v - Const (TheSameConstantForAllVertices)

dB^2 = -(a^2*(v-1)*w + b^2*w*u + c^2*(v-1)*u) = 

        a^2*w + c^2*u - Const 

dC^2 = -(a^2*v*(w-1) + b^2*(w-1)*u + c^2*v*u)

        a^2*v + b^2*u - Const 

(more formulas here),因此您可以比较平方距离并选择最小的一个。我已经分离了更简单的表达式进行比较。

也许您需要一些近似值以获得相当好的(接近等边)三角形。在这种情况下,从重心三重态中选择最大值。它大致对应于最近的顶点。