Рисование изменяемых (не пересекающихся) полигонов

Я искал везде, но я не мог найти ответа. я нужно рисовать многомерные полигоны с взаимодействием с мышью, но я не нужны нерегулярные, перекрывающиеся или пересекающиеся многоугольники в конец.

Вот простой пример рисования многоразовых полигонов http://www.wolfpil.de/polygon.html

Вы можете легко создавать и изменять размер многоугольников, что отлично. Но мне нужно дополнительная функциональность для обнаружения пересечений и НЕ допускающая странных выглядящие фигуры/полигоны. Вы можете увидеть проблему в этом видео: http://www.youtube.com/watch?v=zou2jcGM8zw

Единственное решение для этой проблемы, которое я нашел в http://www.wikimapia.org. Они добавили функции для решения проблемы. Вы можете увидеть это в этом видео: http://www.youtube.com/watch?v=K7-K0k2D-2A

Я потратил 3 дня на то, чтобы добиться чего-то подобного. я ушел через javascript-код wikimapia, но для меня это слишком сложно понимать.

В целом, он не должен выглядеть таким же фантастическим, как и викимапия. я просто нужны изменяемые размеры многоугольников, которые НЕ пересекаются при изменении размера или добавляя к нему новые баллы. Можете ли вы дать мне какие-либо рекомендации о том, как достичь этого?

Спасибо заранее.

Ответы

Ответ 1

В зависимости от количества точек, которые вы допускаете, достаточно простого, простого алгоритма пересечения линий O(N^2). Алгоритмически это не лучшее решение, но для его запуска наиболее доступным для новичка в вычислительной геометрии.

Для стартера см. Статья Википедии о пересечении сегментов линии. Одна из его ссылок имеет легко понять объяснение того, как вычислить точку пересечения двух сегментов линии.

Удачи!

Ответ 2

Хотя это не полный ответ, обратите внимание, что приведенный вами пример, похоже, использует элементы управления Geometry из библиотеки утилит GMaps, которая является проектом с открытым исходным кодом, размещенным в Google Code.

Вы можете проверить полный исходный код в браузере Google Code.

Google's Geometry Controls