三角形的顶点,其最接近给定重心交叉参数的点

时间:2017-07-20 11:08:03

标签: graphics 3d geometry distance

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

1 个答案:

答案 0 :(得分:1)

对于重心坐标(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),这样您就可以比较平方距离并选择最小的距离。为了比较,我将简单的表达式分开了。

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