2010-03-01 4 views
4

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

Вот простой пример рисования с изменяемыми размерами полигонов 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, но для меня это слишком сложно для меня , чтобы понять.

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

Благодарим заранее.

ответ

1

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

Для стартера см. Wikipedia article on line segment intersection. One of its links имеет удобное для понимания объяснение того, как вычислить точку пересечения двух сегментов линии.

Удачи вам!

+0

Спасибо, это помогает мне понять, что эта проблема является гораздо более сложным, чем я думаю. – pars

1

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

Вы можете проверить the full source code in the Google Code browser.

Google's Geometry Controls http://img521.imageshack.us/img521/6787/poly.jpg

+0

Спасибо, Дэниел, я прошел этот пример, но это не помогает мне в точности. – pars

Смежные вопросы