【问题标题】:Vertex of a 3D triangle that is closest to a point given barycentric parameter of intersection最接近给定交点重心参数的点的 3D 三角形的顶点
【发布时间】:2017-07-20 11:08:02
【问题描述】:

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

【问题讨论】:

    标签: graphics 3d geometry distance


    【解决方案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),因此您可以比较平方距离并选择最小的距离。我已经分离了更简单的表达式进行比较。

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

    【讨论】:

    • 能否请您也写出其他顶点的公式?它是否正确?到 B 的距离:d^2 = -(a^2*(v-1)*w + b^2*wu + c^2*(v-1)*u) 到 C 的距离:d^ 2 = -(a^2*v*(w-1) + b^2*(w-1)*u + c^2*vu)
    • 是的,这是正确的。我在帖子中添加了公式和简单的表达式进行比较
    猜你喜欢
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 2012-02-29
    • 2019-06-06
    相关资源
    最近更新 更多