什么是简并多边形?


9

什么是简并多边形?如何检查给定的一对多边形是否退化?


2
上下文?我不认为“退化多边形”具有标准定义。
彼得·索尔

如果我有两个凸多边形,将如何退化?他们是否有共同的一面或是否有重叠?还是没有?或两者?
爱丽丝

1
我的猜测是这些是两个相邻顶点相同的多边形。
Yuval Filmus 2013年

Answers:


9

如果多边形的某些顶点相互重叠,则它会退化。例如三角形(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进行渲染的次数与使用额外的退化三角形的开销之间的权衡。n


1
您能否澄清简并是指仅相邻的相等顶点,还是定义包括不相邻的相等顶点?(一个真诚的问题-不仅仅是试图改善答案)
Erik Hermansen

0

退化的多边形是具有零面积的多边形。


如果user742的答案是正确的,那将不是真的。取一个正方形。如果两个且仅两个顶点相同,则它是一个三角形,因而面积为> 0
HankCa

您已经很好地阐明了这一点。三角形不会退化。
加布里埃尔·罗威德

0

正如其他人指出的,这取决于。一般来说,如果多边形没有异常点,则该多边形不会退化,但这只会使问题退后一步。什么是“异常”?

真正的答案是,如果违反规范,则多边形会退化。粗略的回答是,如果多边形是算法无法处理的边缘情况,则该多边形会退化。

这是来自GIS世界的示例。该OGC简单要素规范有什么让一个多边形“有效”一个非常仔细的定义。引用第6.1.11.1节:

多边形的断言(定义有效多边形的规则)如下:

a)多边形在拓扑上是封闭的;

b)多边形的边界由组成其外部和内部边界的一组LinearRing组成;

c)边界交叉处的两个环和多边形边界中的环都不能在一个点处相交,而只能以切线相交,例如 ;

PPolygon,c1,c2P.Boundary,c1c2,p,qPoint,p,qc1,pq,[pc2][δ>0|[|pq|<δ] [qc2]]

注意:这最后一个条件表示在两条曲线共同的点上,附近的点不能共同。这迫使每个共同点成为相切点。

d)多边形可能没有切割线,尖峰或穿孔,例如:;PPolygon,P=P.Interior.Closure

e)每个多边形的内部是一个连接点集;

f)没有连接具有1个或更多孔的多边形的外部。每个孔都定义了外部的连接组件。

在以上声明中,内部,闭合和外部具有标准的拓扑定义。(a)和(c)的组合使多边形成为常规的封闭点集。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.