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