我目前正在尝试模拟不受物理影响的物体的弹道学。准确地说,我有一个类似火箭的射弹,它沿着一条抛物线弧从原点到目标,并带有 Lerp。为了使它更逼真,我希望它不要以恒定速度移动,而是在达到高潮时放慢速度,然后在回落的过程中加快速度。
我使用 Mathf.Smoothstep 函数来做与我在其他对象上需要的完全相反的事情,即缓入和缓出运动。
所以我的问题是:如何获得倒置的 Smoothstep?
我发现我需要的实际上是平滑步 [x * x*(3 - 2*x) ] 的倒置公式,但我不完全是数学天才,我不知道该怎么做。我从在线计算器中得到的只是一些相当庞大的新功能,恐怕效率不高。
所以也许有一个函数接近反向平滑步长,但计算起来并不复杂。
对此的任何帮助将不胜感激
提前致谢,
无尾礼服
最佳答案
我有一个类似的问题。对我来说,镜像 y = x 中的曲线有效:
所以一个实现示例是:
float Smooth(float x) {
return x + (x - (x * x * (3.0f - 2.0f * x)));
}
此函数没有钳位,因此如果 x 可以超出 0 到 1 区间,则可能必须添加。
Wolfram Alpha example
关于function - 倒滑步?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28740544/