使用#CGAL 的 3D 网格的三角形角度

Angles of triangles of a 3D mesh using #CGAL

我想知道是否可以使用 CGAL 函数计算 3D 网格(用图形表示)的三角形角度?

谢谢

如果你有一个包含三个点abc的非退化三角形,三角形的角度,[=12=处角度的余弦值] 是两个向量除以它们的长度的标量积:

CGAL::Vector_3<K> v1 = b - a;
CGAL::Vector_3<K> v2 = c - a;
double cosine = v1 * v2 / CGAL::sqrt(v1*v1) / CGAL::sqrt(v2 * v2);

其中 K 是您用于点的内核类型。角度本身 in radius 可以通过以下方式计算:

double angle = std::acos(cosine);

当然,对于退化三角形,长度可以为零,上面的表达式将计算 0./0.(即 非数字 )。你必须单独处理这种情况。