EDIT: я обновил program с ответом, и он отлично работает!
Я делаю program (не стесняйтесь попробовать), который позволяет пользователям рисовать полигоны, которые он затем триангулирует. Они могут щелкнуть, чтобы добавить вершины, и нажать Enter для триангуляции. В любом случае, алгоритм работает нормально, пока я говорю, если точки были нарисованы по часовой стрелке или против часовой стрелки (сейчас у меня он установлен только для работы с полигонами по часовой стрелке). Я пытался понять это в течение нескольких дней, но понятия не имею, как определить, будут ли точки по часовой стрелке или против часовой стрелки. Попробуйте рисовать фигуры с помощью упомянутой выше программы, чтобы получить лучшую идею, вы можете испытать то, о чем я говорю, лучше, чем я могу попытаться объяснить это.
Вот как определяются точки:
function Point(x, y) {
this.x = x;
this.y = y;
}
var vertices = [];
// Called on click
function addPoint(mouseX, mouseY) {
vertices.push(new Point(mouseX, mouseY));
}
Вот изображение многоугольника по часовой стрелке:
Вот изображение полигона против часовой стрелки:
Если бы вы могли помочь мне выяснить, как определить "по часовой стрелке" точек, я был бы очень благодарен!