Answers:
听起来好像您想在整个曲线上将物体的速度保持在某个恒定值上-知道弧长并不能帮助您做到这一点。它可以帮助您计算如果物体以该速度运动到什么时候会到达终点,因此它会比您现在拥有的更好(物体在所有点之间具有相同的平均速度),但是当物体绕弯道移动时,其实际速度仍会变化。
一个更好的解决办法是改变我们的参数参数(即从0到1,我会打电话的参数s
与避免混淆t = time
)以可变利率ds/dt
,它是由速度,你希望对象在被移动确定什么曲线上的那个点。因此,换句话说,不是将s
每帧更改为0.01 ,而是将一帧更改为0.005,下一帧更改为0.02,依此类推。
为此,我们计算每帧x
(dx/ds
)和y
(dy/ds
)的导数,然后设置
ds / dt =速度/ sqrt((dx / ds)2 +(dy / ds)2)
也就是说,如果我们s
以固定的增量进行更改,则采用我们想要的速度,然后除以我们实际要运行的速度。
我们希望物体的速度保持恒定;让我们给该常量命名speed
。
我们学习第二年的演算,对于参数方程x(s)
和y(s)
,
速度= sqrt((dx / dt)2 +(dy / dt)2)
我们也了解到
dx / dt = dx / ds * ds / dt (链式规则)
从而,
速度= sqrt((dx / ds)2(ds / dt)2 +(dy / ds)2(ds / dt)2)
求解ds/dt
,我们得到了方程式。
我从未使用过这些特殊的样条曲线,但我知道它们只是给出x(s)
和y(s)
的三次方程式s
。因此,我们可以dx/ds
轻松找到导数:
x(s)= a * s 3 + b * s 2 + c * s + e
然后
dx / ds = 3a * s 2 + 2b * s + c
(同为dy/ds
)当然,你需要知道的确切值a
,b
以及c
做到这一点。根据此页面,这些值很容易找到。
最后,要回答标题中的问题:找到参数函数的弧长方程需要求解相当复杂的定积分;即使对于简单的三次方程式,通常也无法做到。
因此,您必须用数字估算积分。 您建议“将样条线切成10条直线并加总其长度”是一种非常简单的方法;但是,有些复杂的方法可以使用更少的行段为您提供更准确的结果。