线裁剪到任意2D多边形

Buz*_*uzz 7 algorithm graphics geometry numeric

如果我得到一个足够长的线段来穿过给定的多边形,这可能是凹多边形或凸多边形.我是如何找到多边形中包含的所有相交光段的?

替代文字

如果目标区域不是多边形,而是隐式曲线函数或样条曲线,该怎么做呢?

谢谢!

Ang*_*son 5

确实没有一个简单的解决方案可以解决您的问题,尤其是曲线(贝塞尔曲线和样条曲线).除了多边形裁剪的复杂性之外,重建裁剪曲线还有相当大的挑战(假设您希望裁剪结果保留为贝塞尔曲线和样条曲线而不仅仅是'扁平'线近似值).

我最近向我的多边形裁剪库'Clipper'发布了beta更新*,它做了线多边形和线条裁剪(线条也可以是曲线).然而,虽然主库是用Delphi,C++和C#编写的,但新的beta代码到目前为止只在Delphi中可能对你没用.然而,如果你看一下代码,你就会明白为什么我说没有"简单"的解决方案.

  • 编辑2011年7月15日:这个"更新"从未超出此beta版本,现在只是"概念验证".它现在基于我的Clipper库的旧版本,需要进行重大改写才能维护和扩展.(在某些阶段我可能会重新审视它,但我目前正打算进一步改进核心库.)尽管如此,这个"概念验证"Delphi代码可以在这里下载

Clipper演示图像