티스토리 뷰

 가장 먼저 단진동이란 어느 한 기준으로 좌우로
대칭되도록 움직이는 모습을또는 힘을 나타냅니다.

단진동의 값을 얻기 위해 물리에 용수철의  F= -kx 공식을 이용하였습니다.


일단 F의 값을 액션스크립트에 맞게 바꾸도록 합시다. F= ma입니다.
여기서 m은 질량을 나타내고 a는 가속도를 나타냅니다.
질량은 어차피 정해지는 상수 값이니까 넘어가고
가속도(a)의 값을 어떻게 액션스크립트 상에서 표현할지 생각해보았습니다.
가장 먼저 a=v/t입니다
속도를 시간으로 나누면 가속도가 나옵니다.
 
속도의 변화량에 따라서 그 가속도의 값이 정해집니다.
한마디로 1초 동안 어떤 물체가 속도가 증가하였다고 하면
 t는 1되고v2-v1=a 라는 뜻이 됩니다.
프레임의 차이를 구할 것이니까 t를 1로 생각해도 됩니다.

그럼 이번에는 속도를 구하는 공식에 대해서 생각해봅시다. v = s/t입니다.
s는거리 t는 시간입니다.  그럼 1초동안 얼 만큼 움직인 물체의 속도는 s2 -s1= v 가 나옵니다.
이제 가속도를 표현할 식이 완성 되었습니다. a = s4 - s3 -(s3 -s2)입니다
각 각 s4-s3= v2 가되고 뒤에 는 v1이 됩니다.
그럼 위 공식을 정리하면 a = s4-2s3+s2 가 됩니다.

-kx=ma공식에 대입해보면 -ks3 = m(s4-2s3+s2) 의 공식이 나옵니다.
 k*s3 라고 한 이유는 s3를 기준점으로 잡았기 때문입니다. 
액션스크립트에 적용하기 위해서는 현재 위치에서 다음 위치의 값을 구해야 합니다.
 현재위치는 s3 이고 다음 위치는 s4입니다.
s4에 맞춰서 식을 정리하면 다음과 같이 됩니다.
s4 = (2m-k)*s3/m - s2 그럼 이제 액션스크립트에 작성하겠습니다.


m = 100; //공의 무게

k = 1;//반발계수(1이라서 단진동)

_root.ball._x = s2 = 100;//현재x좌표, 나중x좌표 100으로 초기화

this.onEnterFrame= function(){//매프레임실행하라

    var s3 = _root.ball._x;// s3 현재좌표

    _root.ball._x = (2*m-k)/m*_root.ball._x - s2;// s4 나중좌표 계산

    s2 = s3;//현재좌표로 움직임 값을 나중좌표인 s2로 반환

}

       

좌우로 잘 움직입니다. ^^

댓글