什么是简并多边形?如何检查给定的一对多边形是否退化?
什么是简并多边形?如何检查给定的一对多边形是否退化?
Answers:
如果多边形的某些顶点相互重叠,则它会退化。例如三角形(0,0),(0,1),(0,0)退化。它具有3个边和3个顶点,但其中两个顶点重复。可以重复多次顶点(例如(0,0),(0,0),(0,0)是另一个退化三角形)。根据定义,检查多边形是否退化是很容易的。
但是退化多边形的用途是什么?图形加速(3D绘图)的一种应用如下:
在3D绘图中,GPU通常使用三角剖分来渲染图像。使用三角形的(简单)原因是因为它们是最简单的2D对象,因此不需要太多硬件。
如果要绘制复杂的3D图像,则受此GPU限制,我们必须将其分解为多个三角形。但是,如果我们调用GPU分别渲染每个三角形,那将会非常慢(由于调用次数)。因此,三角带用于减少对GPU的调用次数。可以在Microsoft文档:三角带中找到关于三角带的很好的解释,您也可以查看以下网站的维基:三角带。
但是,当我们要在一条带中绘制两个单独的对象时,就会出现问题。在这种情况下,退化三角形会有所帮助。GPU可以检测退化的三角形并跳过其绘制。因此,我们可以将两个单独的条带与一个退化三角形相连。
通常,如果我们有不同的组件,例如已经有它们对应的三角带,则可以通过一次调用GPU来全部绘制它们。这会导致额外的内存使用,但这是在调用GPU进行渲染的次数与使用额外的退化三角形的开销之间的权衡。
正如其他人指出的,这取决于。一般来说,如果多边形没有异常点,则该多边形不会退化,但这只会使问题退后一步。什么是“异常”?
真正的答案是,如果违反规范,则多边形会退化。粗略的回答是,如果多边形是算法无法处理的边缘情况,则该多边形会退化。
这是来自GIS世界的示例。该OGC简单要素规范有什么让一个多边形“有效”一个非常仔细的定义。引用第6.1.11.1节:
多边形的断言(定义有效多边形的规则)如下:
a)多边形在拓扑上是封闭的;
b)多边形的边界由组成其外部和内部边界的一组LinearRing组成;
c)边界交叉处的两个环和多边形边界中的环都不能在一个点处相交,而只能以切线相交,例如 ;
注意:这最后一个条件表示在两条曲线共同的点上,附近的点不能共同。这迫使每个共同点成为相切点。
d)多边形可能没有切割线,尖峰或穿孔,例如:;
e)每个多边形的内部是一个连接点集;
f)没有连接具有1个或更多孔的多边形的外部。每个孔都定义了外部的连接组件。
在以上声明中,内部,闭合和外部具有标准的拓扑定义。(a)和(c)的组合使多边形成为常规的封闭点集。