2009-12-07 2 views
1

좋아요. 저는 우주 시뮬레이션과 대부분의 우주 시뮬레이션으로 노력하고 있습니다. 내 총알이 도달 할 때 상대방이 우주선 (3 차원 포지션)이 될 곳을 찾아야합니다. 총알이 움직이는 속도와 상대방의 속도가 나르는 속도를 어떻게 계산합니까?간단한 문제 - 속도 및 충돌

+0

시도해 볼 수도 있습니다. http://mathoverflow.net – kindohm

+0

이미 * a * 질문에 대한 답을했습니다. 그러나 이것을 다시 읽으면서, 당신이 어떤 질문을했는지 확신 할 수 없습니다. 맞았을 때 찍은 각도가 맞는지 알고 싶습니까? 또는 촬영할 각도를 알고 싶습니까? (나는 후자에게 대답했다). –

답변

1

그와 당신 사이의 상대 속도 벡터를 계산하십시오. 만약 당신이 여전히 서있다면 그의 움직임으로 간주 될 수 있습니다. 상대 거리 벡터를 계산합니다. 이제 당신은 그가 이미 D 떨어져 있고, V 단위로 움직이고 있다는 것을 알고 있습니다. 계산할 V '가 있습니다. 길이는 알지만 방향은 아닙니다.

이제이 두 제약 조건, 즉 V와 총알의 V '로 삼각형을 구성하고 있습니다. 로 단순화

Dx+Vx*t = V'x*t

Dy+Vy*t = V'y*t

V'x^2 + V'y^2 = C^2

: 두 가지 차원에서처럼 보일 것

(Dx/t+Vx)^2 + (Dy/t+Vx)^2 = C^2

그리고 당신은 해결하기 위해 차 공식을 사용할 수 있습니다 그. 이 기술을 3 차원으로 유사하게 적용 할 수 있습니다. 이것을 해결할 수있는 다른 방법이 있지만 이것은 벡터 미적분 대신에 단순한 대수학입니다.

+0

누군가가 지적했듯이 IF의 문제가 있습니다. 예를 들어 우주선이 총알보다 빠르면 총알이 도착하지 않을 가능성이 큽니다. 이 경우 quadractic 수식은 복소수를 반환합니다. –

1

에 의해 충돌 감지. 그런 다음 총알이 이동하는 선의 모양과 선의 교차점을 계산합니다 (* pos -> pos + vel * dt *).

0

질문은 "총알이 부딪 칠 때 우주선이 될 곳"이 아니어야합니다. 선형 궤도와 일정 속도를 가정하면 두 벡터의 교차점을 계산합니다. 하나는 발사체 경로를 나타내고 다른 하나는 우주선 경로를 나타냅니다. 그런 다음 원래 위치에서 교차 위치까지의 거리를 각각의 속도로 나누어 각 객체 (선박 및 총알)가 그 지점에 도달하는 시간을 결정할 수 있습니다. 시간이 일치하면 충돌 및 충돌이 발생합니다.

더 정확한 충돌 탐지가 필요하면 간단한 BSP 트리와 같은 것을 사용할 수 있습니다.이 트리는 충돌을 빠르게 판별 할 수있을뿐만 아니라 충돌이 발생한 표면과 정확하게 처리 된 경우 정확한 3D를 제공합니다 충돌의 위치. 그러나 동적 환경에서 이러한 트리를 유지하는 것은 어려울 수 있습니다.