多边形裁剪:仅“可视”区域

时间:2011-09-05 19:56:13

标签: algorithm math polygon computational-geometry clipping

在下图中,您可以看到(1)三角形和圆形。给定该三角形中的专用点X,我想要剪掉从这一点看不到的所有东西。使用如(2)中的简单多边形差异算法去除圆圈没有问题。但是我可以使用什么样的算法来获得像(3)中的多边形?

Polygon总是很简单。

编辑:圆圈只是一个例子。每个简单的多边形都应该是可能的。

Image #1

你可以通过观看游戏“突击队 - 背后敌人”的形象来描绘我的需求:

Image #2

2 个答案:

答案 0 :(得分:3)

这是基本的想法。

我假设一个更普遍的问题,但是将它调整到你的问题会容易得多:给定plan包含所有形状,一个点和一组几何形状,我们想要从计划中删除从那一点看不到的区域。

我们想要做的是,对于每个形状,获得starting_polarending_polar点,即具有属于该形状的最小和最大极角的2个点。

现在我们将从plan形状中移除,我们将移除由quadrilateralstarting_polar形成的ending_polar以及之间的交叉点2条直线(x, starting_polar)(x, ending_polar)以及plan的边界。

在您的情况下,该计划只是triangle

答案 1 :(得分:0)

C平行于D,G平行于A,B平行于F,D是直径。

Polygon