2015-04-03 3 views
1

Я хотел бы знать, можно ли вычислить углы треугольников трехмерной сетки (представленные графиком) с использованием функции CGAL?Углы треугольников трехмерной сетки с использованием #CGAL

Благодаря

+0

Вы хотите вычислить углы в треугольнике или вычислить статистику по углам треугольников? – lrineau

+0

Я хочу вычислить углы в треугольниках – ananass

+0

В 2D или 3D? Ответ будет другим. Пожалуйста, измените свой вопрос, используя кнопку «Изменить» под ним. – lrineau

ответ

2

Если у вас есть невырожденный треугольник с тремя точками 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. (то есть не-число). Вы должны иметь дело с этим случаем отдельно.