使用#CGAL 的 3D 网格的三角形角度
Angles of triangles of a 3D mesh using #CGAL
我想知道是否可以使用 CGAL 函数计算 3D 网格(用图形表示)的三角形角度?
谢谢
如果你有一个包含三个点a
、b
和c
的非退化三角形,三角形的角度,[=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.
(即 非数字 )。你必须单独处理这种情况。
我想知道是否可以使用 CGAL 函数计算 3D 网格(用图形表示)的三角形角度?
谢谢
如果你有一个包含三个点a
、b
和c
的非退化三角形,三角形的角度,[=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.
(即 非数字 )。你必须单独处理这种情况。