2012-07-25 4 views
3

저는 중력을 주요 메카닉으로 가지고있는 파이썬으로 2D 게임을 작성하고 있습니다.뉴턴의 중력 시뮬레이션

나는 게임 엔진을 만들었지 만, 내가 붙어있는 부분은 실제로 각 매스의 X와 Y 속도에 무엇을 더할 것인지 결정하는 것입니다.

그래서 나는 각각 위치, 속도 및 질량을 가진 원 A와 원 B가 있다고 가정 해보십시오. 각각은 상당히 사실적으로 다른 뉴턴의 중력을 모의 실험해야합니다. 나는 이것을 어떻게 얻을 수 있을까?

예, 측정 단위가 매우 모호합니다. 나중에 수식에 맞게 변수를 변경하여 실험 할 수 있습니다.

답변

3

각 신체의 운동 방정식을 풀어야합니다. 그것들은 1 차 결합, 1 차 미분 방정식의 집합으로 쓰여질 것입니다. 여러분은 각각의 질량으로 나뉘어 진 두 몸체 사이의 중력의 함수로서 가속도를 줄 수있는 x와 y 방향에 대해 각각 하나의 방정식을 쓸 것입니다.

가속도, 속도 및 변위 간의 관계를 알고 있습니다.

해결할 수있는 4 개의 결합 된 상미 분 방정식이 있습니다. 시간 단계 솔루션을 사용하여 시간에 따라 명시 적 또는 묵시적으로 솔루션을 발전시킵니다.

+1

이 글에 대한 의견으로,'scipy'는 ODE 통합자를 제공합니다 : http://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.odeint.html#scipy.integrate.odeint. 가장 좋은 방법은 아니지만 사전에 계산 물리학을 수행하지 않은 경우 커다란 보너스 인 통합자를 직접 작성하지 않아도됩니다. – mgilson

1

게임에서 양자화 된 시간 단위가 있다고 가정하면 시계의 "진드기"를 가정하면 각 몸체에 속도 벡터 (얼마나 많은 방향으로 어느 방향으로 움직이는 지 " 진드기 ")와 각 진드기마다 서로의 몸이 거리에 따라 어느 정도의 속도 벡터를 변화하게합니다 (힘을 가하고 질량으로 나눕니다). 그러면 시계가 틱 할 때마다 시체가 속도 벡터에 따라 움직이며 속도 벡터가 그물에 가해진 힘에 따라 바뀝니다. 당신이 진드기가 충분히 작다는 것을 조건으로, 어느 쪽이 먼저 일어나는가를 결정하는 한 - 가속이나 움직임 - 괜찮을 것입니다.