我正在尝试使用多边形函数在 VB6 中创建一个多边形。
我有很多随机顺序的点,我想用它们来创建多边形。
不幸的是,在开发多边形时顺序很重要,因为我得到一个锯齿状的多边形,而不是一个漂亮的封闭多边形。
我想知道是否有人有任何好的想法/技巧来开发一种可以通过这些点并将它们按适当顺序排列的算法。
非常感谢!
为了使事情简单并且解决方案独特,您应该从像这样的凸包算法开始(“礼品包装”):
http://en.wikipedia.org/wiki/Gift_wrapping_algorithm
在 VB 中实现应该不会太难。如果您对此有疑问,请提出一个新问题。
我使用格雷厄姆扫描算法来实际解决这个问题。
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: