【发布时间】:2012-04-10 20:12:31
【问题描述】:
我需要实现一种方法,用于值之间的非线性插值、缓入、缓出、一般缓动曲线以及用户定义的曲线。
我对如何做到这一点有一个基本的想法 - 但我不确定这是否是最有效的解决方案。我的想法基本上是这样的:
使用二维三次、二次或 n 阶贝塞尔曲线来控制插值。线性遍历曲线得到非线性的 Y 分量,并用它来赋值给一个简单的线性插值方法:
value = v1 + (v2 - v1) * t;
其中 t 是控制曲线的非线性 Y 分量。
这允许自定义、用户定义的插值方法,但这是有代价的,一个非线性插值的成本等于:
1 + 2 * (n-1)
总插值,其中 n 是控制曲线的阶数或控制点数。
我不是数学家,这是我能想到的最好的方法,所以我的问题是是否有更好的解决方案?
编辑:我可能解释不正确,我不是母语人士,所以希望每个人都能理解:
【问题讨论】:
-
一个更好的解决方案,具体来说是什么?一般是插值,还是只是更有效的贝塞尔算法?你的限制是什么?
-
您将如何创建三次或二次曲线来“控制插值”?只是猜测?
-
@DanW - 曲线的变化斜率用作插值的 t,基本上不是从 v1 到 v2 的线性变化,插值的“位置”由控制曲线的Y 分量。
-
贝塞尔曲线是非线性插值的完美示例。如果您希望对象以恒定速度穿过曲线,请参阅this answer。否则,我不明白你的问题是什么。
-
@BlueRaja-DannyPflughoeft - 实际上,您的链接在另一个方面很有帮助,所以感谢您提出它,但这不是这个问题的主题,请参阅我添加的图像,也许它会得到更清晰。谢谢!
标签: algorithm interpolation bezier curve