贝塞尔路径裁剪的最佳算法是什么

时间:2015-02-18 16:09:27

标签: algorithm math computational-geometry

我知道Greiner-Hormann和Vatti的两种常用算法。他们使用多边形。我想在贝塞尔路径上实现布尔运算。我想扩展这些算法以使用bezier路径。但这是数字问题。 bezier路径剪切的最佳方法是什么? (以及对任意多边形(具有自交叉)的Greiner-Hormann算法的最佳修改是什么)

1 个答案:

答案 0 :(得分:2)

这是一个建议的算法。

  1. 使用四个控制点来确定包围贝塞尔曲线的多边形。

  2. 测试多边形重叠以查看两条贝塞尔曲线是否可能有交点。如果不重叠,我们就完成了,不需要裁剪。

  3. 如果多边形重叠,则使用一次casteljau迭代将两个贝塞尔曲线分成两部分。如果贝塞尔曲线的大小对于所需的精度而言太小,则停止递归。否则以步骤2递归恢复。

  4. 在划分贝塞尔曲线的过程中,记录您的位置(值t),以便您可以轻松确定剪切贝塞尔曲线的4个控制点。

    请注意,在某些点上,贝塞尔曲线可能近似为直线。在这种情况下,重叠测试和分割将更快。

    通过这个过程,您应该以剪切贝塞尔曲线切成一条贝塞尔曲线。您仍然需要确定哪个部分位于裁剪的哪一侧。