常见凸多边形判断方法
凸多边形的判定方法
在计算几何和地理信息系统中,多边形的凹凸性判定十分重要。那么什么是凹多边形和凸多边形呢?首先,我们从直观上来理解,凸多边形就是多边形任意两个顶点的连线在多边形内,那么凹多边形就是至少能找出一条线在多边形外。
一些基础概念
顶点、向量、向量叉乘、
一般来说,多边形是由首尾相连的顶点组成的。这里的顶点就是几何中的点。向量,在2D以及3D几何中,点和向量可以用一个类或者结构体来表示,但是点和向量在数学上存在着本质的区别。点是有位置的,但是没有方向。而向量是没有位置,但是有方向,主要就是表达几何中的位移。
在多边形凹凸性判断中,要用到矢量叉乘,也就是向量叉乘。向量叉乘在图形系统中有着非常重要的应用,包括CAD、地理信息系统等。
几种常见的凸多边形判断方法:
1)角度法:
判断每个顶点所对应的内角是否小于180度,如果小于180度,则是凸的,如果大于180度,则是凹多边形。
2)凸包法:
这种方法首先计算这个多边形的凸包,关于凸包的定义在此不再赘述,首先可以肯定的是凸包肯定是一个凸多边形。如果计算出来的凸多边形和原始多边形的点数一样多,那就说明此多边形时凸多边形,否则就是凹多边形。
3)顶点凹凸性法
利用以当前顶点为中心的矢量叉乘或者计算三角形的有符号面积判断多边形的方向以及当前顶点的凹凸性。
假设当前连续的三个顶点分别是P1,P2,P3。计算向量P1P2,P2P3的叉乘,也可以计算三角形P1P2P3的面积,得到的结果如果大于0,则表示P3点在线段P1和P2的左侧,多边形的顶点是逆时针序列。然后依次计算下一个前后所组成向量的叉乘,如果在计算时,出现负值,则此多边形时凹多边形,如果所有顶点计算完毕,其结果都是大于0,则多边形时凸多边形。
4)辛普森面积法
利用待判别的顶点以及前后两个顶点所组成的三角形,利用辛普森公式计算其面积,如果此三角形面积与整个多边形面积符号相同,那么这个顶点是凸的;如果此三角形面积与整个多边形面积符号不同,那么这个顶点是凹的,即整个多边形也是凹多边形。
结论:以上只是几种最基本的判定方法,当然还有更优秀的算法,由于个人能力就到此为止了。