У меня есть проблема, когда у меня есть ряд точек для простого невыпуклого многоугольника (надеюсь, у меня правильная терминология).Но точки не обязательно в порядке (то есть по часовой стрелке или против часовой стрелки).Чтобы API рисования Flash правильно рисовал область заливки, мне нужно, чтобы эти точки развивались по краям (чтобы наконец соединиться с начальной точкой).
Есть ли способ сортировки моего списка декартовыхкоординаты по часовой стрелке или против часовой стрелки, чтобы я мог рисовать свою фигуру из точки в точку, не «поднимая ручку»?
Я видел один пост для сортировки 4-х точек многоугольника, но я думаю, что это был особыйдело только за 4 балла.Мои фигуры имеют минимум 6 баллов.В списке каждая запись гарантированно смежна (по часовой стрелке или против часовой стрелки) по крайней мере с одним из своих соседей (либо с предыдущей точкой, либо с последующей).Например: A, B, D, C ... или B, A, D, C ... но не A, C, B, D ... (мне нужно отсортировать, чтобы получитьили A, B, C, D или D, C, B, A).Я нашел этот пост, но он, похоже, остался без ответа: Сортировка списка точек в многоугольник
Производительность процессора является проблемой.Но даже «медленное» решение, если его легко реализовать и понять (для следующего программиста), может быть приемлемым, если я смогу создать эффективный механизм кэширования.
Я хотел бы прикрепить картинку кпоказать пример того, что мне нужно сделать, но у меня еще нет 10 очков репутации.В любом случае, если бы у меня было средство для сортировки вершин 3-го примера в этом списке полигонов, это было бы идеально: http://upload.wikimedia.org/wikipedia/commons/1/1f/Assorted_polygons.svg
Я действительно ценю любую помощь, спасибо!
РЕДАКТИРОВАТЬ: Я действительно могу гарантировать центральную точку для системы координат - это будет центр экрана.Все точки будут между 0 и шириной экрана / высотой (начало координат, очевидно, ширина / высота / 2).Я не могу гарантировать, что полигон будет содержать исходную точку внутри.Это редкое исключение, но я должен это учитывать.
Кстати, причина, по которой мои сегменты не обязательно расположены по порядку, заключается в том, что они генерируются с использованием Conrec: http://paulbourke.net/papers/conrec/ (они являются контурными линиями).Я упорядочиваю сегменты линии контура, сгенерированные Conrec, используя следующее: Как собрать массив (ы) непрерывных точек для линии контура, используя Conrec Теперь проблемный случай для внешних линий контура на карте.Они будут пересекаться с краем карты (т. Е. Не образуют замкнутый многоугольник).В этом случае я рисую по краям границ карты, пока я не соединюсь заново с местом, где линия начала (на краю карты), или линия родного брата не войдет в карту (повторяясь, пока я в конечном итоге не вернусь к своему исходному месту).точка).Затем я могу нарисовать область и заставить API заполнения работать.Надеюсь, эта информация поможет.Я предположил, что лучше всего было бы создать упорядоченный список вершин многоугольника, но, возможно, нужен другой подход.