任意多边形顶点排序和凸包计算

时间:2023-01-08 10:57:35

1,理论

凸包计算算法导论上有讲,关键步骤是根据对顶点进行逆时针排序。凸包顶点只是多边形顶点子集。

任意多边形顶点排序和凸包计算

图-1

如图1中,判断三个点构成顺时针还是逆时针方向。使用向量点积即可:

向量A<beg, end>

向量B<beg, next>

A.dot(B) 是一个实数,大于0,则逆时针,小于0则顺时针。

2,效果图:

任意多边形顶点排序和凸包计算

图 - 2

任意多边形顶点排序和凸包计算

图 - 3

图2是随机生成了三十个点。

图3是黄色线条是排序以后顺序链接,外面淡蓝色线条是凸包。注意排序以后的顶点只保证顺序连线的顺序,不能保证所有顶点逆时针/顺时针排序。。。而且中间非常有可能是z型,即顺时针/逆时针翻转~

 

3,可运行程序

freeglut2.6.0