我目前正在尝试模拟不受物理影响的物体的弹道学。准确地说,我有一个类似火箭的射弹,它沿着一条抛物线弧从原点到目标,并带有 Lerp。为了使它更逼真,我希望它不要以恒定速度移动,而是在达到高潮时放慢速度,然后在回落的过程中加快速度。

我使用 Mathf.Smoothstep 函数来做与我在其他对象上需要的完全相反的事情,即缓入和缓出运动。

所以我的问题是:如何获得倒置的 Smoothstep?

我发现我需要的实际上是平滑步 [x * x*(3 - 2*x) ] 的倒置公式,但我不完全是数学天才,我不知道该怎么做。我从在线计算器中得到的只是一些相当庞大的新功能,恐怕效率不高。

所以也许有一个函数接近反向平滑步长,但计算起来并不复杂。

对此的任何帮助将不胜感激

提前致谢,

无尾礼服

最佳答案

我有一个类似的问题。对我来说,镜像 y = x 中的曲线有效:

function - 倒滑步?-LMLPHP

所以一个实现示例是:

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/

10-11 20:51