4

我一直在到处寻找,但找不到答案。我需要通过鼠标交互绘制可调整大小的多边形,但最后我不希望不规则、重叠或相交的多边形。

这是绘制可调整大小多边形的简单示例 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 天时间尝试实现这样的目标。我已经浏览了 wikimapia 的 javascript 代码,但它太复杂了,我无法理解。

总之,它不必像wikimapia 那样花哨。我只需要在调整大小或添加新点时不相交的可调整大小的多边形。你能给我任何建议如何实现吗?

预先感谢。

4

2 回答 2

1

根据您允许的点数,一个简单的O(N^2)线交叉算法就足够了。从算法上讲,这不是最好的解决方案,但对于开始计算几何的初学者来说,它是最容易获得的。

对于初学者,请参阅Wikipedia article on line segment intersection它的一个链接对如何计算两条线段的交点有一个易于理解的解释。

祝你好运!

于 2010-03-01T01:41:28.490 回答
1

虽然这不是一个完整的答案,但请注意,您提供的示例似乎使用了GMaps Utility Library中的Geometry Controls,这是一个托管在 Google Code 上的开源项目。

您可以在 Google 代码浏览器中查看完整的源代码

谷歌的几何控制

于 2010-03-01T09:38:03.737 回答