2

我最近几天搜索并研究了互联网,以找到适合我的问题的方法。

问题:

在没有方向的无限线上剪辑一个凹多边形(实际上是一个多边形在 3d 平面上,但我认为问题是相似的)。目前我使用 Sutherland-Hodgman,但生成的多边形有时包含从退化边缘创建的零面积部分,它也不支持包含孔的多边形。

我发现可以解决我的问题的最佳算法是 Weiler-Atherton 算法,但它用于裁剪具有顺时针边缘的多边形,而我所拥有的只是一条无限线(在 3d 平面中)缺少方向信息。

问题:

是否有一种算法可以裁剪一个适合我需要的凹多边形,或者有人对如何修改 Weiler-Atherton 算法以适用于这种情况有任何建议吗?有些网页表明它可以推广以支持更多案例,但我无法弄清楚。

//问候艾肯

4

2 回答 2

3

在 Graphic Gems V 中找到了一个合适的算法来解决我的问题。如果有人有同样的问题,这是参考:

Glassner, A., ''Clipping a Concave Polygon'', in Graphics Gems V, A. Paeth, ed., Academic Press, Cambridge, 1995

于 2010-10-09T16:19:49.300 回答
1

您可以使用多边形剪裁器* 通过将线条转换为剪裁多边形来解决此问题。假设您没有在接近水平的平面上进行裁剪,只需确保裁剪多边形的关键(裁剪)边缘略大于主题多边形的垂直尺寸(即边缘在主题多边形的上方和下方延伸)。如果在接近水平的平面上剪裁,请确保关键边缘比主体稍宽。

*例如 Clipper - http://sourceforge.net/projects/polyclipping/

披露:我是 Clipper 的作者,因此可能存在个人偏见。

于 2010-10-07T19:15:59.463 回答