Я хотел бы знать, можно ли вычислить углы треугольников трехмерной сетки (представленной в виде графика) с помощью функции CGAL?
Спасибо
Я хотел бы знать, можно ли вычислить углы треугольников трехмерной сетки (представленной в виде графика) с помощью функции CGAL?
Спасибо
Если у вас есть невырожденный треугольник с тремя точками a
, b
и c
, угол треугольника, косинус угла при 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.
(то есть не-число). С этим случаем нужно разбираться отдельно.