Проецируйте 3D-многоугольник в 2D-плоскость так, чтобы вершины были расположены против часовой стрелки.
Некоторые быстрые алгоритмы для работы с полигонами требуют, чтобы вершины полигона имели определенный порядок (по часовой стрелке или против часовой стрелки относительно плоскости нормали многоугольника).
Чтобы использовать эти алгоритмы в трехмерных плоских многоугольниках (где все точки лежат в конкретной плоскости), можно выполнить замену базиса на базис, натянутый на два ортогональных вектора, которые лежат в плоскости, и плоский вектор нормали.
Есть ли способ всегда найти базис, в котором вершины многоугольника всегда располагаются против часовой стрелки (или по часовой стрелке)?
1 ответ
Возможно, лучший способ - это вычислить подписанную область многоугольника, и если он отрицательный, вы знаете, что ваши вершины расположены по часовой стрелке; так что наоборот. Если оно положительное, ваши вершины против часовой стрелки.
Ищите "подписанную область многоугольника". Вот одна ссылка Mathematica: