【问题标题】:Finding intersection points of line paths查找线路径的交点
【发布时间】:2013-02-15 17:44:37
【问题描述】:

我有两条共享一个端点的贝塞尔曲线。这些曲线中的每一个在左右两侧都有一个“延伸”,类似于道路的边缘。扩展由近似贝塞尔曲线的线段组成。

我想找到这些路径与贝塞尔曲线的共享端点最近的交点。

Here is a diagram I've drawn of the problem

每条线路径都有超过 100 个顶点,因此与每条线相交并保持最近的交点可能会变得非常慢,因为这必须实时运行。

在检查相交点之前,我已经对线条进行了边界球相交测试以加快速度,但它仍然不够快。我的下一个方法是使用某种四叉树结构。

我查看了Bentley-Ottmann algorithm,但它似乎可以处理在一组线中查找所有交叉点,这不是我需要的。我还查看了 Bezier 曲线相交算法,但它们似乎需要细分为线段,而我已经有了。

对于这个问题是否有任何有用的算法,或者关于如何优化它的任何想法?

【问题讨论】:

标签: algorithm geometry intersection bezier line-segment


【解决方案1】:

给定两条曲线 A 和 B,其延伸宽度为 Aw 和 Bw。找到点 A',它是从共享节点 N 沿 A 的距离 Bw。找到点 B',它也是从共享节点 N 沿 B 的距离 Aw。现在,给定点 N、A' 和 B',找到与其他三个节点形成平行四边形的第四个点 N'。这个点N'就是交点。

【讨论】:

  • 你能用数学演示来支持你的想法吗?如果 A 和 B 是不同半径的弧,这是真的,但由于它们是贝塞尔曲线,我认为平行四边形不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-17
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多