Вычисление двугранного угла со знаком

#graphics #openmesh

#графика #openmesh

Вопрос:

OpenMesh имеет calc_dihedral_angle() функцию для вычисления двугранного угла между двумя гранями. Существует ли знаковый / направленный эквивалент этой функции? Полукруги граней направлены, поэтому нормали граней четко определены. Таким образом, имеет смысл говорить о выпуклости.

Рассмотрим следующий простой случай, состоящий только из двух соединенных граней. Начиная с нулевого двугранного угла (соседних граней в плоскости), можно повернуть одну из граней вокруг общего ребра в любом направлении. В одном случае поверхность будет выпуклой, в другом случае она будет вогнутой. calc_dihedral_angle() не делает различий между ними. Я ищу функцию, которая учитывает эту направленность и дает либо положительный, либо отрицательный двугранный, в зависимости от выпуклости.

Комментарии:

1. Используйте скалярное произведение нормалей, чтобы решить, равен ли угол>90 или <90, но с точки зрения соглашения о знаках это не имеет смысла, если у вас не указана ось вращения и направление.

2. Я понял, что calc_dihedral_angle() это уже делает. Я согласен, что выбор знака не указан, но не имеет значения, если он согласован и позволяет различать два направления.

Ответ №1:

На самом деле это именно то, что calc_dihedral_angle() делает.