凹多边形
凹多边形(Concave Polygon)指如果把一个多边形的所有边中,有一条边向两方无限延长成为一直线时,其他各边不都在此直线的同旁,那么这个多边形就叫做凹多边形,其内角中至少有一个优角。
基本信息
- 中文名
凹多边形
- 外文名
Concave Polygon
- 定义
内角中至少有一个优角的多边形
- 属于
几何图形
- 分类
数学
- 性质
至少一个优角
定义
凹多边形(Concave Polygon)可以有以下三种定义方式:
至少有一个优角(Reflexive Angle)的多边形。(例如上图中,∠CDE>180°)1
把一个各边不自交的多边形任意一边向两方无限延长成为一直线,如果多边形的所有边中只要有一条边向两方无限延长成为一直线时,其他各边不在此直线的同旁(如上图左),那么这个多边形就叫做凹多边形。2
凹多边形的是一个内部为非凸集的简单多边形.简单多边形的下列性质与其凸性等价:1、一个内角大于180度。2、存在两个顶点间的线段位于多边形的外部。3、多边形内存在两个点,其连线不全部在多边形内部。3
示例
五角星、四角星、八角星、六角形等都是凹多边形:例如,正六角星中,有一个240°的角。2
性质
平面上,不可能存在凹三角形。2
凹多边形的内角和的解,应该通过(n-2)180°来计算。实际上是把大于平角的角划分为两个角,使得任意一个凹N多边形,都可分画为N-2个三角形,因此凹多边形的内角和,也适用(N-2)180°这个公式。不可以沿着一条边的延长线切割凹多边形。3
平面上,凹多边形与边数相同的凸多边形的内角和相等。1
判断
对于平面多边形的三角化处理也是计算机图形学里面的一个领域,最近由于项目的需要,需要对平面多边形进行剖分,特此对其作了些研究。
在对平面多边形进行处理的时候,很多时候需要知道多边形的凹凸性,本文介绍两种方法来进行平面多边形凹凸性的判定,文章后面会给出示例代码。
1、使用角度和判断凹凸性
我们知道,任意n个顶点的凸多边形可以分解成(n-2)个三角形,一个三角形的内角和是180°,所有三角形的内角和是(n-2)*180°,这一点,对于凸多边形或者凹多边形来说都是一样的,但是对于一个凸多边形来说,不存在内角大于外角,而凹多边形则会存在。
因此,将多边形每个顶点处较小的角(内角或外角)相加,凸多边形得到(n-2)*180°,而凹多边形则小于它。至于如何判断小角,我们可以使用几何工具---向量点乘。我们知道,向
量点乘可以用来等价求两个向量的夹角,它的值(即角)总是以较短的弧度来度量的。
以下是代码的示例:
bool IsHollow(std::vector<Position3> curveloopPoints)const
{