2012-02-21 117 views
2

我想要做以下几点:我在3D空间中有一些面作为多边形。我有一个投影方向和一个投影平面。我在投影平面上有一个凸形剪裁多边形。我想要得到一个多边形,代表飞机上所有面部的阴影。多边形添加算法

我到现在为止所做的工作:我计算面在投影平面中的多边形投影。

我可以使用Sutherland-Hodgman算法来剪切所有单焦投影多边形以剪辑到所需区域。

现在我的问题:如何将投影(可能是剪切)的多边形结合在一起?我必须使用像Margalit/Knott这样的算法吗?

算法应该非常高效,因为它必须经常运行。那么你认为什么算法?

是否可以修改Sutherland-Hodgman算法来解决合并问题?

+0

“脸”?这些是多面体的面孔吗? – Beta 2012-02-21 15:51:36

+0

有没有可能面部是凸多面体的面?如果是这样,那么计算顶点投影的凸包。然后剪辑该多边形。 – btilly 2012-02-21 16:22:19

+0

是的,脸是来自多面体。单个多面体可以被限制为凸出的。但是,所有面孔的整体结合将不会是凸面的。 – 2012-02-21 17:36:23

回答

0

我目前正在使用Bentley-Ottmann实现这个算法(n个凹多边形的联合),以找到所有的边交点,同时跟踪边区段两边的多边形嵌套层次(每边有多少个重叠的多边形线是感人的)。将一边的嵌套层次为0的边输出到结果多边形。完成正确的操作相当棘手。用不同的算法设计现有的解决方案,可以发现:

http://sourceforge.net/projects/polyclipping/