【发布时间】:2015-11-05 23:07:01
【问题描述】:
我正在使用 Lua 开发一款 2D 游戏。 我有一条由许多点组成的路径,例如,点 A 到 L:
我想沿着这条路径平稳地移动一个对象。为了实现这一点,我想根据这些点创建二次或三次贝塞尔曲线,并对这些曲线进行插值。但是,我如何正确拟合曲线,这样路径就不会被破坏,例如。一条曲线在 F 点停止,另一条曲线开始?
【问题讨论】:
-
我认为大多数解决方案都会假设所有点的曲线都是平滑的,而不是像 F 点那样尝试检测中断。您可能需要在带外执行此操作,但这会呈现出自己的情况问题 - 您使用什么标准来确定休息时间?
-
感谢您的回复。我不知道,我认为这是问题的根源。本质上,路径需要像点 F 弯曲的拐角。我是否需要找到一些旋转值来表明这一点?
-
不,你没有。您想通过点制作一条平滑曲线,并且您可能希望最终使用 Beziers 进行渲染,但您最不想要的是 actual Bezier 曲线,它不通过点。您想要 Catmull-Rom 曲线,它与 Bezier 曲线相关,但 确实 会经过指定点。此外,您能否(在您的帖子中)描述“顺利”的含义?例如,如果您正在考虑固定速度,贝塞尔曲线会使这变得非常困难。最后:你能否展示一下你认为应该连接这些点的路径?因为这决定了合适的曲线拟合。
-
见Interpolation polynomial和Proper implementation of cubic spline interpolation ...使用插值它通过点...如果需要贝塞尔曲线然后将控制点转换为贝塞尔曲线,链接中没有拟合所需的方程
标签: algorithm lua interpolation curve-fitting bezier