public static float BackInOut(float from, float to, float time)
{
const float s = 1.70158f * 1.525f;
to -= from;
if ((time /= .5f) < 1f)
// 5 6 3 4 0 1 2 7
return to * .5f * (time * time * ((s + 1f) * time - s)) + from;
// 3 0 1 2
return to * .5f * ((time -= 2) * time * ((s + 1f) * time + s) + 2f) + from;
}
Во втором возврате используется время до (и после) изменения? Да?
// 1 0 2 3
return to * .5f * ((time -= 2) * time * ((s + 1f) * time + s) + 2f) + from;
Или только после, вот так? ИДК
Спасибо.
источник: http://robertpenner.com/easing/
EDIT:
Пытался упростить:
using System;
namespace New_folder
{
class Program
{
static public int s { get; set; } = 2;
static private int _test = 10;
static public int time
{
get
{
Console.WriteLine(_test);
return _test;
}
set { _test = value; }
}
static public void Main(string[] args)
{
var test = (time -= 2) * time * ((s + 1f) * time + s);
}
}
}
Это показывает:
10
8
8
, который показывает, что мое второе предположение верно, и время используется только после модификации, я думаю
Думаю, я просто растерялся.
Он переходит в правую ветвь только для того, чтобы оценить глубочайшее вложение, а затем, когда он возвращается на более высокий уровень, возвращается к букве и ему все равно, где он был.
спасибо