【发布时间】:2017-07-20 11:08:02
【问题描述】:
所以我遇到了这个问题:我正在编写一个程序,您可以在其中单击屏幕上投影的 3D 对象的点,并且将选择最接近该点的视觉(2D)三角形网格的顶点.我已经计算了与三角形相交的重心坐标。如何使用这些重心坐标来计算最近的顶点? 感谢您的帮助
【问题讨论】:
标签: graphics 3d geometry distance
所以我遇到了这个问题:我正在编写一个程序,您可以在其中单击屏幕上投影的 3D 对象的点,并且将选择最接近该点的视觉(2D)三角形网格的顶点.我已经计算了与三角形相交的重心坐标。如何使用这些重心坐标来计算最近的顶点? 感谢您的帮助
【问题讨论】:
标签: graphics 3d geometry distance
对于重心坐标(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),因此您可以比较平方距离并选择最小的距离。我已经分离了更简单的表达式进行比较。
也许你需要一些相当好的(接近等边的)三角形的近似值。在这种情况下,从重心三元组中选择最大值。它大致对应于最近的顶点。
【讨论】: