您的位置:首页 > 理论基础

计算机图形学(二)输出图元_10_多边形填充区_1_多边形分类和识别

2016-05-07 17:25 387 查看
多边形填充区
         一个多边形(polygon)在数学上定义为由三个或者更多称为顶点的坐标位置描述的平面图形,这些顶点由称为多边性的边(edge或者side)顺序连接。进一步来看,几何上要求多边形的边除了端点之外没有其他公共点。因此,根据定义,一个多边形在其单一平面上必须有其所有的顶点且边之间无交叉。多边形的例子有三角形、矩形、八边形和十六边形等。有时,任一有封闭折线边界的平面图形暗指一个多边形,而若其没有交叉边则称为标准多边形((
standard polygon)
简单多边形( simple polygon )。为了避免对象引用的混淆,我们把术语“多边形”限定为那些有封闭折线边界且无交叉边的平面图形。
       在计算机图形学的应用中,用于指定多边形的一组顶点并不严格地在一个平面上。这可能由数值计算的舍入误差、对坐标位置的选择错误或更一般地由于使用一组多边形面片逼近曲面而引起。纠正该间题的一种方法是简单地将指定曲面网分割成三角形。但有时必须保留网络面片的原始形状,以便开发用平面图形逼近非平面多边形的方法。我们将在平面方程的有关内容中讨论如何计算这些逼近平面。
10.1多边形分类
       多边形的一个内角形的所有内角(infterior angle)是由两条相邻边形成的多边形边界之内的角。如果一个多边形的所有内角均小于180度,则该多边形为凸(convex)多边形。凸多边形的一个等价定义是它的内部完全在它的任一边及其延长线的一侧。同样,如果任意两点位于凸多边形的内部,其连线也位于内部。不是凸多边形的多边形称为凹(concave)多边形。图3.42给出了凸多边形和凹多边形的例子。



       术语退化多边形(degenerate polygon)常用来描述共线或重叠坐标位置的顶点集。共线顶点生成一线段。重叠顶点位置可以生成有多余线段、重叠边或长度为0的边的多边形。有时术语退化多边形也用于少于三个坐标位置的顶点队列。为了软件的鲁棒性,图形软件包可以拒绝退化或非平面的顶点集。但这要求额外的识别该问题的处理,因此图形系统常把这种考虑留给程序员。
       凹多边形也会有相关的一些问题。对凹多边形的填充算法和其他子程序的实现比较复杂,因此在处理前常将凹多边形分割成一组凸多边形以便提高效率。和其他的多边形预处理算法一样,凹多边形的分割一般也不包括在图形函数库中。OpenGL等图形软件包要求所有的填充多边形为凸多边形。有些系统仅接受三角形填充区,这将大大简化许多显示函数。

10.2识别凹多边形

        凹多边形中至少有一个内角大于180度。凹多边形某些边的延长线会与其他边相交且有时一对内点连线会与多边形边界相交。因此,我们可以将凹多边形的这些特征中的任意一个作为基础设计别算法。如果为每一边建立一个向量,则可使用相邻边的叉积来测试凸凹性。凸多边形的所有向量叉积均同号。因此,如果某些叉积取正值而另一些为负值,可确定其为凹多边形。图3.43给出了识别凹多边形的边向量、叉积方法。
       识别凹多边形的另一个方法是观察多边形顶点位置与每条边延长线的关系。如果有些顶点在某一边延长线的一侧而其他一些顶点在另一侧,则该多边形为凹多边形。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息