给定一个有序的点列表,我想绘制一条穿过所有点的平滑曲线。曲线的每个部分可以是水平的、垂直的或具有给定半径 r 的弧(所有弧将具有相同的半径)。过渡应该是平滑的,即一个部分结尾的标题应该与下一部分开头的标题相同。任意两个连续输入点之间可以有任意数量的圆弧或直线段。
它有点像火车轨道,应该正交或沿着具有固定曲率的部分运行。
有没有好的算法来构造这样的曲线?(或者,在不可能有这样一条线的情况下,我想知道这一点。)
我研究了贝塞尔曲线,但这似乎有点过头了,我找不到一个很好的方法来执行我的约束。
给定一个有序的点列表,我想绘制一条穿过所有点的平滑曲线。曲线的每个部分可以是水平的、垂直的或具有给定半径 r 的弧(所有弧将具有相同的半径)。过渡应该是平滑的,即一个部分结尾的标题应该与下一部分开头的标题相同。任意两个连续输入点之间可以有任意数量的圆弧或直线段。
它有点像火车轨道,应该正交或沿着具有固定曲率的部分运行。
有没有好的算法来构造这样的曲线?(或者,在不可能有这样一条线的情况下,我想知道这一点。)
我研究了贝塞尔曲线,但这似乎有点过头了,我找不到一个很好的方法来执行我的约束。
您在上面要求的内容对我来说意味着您寻求曲线跨点的切线连续性(类似于在结处具有切线连续性的样条曲线)。火车轨道类比至少传达了这一要求。鉴于直线和固定半径圆弧的严格限制,我相当肯定您将无法做到这一点。如果您需要这种平滑度,为什么不考虑对点进行样条插值呢?要了解为什么考虑下图:

考虑用圆弧替换 B 和 C 之间的线段。您可以这样做以使连接连续,但要使其切线连续,您需要很大的运气,因为只有一个圆与线段 AB 相切连续,并且也接触点 C。在 C 处的切线与 CD 线的切线相匹配的圆是远程的。您的数据可能会像这样排列,但您不能依赖它。
如果我误解了您的问题,请告诉我,我会调整答案。