如何让一个点在随机、随时给出的点之间平滑地运动?

 查看数: 29 | 前天 14:59
提问:黄小厨

马上注册成为元素者,获取海量元素资源,结识各路大神级人物

您需要 登录 才可以下载或查看,没有帐号?注册

x
实际问题是这样的,我们在unity(一款3D游戏开发引擎)中有一个物体,只能在一条直线上往同一个方向运动。现在我这边接收别人给我发的指令,也就是物品下一时刻要去的位置。但是这个位置不定,别人给出信号的时间也未知。
现在我要让这个物体在这些位置之间平滑地运动,也就是速度不能有突变,我应该怎么解决?
————————分割线————————
我们目前的想法是这样,找到一个f'(t)函数作为物品的速度。(相应地,f(t)是物品走过的路程。)
如图所示,在下一个信号来临之前,物品将只能无限逼近现在要去的点。也就是说在t趋近于正无穷的时候,f'(t)趋近于0。
在下一个信号来临之时,我们设此事件为0时刻,开始重新按照f'(t)运动。此时f'(0)应该是一个很小的值,然后按照一个三角函数上升到t1时刻,从t1时刻开始,按照一个概率分布函数比如说正态分布函数延伸到t的正无穷。
这样此函数在t的[0,正无穷)范围内的积分就是两个点之间的距离。
v2-7b986663f4cda396147b7dc1caf4a5e5_b.jpg
但是这样做克服不了这样几个问题:
1、在t的0时刻,f'(t)的左右导数不相等,会导致加速度的突变
2、积分确实是总路程,但是在这个函数上乘以一个系数来改变总路程的做法,会让f'(0)的值突变,也就是速度会突变

使用道具 登录

1个回答,把该问题分享到群,邀请大神一起回答。
如果某函数在某点处无穷可导且导数均为0,此函数称为平函数
平函数的一个例子是 的图像长这样
黄线是它的导数它在[0,1)上变化,而且在 处的任意阶导数都是0,正好可以用在你这个问题上。
具体来说,如果在 时刻,位置函数是,在这一时刻收到新指令 ,那么把位置函数改成 ,就可以保证位置时刻光滑。这里面 用来控制f趋近新位置的时间。用一个公式表示就是







回复 收起回复
B Color Smilies
还可输入 200 个字符
 赞 赞 1

使用道具 登录

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表