常见凸多边形判断方法
来源:互联网 发布:银行卡照片制作软件 编辑:程序博客网 时间:2024/06/11 10:12
凸多边形的判定方法
在计算几何和地理信息系统中,多边形的凹凸性判定十分重要。那么什么是凹多边形和凸多边形呢?首先,我们从直观上来理解,凸多边形就是多边形任意两个顶点的连线在多边形内,那么凹多边形就是至少能找出一条线在多边形外。
一些基础概念
顶点、向量、向量叉乘、
一般来说,多边形是由首尾相连的顶点组成的。这里的顶点就是几何中的点。向量,在2D以及3D几何中,点和向量可以用一个类或者结构体来表示,但是点和向量在数学上存在着本质的区别。点是有位置的,但是没有方向。而向量是没有位置,但是有方向,主要就是表达几何中的位移。
在多边形凹凸性判断中,要用到矢量叉乘,也就是向量叉乘。向量叉乘在图形系统中有着非常重要的应用,包括CAD、地理信息系统等。
几种常见的凸多边形判断方法:
1)角度法:
判断每个顶点所对应的内角是否小于180度,如果小于180度,则是凸的,如果大于180度,则是凹多边形。
2)凸包法:
这种方法首先计算这个多边形的凸包,关于凸包的定义在此不再赘述,首先可以肯定的是凸包肯定是一个凸多边形。如果计算出来的凸多边形和原始多边形的点数一样多,那就说明此多边形时凸多边形,否则就是凹多边形。
3)顶点凹凸性法
利用以当前顶点为中心的矢量叉乘或者计算三角形的有符号面积判断多边形的方向以及当前顶点的凹凸性。
假设当前连续的三个顶点分别是P1,P2,P3。计算向量P1P2,P2P3的叉乘,也可以计算三角形P1P2P3的面积,得到的结果如果大于0,则表示P3点在线段P1和P2的左侧,多边形的顶点是逆时针序列。然后依次计算下一个前后所组成向量的叉乘,如果在计算时,出现负值,则此多边形时凹多边形,如果所有顶点计算完毕,其结果都是大于0,则多边形时凸多边形。
4)辛普森面积法
利用待判别的顶点以及前后两个顶点所组成的三角形,利用辛普森公式计算其面积,如果此三角形面积与整个多边形面积符号相同,那么这个顶点是凸的;如果此三角形面积与整个多边形面积符号不同,那么这个顶点是凹的,即整个多边形也是凹多边形。
结论:以上只是几种最基本的判定方法,当然还有更优秀的算法,由于个人能力就到此为止了。
- 常见凸多边形判断方法
- 判断是否为凸多边形
- HDOJ2108 判断凸多边形
- hdu 2108-判断凸多边形201308121122
- 判断凸多边形并排序算法
- 凸多边形
- 凸多边形的判断(c++)
- hdu2108判断多边形是否为凸多边形
- Shapeof HDU 判断是否为凸多边形
- Finding Mine判断点在凸多边形内
- 凸多边形和凹多边形的判断
- poj1912(*判断直线是否穿过凸多边形)
- poj 1584 A Round Peg in a Ground Hole(判断凸多边形+圆是否在凸多边形内)
- POJ 1584(判断凸包+点和凸多边形关系+圆和凸多边形关系)
- (精)hdoj2108(计算几何)(判断凸多边形)
- sgu Theodore Roosevelt【判断点是否在凸多边形内模板】
- hdu 题目2018 Shape of HDU(判断凸多边形)
- HDU--2108 -- Shape of HDU [向量判断凸多边形]
- POJ 1077 HDU 1043 Eight (IDA*)
- hdu - 1757 - A Simple Math Problem(矩阵快速幂)
- xp+ubuntu8.10双系统启动顺序修改
- 最小角回归(Least Angle Regression)
- Python之lxml
- 常见凸多边形判断方法
- Java的四种引用
- 吐槽-android4高级编程(第三版)(中文版)之getQuantityString
- POJ 3260 The Fewest Coins
- Nand ECC校验和纠错详解
- 设置铃声
- ubuntu13.04下安装jdk7
- Android 实现图片的圆角,倒影,转换
- poj——1159(dp之最长公共子序列)