Programming/수학,물리

[물리] 게임에서의 포물선 공식 기초

lhh3520 2015. 3. 26. 13:32


게임을 만들다 보면 포물선의 움직임을
사용해야 할 경우가 생기는데요.

포물선의 움직임은
대략 아래의 이미지 같이 움직입니다.

사진출저 [네이버]

이 부분에서 사용할 포물선의 공식은
공기의 저항은 무시하고

속도와 중력가속도는
각각 고정되어 있다고 가정합니다.


2D 게임에서 사용되는 포물선 공식은
보통 2차원의 x, y 좌표를 구하게 됩니다.
( 물론 3D 라면  x, y, z 3곳의 좌표를 구해야 합니다. )

 사진출저 [네이버]


이 부분들은 피타고라스의 정리나 삼각함수를
기초로 하고 있어서이러한 부분들은
기본개념을 익혀두는게 좋습니다.


* 피타고라스의 정리 *
http://lhh3520.tistory.com/24


* 삼각함수 *
http://lhh3520.tistory.com/25


일단 먼저 x, y 좌표를 구하는 공식을
보자면 아래와 같습니다.


포물선의 움직임을 보면 물체의 움직임은
함수로 나타낼 수 있고
물체가 움직이기 시작한
원점에서 일정시간에 물체가 있는 위치는

아래와 같이 삼각형으로 나타낼 수 있고
x, y 좌표 모두 삼각함수를 사용해서 구하면 됩니다.


사진출저 [네이버]


x 좌표 부터 살펴 보자면..
일단 피타고라스의 정리를 이용해서
위 삼각형의 빗변 (물체의 속도)을 구하면

이렇게 구할 수 있고,
삼각함수를 이용해 x 를 구하면

이기 때문에

로 나타낼 수 있습니다.


그리고 여기에 특정시간을 곱해주면
특정시간에 움직이고 있는 물체의
x 좌표를 구할 수 있습니다.


다음으로 y 좌표를 입니다.
y 좌표 또한 삼각함수를 이용해서 구하면

이기 때문에

로 구할 수 있습니다.


???? 그런데 마지막에 " -gt " 는
어디서 나온 것인가..?

이 부분은 y 좌표가 올라 갈 때
중력가속도에 의해 중력의 영향을 받기 때문에.

특정 시간에서의 중력 값을 빼주는 부분입니다.

그리고 y 좌표도 특정 시간을 곱해주면
특정시간에 움직이고 있는 물체의
y 좌표를 구할 수 있습니다.


위의 공식에 포함된 아래의 식은
자유낙하 공식 입니다.

이렇게 해서 포물선의 움직임을 하는
물체의 x, y 좌표를 구할 수 있습니다. 


그리고 포물선을 그리는 물체가
최고점에 도달하는 시간을 구할 때는

물체가 최고점에 도달 했을 때
속도는 0 이므로

즉,

로 구할 수 있습니다.


또, 추가로 물체가 최고점의 높이에
올라갔을 때의 높이를 구할 때는

이고

로 구할 수 있습니다.