2012-04-06 7 views
2

나는 사용자가 공을 치기 위해 사용할 수있는 패들을 그려 볼 수있게하려고합니다. 그러나 볼의 속도의 x와 y 구성 요소가 벽에 정렬되어 있지 않기 때문에 볼을 바운스 할 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까?임의의 각도로 벽에서 공을 튀게합니까?

가레스리스 (Gareth Rees) here에 의해 제공된 조언을 시도했지만 분명히 따라갈 수있는 벡터에 대해 충분히 알지 못합니다. 예를 들어, 정확히 벡터에 저장하는 것이 무엇인지는 알 수 없습니다. 방향이있는 값이라는 것을 알고 있지만 두 점, 기울기, 각도를 저장합니까?

실제로 필요한 것은 볼의 안타와 같은 벽의 각도와 x 및 y 속도가 부여되어 나중에 새로운 x 및 y 속도를 찾습니다.

답변

6

가레스 리즈 (Gareth Rees)가 정확한 공식을 얻었으나 그림과 설명이 더 정확합니다. here 좀 더 명확합니다. 당신이 벡터 표시에 익숙하지 않은 때문에 여기

Vnew = -2*(V dot N)*N + V 
where 
V = Incoming Velocity Vector 
N = The Normal Vector of the wall 

이 공식에 대해 알아야 할 내용은 다음과 같습니다 : 즉, 기본적인 공식이다 벡터는 기본적으로 그냥 X, Y 쌍, 그래서 V = (v.x, v.y)N = (n.x, n.y). 평면은 평면에 수직 인 단위 길이의 벡터 인 평면에 수직으로 가장 잘 표현됩니다. 다음 몇 가지 수식, b*V = (b*v.x, b*v.y); V dot N = v.x*n.x+v.y*n.y 즉, 스칼라입니다. 및 A + B = (a.x+b.x, a.y+b.y). 마지막으로, 임의 벡터를 기반으로하는 단위 벡터를 찾으려면 N = M/sqrt(M dot M)입니다.

표면이 구부러진 경우 접촉점에서 법선을 사용하십시오.

+0

한 단락의 멋진 벡터 자습서입니다! 당신은 (단위 벡터를 찾는 데 필요한) 나눗셈을 정의하지는 않지만, 동일한 규칙이 제품에 적용된다는 것을 짐작하기 란 어렵지 않습니다 ... 단순히 벡터의 각 성분을 스칼라로 나눕니다. – MattJ

관련 문제