我知道Greiner-Hormann和Vatti的两种常用算法.他们使用多边形.我想在贝塞尔路径上实现布尔运算.我想扩展这些算法以使用bezier路径.但这是数字问题. bezier路径剪切的最佳方法是什么? (以及对任意多边形(具有自交叉)的Greiner-Hormann算法的最佳修改是什么) 最佳答案 这是一个建议的算法.
>使用四个控制点来确定包围贝塞尔曲线的多边形.
>测试多边形重叠以查看两条贝塞尔曲线是否可能具有交点.如果不重叠,我们就完成了,不需要裁剪.
>如果多边形重叠,则使用一个casteljau迭代将两个贝塞尔曲线分成两部分.如果贝塞尔曲线的大小对于所需的精度而言太小,则停止递归.否则用步骤2递归恢复.
在划分贝塞尔曲线的过程中,记录您的位置(值t),以便您可以轻松确定剪切贝塞尔曲线的4个控制点.
注意,在某些点处,贝塞尔曲线可以近似为直线.在这种情况下,重叠测试和分裂将更快.
通过这个过程,您应该以剪切贝塞尔曲线切成一条贝塞尔曲线.您仍然需要确定哪个部分位于裁剪的哪一侧.