我有一堆位于三维空间中的共面点来定义一个多边形。这些点总是以相同的方式缠绕(例如顺时针)。我需要确定包含该多边形的平面的有符号法线,即知道该多边形的“上”方向。
起初似乎很容易:取两条边(顶点差值)并计算叉积。但如果边恰好共线(即得到零大小的叉积),则会失败。
然后我尝试在顶点列表中遍历,直到找到与第一条边形成合理大角度的第二条边。对于凸多边形,这可靠地起作用,但如果我最终使用的两个边不定义在多边形内的三角形,则在非凸多边形上可能会失败(指向相反的方向)。
我知道如果先将多边形三角化,那么我可以轻松且可靠地检查任何三角形的朝向......但问题是我的三角化库需要知道平面法线。所以,先有鸡还是先有蛋的问题。
如何选择非凸多边形中的两条边(或三个顶点),以可靠地定义多边形的朝向?