确定多边形的法线点是否在多边形内部或外部的正确方法是什么?我有一个正确的行列表(p1,p2,normalVec)。我想我应该对它们进行CW或CCW排序,然后以某种方式用我的线的方向Vector计算法线向量。
左边一个应该返回外部,右边一个应该返回内部。
答案 0 :(得分: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;
}
现在我们有了多边形的法线向量。 根据您缠绕三角形的方式,法线向量将始终以相同的方式指向 - 输入或输出。 您将知道在计算法向量时它们指向哪种方式。对我来说,顺时针= out,逆时针= in。
这会回答你的问题吗?