Эквивалент соотношения ускорения / замедления с ключевым кадром

Есть ли формула для преобразования AccelerationRatio или DecelerationRatio в контрольные точки Безье для использования в KeySpline в SplineDoubleKeyFrame ? Например, «Ease Out» может быть DecelerationRatio = 0,5 , но это не похоже на KeySpline = «0,0,0.0 0,5,1.0». или KeySpline = "0,5,0 1,0,5" .

Будет ли задействовано несколько SplineDoubleKeyFrame для достижения DecelerationRatio = 0,5 ? Или это особая формула, которая делает их эквивалентными в одном кадре?

Или это должно быть достигнуто не с помощью SplineDoubleKeyFrame , а вместо этого EasingDoubleKeyFrame (если да, то что такое the EasingFunction / EasingMode / Other Attributes)?

По сути, я пытаюсь достичь можно несколько изменить, добавив Коэффициент ускорения и DecelerationRatio к анимация. Эти атрибуты по существу создать три линейных интерполяции для всего анимация, чтобы изменить стартовая и конечная скорости. За Например, дизайнер использовал бы эти атрибуты, чтобы объект постепенно набрать скорость или внезапно остановиться. К сожалению, Silverlight не реализовать эти два атрибута, но эффект можно продублировать с помощью анимация по ключевым кадрам с линейной интерполяцией.

Думаю, это означает, что можно сделать всего с 3 ключевыми кадрами, но какова формула, я понятия не имею.


РЕШЕНИЕ: Для других которые могут прийти в этом случае, опубликовав решение ECMAScript, созданное Питером Тейлором:


    
        Acceleration or deceleration with Bezier splines
        
    
    
        

Interpolate y from to .

Start time: ; end time: .

Acceleration ratio: ; deceleration ratio: .

 

10
задан Todd Main 25 January 2011 в 18:13
поделиться