уравнение для кривой - PullRequest
0 голосов
/ 05 мая 2011

Кто-нибудь может мне помочь с уравнением для этой кривой?

http://temp.electrobeat.dk/eq.gif

I need to make an equation for an acceleration..
x = time
y = velocity (pixel)

constants:
t = time in ms when to recalculate the equation
m = max speed in pixels (y)
a = acceleration (how fast the curve rises)

EDIT:

Я нашел здесь уравнение, которое работает, но я не могу понять, для чего предназначен каждый параметр?

Tween.regularEaseOut = function(t,b,c,d){
    return -c *(t/=d)*(t-2) + b;
    }

Ответы [ 2 ]

4 голосов
/ 05 мая 2011

Очень похоже на стандартную кривую зарядки конденсатора в стиле 1 / CR от электроники, которая из памяти имеет уравнение:

 (1 - e^(-t/RC))

Коэффициент "RC" (сопротивление * емкость) контролирует, насколько быстронаклон приближается к асимптоте.

См., например, http://jcsu.jesus.cam.ac.uk/~rpc25/notes/physics/capacitors/index.html

Форма кривой определяется тем фактом, что скорость заряда (т.е. первая производная) равнапропорционально разнице между текущим значением и целевым значением.

0 голосов
/ 05 мая 2011

Понял:)

<div id="tst" style="position:absolute; top:200px; left:200px; height:100px; width:100px; background:#ff0000"></div>

<script type="text/javascript">
    function Tween(){
        this.time = 0;
        this.begin = 200;
        this.change = 1000;
        this.duration = 800

        this.regularEaseInOut = function(t,b,c,d){
            if((t/=d/2) < 1){
                return c/2*t*t + b;
            }
            else{
                return -c/2 * ((--t)*(t-2) - 1) + b;
            }
        };
    }
    var Tween = new Tween();

    var int = 10;
    var loop = setInterval(function(){
        Tween.time += int;
        if(Tween.time >= Tween.duration){
            clearInterval(loop);
        }
        else{
            document.getElementById('tst').style.left = Tween.regularEaseInOut(Tween.time, Tween.begin, Tween.change, Tween.duration)+'px';
        }
    }, int);
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...