2016-12-05 147 views
-1

确定多边形的正常点是否指向多边形内部或外部的正确方法是什么?我有正确的顺序列表(p1,p2,normalVec)。我认为我应该排序他们顺时针或逆时针,然后以某种方式计算正常的矢量与我的线的方向矢量。 enter image description here确定多边形法线,多边形内部还是外部的点

左边的一个应该返回外部和正确的一个里面。

+1

好吧,你是否尝试做你上面解释的? – nullpointer

回答

0

好的,我现在正在用我的游戏引擎做这件事。 我做什么来确定一个多边形面临的方式是始终以相同的方式缠绕三角形。对我而言,我总是顺时针吹风。 然后使用这些三角形,计算法向量。这里是我的代码:

public static Point GetNormalVector(Point p1, Point p2, Point p3) 
{ 
    double diff_x = p3.GetExX() - p2.GetExX(); 
    double diff_y = p3.GetExY() - p2.GetExY(); 
    double diff_z = p3.GetExZ() - p2.GetExZ(); 
    double diff_x1 = p1.GetExX() - p2.GetExX(); 
    double diff_y1 = p1.GetExY() - p2.GetExY(); 
    double diff_z1 = p1.GetExZ() - p2.GetExZ(); 
    Point orig = new Point(0, 0, 0); 
    orig.SetX((diff_y * diff_z1) - (diff_y1 * diff_z)); 
    orig.SetY((diff_z * diff_x1) - (diff_z1 * diff_x)); 
    orig.SetZ((diff_x * diff_y1) - (diff_x1 * diff_y)); 
    NormalizeVector(orig); 
    return orig; 
} 

现在我们有多边形的法向量。 根据你用哪种方式缠绕你的三角形,法向矢量总是以相同的方式指向 - 进出。 当计算法向量时,您会知道它们指向哪个方向。对我来说,顺时针=输出,逆时针=输入。

这是回答您的问题吗?

相关问题