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

时间:2015-04-03 15:46:08

标签: mesh cgal

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

由于

1 个答案:

答案 0 :(得分:2)

如果您有一个非退化三角形,其中包含三个点abc,则三角形角度a处角度的余弦为两个向量的标量积除以它们的长度:

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是您用于点的内核类型。角度本身的半径可以通过以下方式计算:

double angle = std::acos(cosine);

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