2013-03-17 4 views
1

이 질문은 다소 어리석은 생각이지만 대답을 찾을 수 없습니다.방향에 관계없이 속도가 일정한 물체의 위치를 ​​업데이트하십시오.

고전 게임 탁구를하고 있습니다. 그리고 공이 어떤 각도에서도 같은 속도로 움직이기를 원합니다. 그러나 y = ax + b에있는 a가 높으면 현재 알고리즘 (x를 하나씩 늘리고 y를 계산)에서 각 픽셀 사이에 큰 간격이 있습니다. 어떤 단계를 사용해야합니까?

+0

x, y뿐만 아니라 볼의 속도 값을 저장하기 위해 double/float 유형을 사용하고 그리기 위해 int 캐스트로 사용하고 싶습니다. 그런 다음 Dukeling 예제를 따르십시오. – SGM1

답변

2

그래서 우리는 다음과 같이 있습니다. 초등학교 삼각에서

:
cos θ = x/r

sin θ = y/r 그래서 newX = oldX + r * cos θ

newY = oldY + r * sin θ 당신은 r의 값으로 약 재생할 수 있습니다 (이것은 기본적으로 운동의 속도가 될 것입니다).

θ 공의 방향이됩니다.

2

speed으로 설정합니다. 그런 다음 x+=speed*cos(theta)y+=speed*sin(theta)을 사용할 수 있습니다.

히트시 theta을 변경해야합니다.

newPoint 
    |\ 
    | \ 
y | \ r 
    | θ\ 
    |----- 
    x oldPoint 

당신이 기본적으로 원하는 것은 거리의 단계는 R,하지 X에 관련하는 것입니다 :

관련 문제