2013-09-08 2 views
1

디지털 세계에서 실제 충돌이 거의 발생하지 않기 때문에 "충돌"볼이 겹치는 상황이 항상 발생합니다.충돌 대응에서 서클 겹침을 수정하는 방법은 무엇입니까?

공이 겹치지 않고 완벽하게 충돌하는 상황에서 볼을 다시 넣는 방법은 무엇입니까?

이 문제는 a posteriori 접근 방식으로 해결할 수 있습니다 (2 차원).

  • t 질문에 대한 답의 숫자입니다 :

    ((x2 - t * v.x2) - (x1 - t * v.x1))^2 + ((y2 - t * v.y2) - (y1 - t * v.y1))^2 = (r1 + r2)^2

    : 한마디로

    나는 t이 방정식을 해결하기 위해 얼마나 많은 프레임 전에 했다 충돌은 완벽하게 일어날까요?

  • (x1, y1)는 제 공
  • (x2, y2)의 중심
  • (v.x1, v.y1)(v.x2, v.y2) 및 그들의 속도 인 제 볼의 중심이다.

그러나 the solution은 WolframAlpha에서 너무 복잡합니다 (속도의 이름을 변경했지만 본질적으로 아무것도 변경하지 않음).

+0

정확하게 이해한다면 원에 공통점이 하나있는 위치를 찾고 싶습니까? 서클의 중심을 연결하는 선을 찾은 다음 서클 중 하나를 이동하여 중심점 사이의 거리가 반경의 합과 같도록하십시오. –

+0

네가 올바르게 이해하고 있지만, 센터를 연결하는 선의 방향이 속도의 방향과 다르므로 솔루션 (내가 이미 알고 있고 지금 사용하고있는 솔루션)이 잘못되었습니다 (특히 공이 매우 교차하는 경우). 다른 공). – VanDir

답변

3

단순한 다항식이 아니라 전체 솔루션이기 때문에 복잡해 보입니다. 모든 것을 곱하고 상수, t 및 t^2 항을 모으면^2 + bt + c = 0이됩니다. 거기에서 이차 방정식을 사용할 수 있습니다.

또한 단순하게 유지하려면 벡터 수학으로 처리하십시오. x와 y 좌표를 분리 할 이유가 없습니다. 벡터 추가 및 점 제품 만 있으면됩니다.

마지막으로 중요한 것은 상대 위치와 상대 속도입니다. 하나의 원이 원점에 있고 고정되어있는 것으로 가정하고 그 차이를 다른 공에 적용합니다. 그 대답을 변경하지 않지만, 당신이 논쟁하는 변수의 수를 줄일 수 있습니다.

+0

벡터 수학을 사용하여 어떻게 설명 할 수 있습니까? – VanDir

+0

물론 첫 번째 공의 위치는 X1이고 두 번째 공의 위치는 X2이며 속도는 V1과 V2입니다. (그것들은 모두 2D 변수입니다). X = X2-X1 및 V = V2-V1을 취한다. 그러면 (X + tV) 점 (X + tV) = r^2이됩니다. – Sneftel

+0

고맙습니다 솔루션을 사용해 보겠습니다. r은 반지름의 합입니까? – VanDir

관련 문제