【问题标题】:What is the best algorithm for bezier path clipping贝塞尔路径裁剪的最佳算法是什么
【发布时间】:2015-02-18 16:09:26
【问题描述】:

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

【问题讨论】:

  • 我知道 Andy Finnell 的文章。但是这种方式不好
  • 贝塞尔曲线的度数? 2 还是 3?您对哪种剪辑感兴趣?垂直和水平?在曲线上的特定点?
  • 我正在研究三次贝塞尔曲线。通过任意贝塞尔路径剪切
  • 您想将一个贝塞尔曲线与另一个贝塞尔曲线进行对比吗?对我来说,这听起来像是一个非常棘手的数学问题。
  • 我想用另一个贝塞尔曲线序列剪辑贝塞尔曲线序列

标签: algorithm math computational-geometry


【解决方案1】:

这是一个建议的算法。

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

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

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

在分割贝塞尔曲线的过程中,跟踪自己所处的位置(值t),这样就可以轻松确定剪裁后的贝塞尔曲线的4个控制点。

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

在此过程中,您应该以通过剪切贝塞尔曲线切割成碎片的贝塞尔曲线结束。您仍然需要确定哪一块位于剪裁的哪一侧。

【讨论】:

  • 我不明白你的回答。我想在贝塞尔路径上实现布尔运算。你给我寻找贝塞尔曲线交点的算法
  • 我想从 Vatti 和 Greiner-Hormann 的多边形裁剪问题中实现想法
  • 您能澄清一下“布尔运算”吗?与剪裁有什么关系?
  • 这个词取自上述文章。
  • 多边形裁剪问题
猜你喜欢
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多