一种绘制等距曲线的方法

时间:2011-04-07 08:55:25

标签: algorithm language-agnostic computational-geometry spline

我在mathoverflow上发布了this question,但我也想了解您对此的看法。我想要做的是绘制一条曲线,该曲线始终与给定曲线的法线相距一定距离。我知道给定曲线的公式(分段三次样条)。问题似乎是当偏差距离大于曲线半径时 - 这些点会被扰乱。有谁遇到过这样的问题。有一个很好的解决方案吗?

感谢任何想法,

尤利安

以后:这个问题在下面由巫师先生完美描述。

2 个答案:

答案 0 :(得分:7)

我认为你的定义会遇到麻烦:“......绘制一条曲线,该曲线始终与给定曲线的法线相距一定距离。”

如果在凹曲线内绘制一系列线条,在某些点上线条会自行折回,最终会产生几何反转。

应用于椭圆,例如:

enter image description here

答案 1 :(得分:3)

编辑:注意:这个答案不是关于避免转角(这是严格的等距曲线的一个特征)。

根据Wikipedia

  

在给定Bézier曲线的固定偏移处的曲线,通常称为偏移曲线(与原始曲线“平行”,如铁路轨道中的轨道之间的偏移),不能由Bézier曲线精确地形成(除了一些琐碎的案例)。但是,有一些启发式方法通常可以为实际目的提供足够的近似值。

因此,您需要使用启发式方法来获得近似值。有一篇名为Comparing offset curve approximation methods的学术论文,包括9种算法的比较。

如果您想跳过研究并获得解决方案,请查看 blog post describing an implementation of De Casteljau's algorithm 编辑:我不得不承认,我不确定这种实现如何在急转弯时表现出来。