计算非凸多面体的向外法线

时间:2018-01-04 10:38:48

标签: c++ geometry computational-geometry polyhedra

如果多面体的所有节点(可能是非凸的)及其坐标已知,则按顺序给出面的点(逆时针或顺时针绕向外法线),如何获得向外法线每张脸的矢量?

这是凸多面体的一种方法: Computing face normals and winding

一般多面体可能是非凸的吗?

1 个答案:

答案 0 :(得分:1)

这是一种方法。修复多面体 P 的一个面F0的方向。你还不知道是否这样 从外面逆时针方向,所以右手规则给出了一个 从十字产品向外指向正常。

现在将相邻面F1定向为与F0的方向兼容 共享边缘定向→在F1中的F0和←。继续传播 面的方向直到 P 的每个面都与F0一致。所以现在都是正常的 要么指向内部,要么指向外部。

现在通过对有符号的四面体体积求和来计算 P 的体积。音量 如果所有面都是逆时针方向,则为正数,为负数 如果顺时针方向。如果它是负面的,则反转所有面部方向。

计算已签名的卷遍布整个网络,包括: Computational Geometry in C