我正试图找到/创建一种算法,用于计算两个任意填充的2D对象之间的交集(一个新的填充物体)。这些对象是使用线条或立方贝塞尔曲线定义的,可能具有空洞或自相交。我知道有几种现有的算法可以使用多边形完成相同的工作,在此列出。然而,我希望支持贝塞尔曲线,而不需要将它们细分为多边形,并且输出结果应该在没有相交的区域中具有大致相同的控制点。
这是为了一个交互式程序进行一些CSG,但剪辑并不需要实时完成。我已经搜索了一段时间,但没有找到好的起点。
我认为以下出版物是有关Bezier Clipping最好的信息:
T. W. Sederberg, BYU, 计算机辅助几何设计课程笔记
第7章讨论了曲线交点,可在线上获得。它概述了4种不同的查找交点方法,并详细描述了Bezier Clipping:
https://scholarsarchive.byu.edu/cgi/viewcontent.cgi?article=1000&context=facpub
有许多关于贝塞尔曲线剪裁的学术研究论文:
http://www.andrew.cmu.edu/user/sowen/abstracts/Se306.html
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.61.6669
http://www.dm.unibo.it/~casciola/html/research_rr.html
我推荐使用区间方法,因为正如您所描述的那样,您不必将其分解成多边形,并且您可以获得保证的结果以及定义结果集的任意精度。有关区间渲染的更多信息,您还可以参考http://www.sunfishstudio.com。