Ios 计算加速度曲线

Ios 计算加速度曲线,ios,animation,math,logarithm,curves,Ios,Animation,Math,Logarithm,Curves,我需要计算视图从a点移动到B点时的位置。将有一个线性变化的输入值,根据该输入值,我需要计算视图的位置。到最后,输入值和我的视图的移动量将完全相同。视图仅沿一个轴移动 棘手的部分是,我想放松动画的输入和输出,因此在运动的开始和结束时,它的移动速度比输入值慢,而在中间,它需要移动速度比输入值快,以弥补从缓慢的开始和结束时损失的移动距离 所以基本上我要写的公式会有一个速度曲线,看起来像这样 所以我的签名看起来像这样: func smoothedPosition(position: CGFloat, m

我需要计算视图从a点移动到B点时的位置。将有一个线性变化的输入值,根据该输入值,我需要计算视图的位置。到最后,输入值和我的视图的移动量将完全相同。视图仅沿一个轴移动

棘手的部分是,我想放松动画的输入和输出,因此在运动的开始和结束时,它的移动速度比输入值慢,而在中间,它需要移动速度比输入值快,以弥补从缓慢的开始和结束时损失的移动距离

所以基本上我要写的公式会有一个速度曲线,看起来像这样

所以我的签名看起来像这样:

func smoothedPosition(position: CGFloat, minPosition: CGFloat, maxPosition: CGFloat) -> CGFloat {
随着时间的推移,结果需要平衡,所以应该是

在哪里 平滑位置(位置:100,最小位置:100,最大位置:200) 期望100

在哪里 平滑位置(位置:101,最小位置:100,最大位置:200)) 期望在100到101之间

在哪里 平滑位置(位置:150,最小位置:100,最大位置:200)) 期望150

其中平滑位置(位置:199,最小位置:100,最大位置:200)) 期望在199到200之间

在哪里 平滑位置(位置:200,最小位置:100,最大位置:200)) 预计200


我确信有某种方程式可以精确地做到这一点,但数学从来都不是我的强项。有人能给我指出正确的方向吗。

你可能想做的是从距离向内到距离向外使用负余弦函数。缩放输入距离,使其从0到180度。然后函数将类似于(C++)


此函数返回一个从0到1的数字。这是相对于输出距离的倍数的比例因子。

这是加速度图还是速度图?想想看,这是速度。如果从速度的角度考虑,你可能会有点困惑。速度是距离的时间导数,虽然可以写一个这样的函数,比如速度项,但如果我正确理解这个问题的话,你真正需要的是一个距离函数。
double f(double inDist)
{
    return 1 - cos(inDist) / 2;
}