从多点VB6创建多边形的算法

时间:2011-10-11 17:23:21

标签: algorithm vb6 polygon points

我正在尝试使用面函数在VB6中创建一个多边形。

我有许多随机顺序的点,我想用。创建多边形。

不幸的是,在开发多边形时,顺序很重要,因为我得到锯齿状的多边形,而不是一个漂亮的闭合多边形。

我想知道是否有人有任何好的想法/技巧来开发一个算法,可以通过这些点并按适当的顺序排列。

非常感谢!

2 个答案:

答案 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: