我想在多边形函数中使用VB6创建多边形。从多个点创建多边形的算法VB6
我有很多随机顺序的点,我想创建多边形。
不幸的是,当开发一个多边形时,顺序很重要,因为我得到一个锯齿状的多边形,而不是一个很好的封闭多边形。
我想知道是否有人有任何好的想法/技巧来开发一个算法,可以通过这些点,并把他们在一个适当的顺序。
非常感谢!
我想在多边形函数中使用VB6创建多边形。从多个点创建多边形的算法VB6
我有很多随机顺序的点,我想创建多边形。
不幸的是,当开发一个多边形时,顺序很重要,因为我得到一个锯齿状的多边形,而不是一个很好的封闭多边形。
我想知道是否有人有任何好的想法/技巧来开发一个算法,可以通过这些点,并把他们在一个适当的顺序。
非常感谢!
我使用格雷姆扫描算法来实际进行并解决这个问题。
http://en.wikipedia.org/wiki/Graham_scan
如果按照伪代码,要小心。
线
while ccw(points[M-1], points[M], points[i]) <= 0:
应该
while ccw(points[M-1], points[M], points[i]) >= 0:
为了保持简单和解决方案独一无二的,你应该像这样的(“礼品包装”)的凸包算法开始:
http://en.wikipedia.org/wiki/Gift_wrapping_algorithm
应该不是太难的VB实现。如果您遇到问题,请提出一个新问题。
相关:http://stackoverflow.com/questions/828905/polygon-enclosing-a-set-of-points – Kevin