Name

CG_GreeneApproxConvexPartition — 计算多边形几何图形的近似凸分割

Synopsis

geometry CG_GreeneApproxConvexPartition(geometry geom);

描述

计算多边形几何图形的近似单调凸分割。

[Note]

多边形 P 的一个划分是指一组多边形,这些多边形的内部不相交,并且这些多边形的并集等于原始多边形 P 的内部。CG_ApproxConvexPartition 和 CG_GreeneApproxConvexPartition 函数生成近似最优的凸分割。这两个函数通过首先将多边形分解为更简单的多边形来生成凸分解;CG_ApproxConvexPartition 使用三角剖分,而 CG_GreeneApproxConvexPartition 使用一个单调分割。这两个函数都保证它们生成的凸片段数不会超过最优数量的四倍,但它们在运行时复杂性上有所不同。尽管基于三角剖分的近似算法通常会产生较少的凸片段,但并非总是如此。

可用性:3.5.0 - 需要 SFCGAL >= 1.5.0。

需要 SFCGAL 版本>= 1.5.0

该方法需要SFCGAL后端。

示例

格林近似凸分割(与 CG_YMonotonePartitionCG_ApproxConvexPartitionCG_OptimalConvexPartition 相同的示例)

SELECT ST_AsText(CG_GreeneApproxConvexPartition('POLYGON((156 150,83 181,89 131,148 120,107 61,32 159,0 45,41 86,45 1,177 2,67 24,109 31,170 60,180 110,156 150))'::geometry));

GEOMETRYCOLLECTION(POLYGON((32 159,0 45,41 86,32 159)),POLYGON((45 1,177 2,67 24,45 1)),POLYGON((67 24,109 31,170 60,107 61,67 24)),POLYGON((41 86,45 1,67 24,41 86)),POLYGON((107 61,32 159,41 86,67 24,107 61)),POLYGON((148 120,107 61,170 60,148 120)),POLYGON((148 120,170 60,180 110,156 150,148 120)),POLYGON((156 150,83 181,89 131,148 120,156 150)))