多边形裁剪:仅"可视"区域

tur*_*1ng 6 algorithm math clipping polygon computational-geometry

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

Polygon总是很简单.

编辑:圆圈只是一个例子.应该可以使用每个简单的多边形

图片#1

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

图片#2

Sim*_*one 3

这是基本思想。

我假设一个更一般的问题,但是将其适应您的问题会更容易:给定一个plan包含所有形状、一个点和一组几何形状的模型,我们希望从平面图中删除该区域从那时起不可见。

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

现在我们将从plan形状中删除,并删除quadrilateral由点形成的:starting_polarending_polar以及两条直线(x, starting_polar)(x, ending_polar)的边界之间的交点plan

就您而言,计划将只是triangle.