Хакер писал(а):Если точки обязательно идут либо по, либо против часовой стрелки, то выбрать две любые точки, преобразовать прямоугольные координаты в полярные, сравнить Фи, при необходимости развернуть порядок следования (или обхода) точек.
Если точки идут в произвольном порядке, то всё равно преобразовать прямоугольные координаты в полярные и отсортировать точки по Фи (угловой координате).
Хакер писал(а):Ну сам-то ты как определяешь, какая?
Хакер писал(а):Если внутрь, то нормаль пересечёт контур фигуры нечётное кол-во раз, если во внешний мир --- чётное.
Хакер писал(а):Если ты позволяешь себе говорить о часовой стрелки, то значит сам ты всё таки берёшь какую-то точку за ось вращения этой стрелки.
Хакер писал(а):Если внутрь, то нормаль пересечёт контур фигуры нечётное кол-во раз, если во внешний мир --- чётное.
Александр Дмитриев писал(а):Потратил я в своё время на эту идею суммарно часов 10. Ну не прокатывает этот метод в некоторых случаях, хоть как его улучшай!
Александр Дмитриев писал(а):Вот примерно в таком случае метод покажет, что нормаль направлена наружу:
Сначала алгоритм посчитает конец одного отрезка, потом - начало другого. Всего получится 2 пересечения. Если при определении пересечения нормалью отрезка не учитывать крайние точки этого отрезка (то есть в проверке, описанной Зенитчиком, поставить строгие неравенства), то пересечений будет 0. Можно ещё придумать учитывать начало отрезка, но не учитывать конец, но в другом контрпримере алгоритм опять будет работать неверно:
Nord777 писал(а):Если больше по часовой - значит вся фигура - по часовой, в противном случае - против
Если больше по часовой - значит вся фигура - по часовой, в противном случае - против.
Вот в таком случае направление по часовой стрелке имеют 4 угла, а против - 3 угла, но вся ломаная идёт против часовой
Да уж. О таких закидонах я не подумал.А если одинаково?
Наверно не два смежных.Предлагаю многоугольник итеративно упроситить до треугольника (заменяя два смежных ребра одним единственным),
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3