• 1.摘要
  • 2.基本信息
  • 3.定义
  • 4.示例
  • 5.性质
  • 6.判断
  • 7.参考资料

凹多边形

凹多边形(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

{