스페이스 그래비티 2편에서, "지금의 시뮬레이터의 물리 계산은 잘못되었다."고 말한 적이 있습니다. 그렇다면 제대로 중력을 계산하기 위해서 어떤 식을 세워야 하는 지를 알아보고자 합니다.
아마 물리학에 대해서 어느정도 알고 계신 분들은 별 거 아닌 걸로 생각하실 수 있습니다. 그렇지만 저는 학교에서 이와 관련한 내용을 자세히 배우지 못하였고, 기초적인 지식으로 바탕으로 스스로 알아가는 과정이라는 점을 양해해주시면 감사하겠습니다.
최종적으로 구해야 하는 값은 Fx
와 Fy
입니다.
그리고 알고 있는 값은 행성 1,2의 질량, 위치
입니다.
중력법칙에 의해 행성1이 받는 힘은 행성2가 받는 힘과 동일하기 때문에 행성 하나만 계산할 수 있다면 남은 하나의 행성도 계산이 가능합니다.
Fx
와 Fy
를 구하는 과정은 다음과 같습니다.
행성의 중심 사이의 거리는 두 점 사이의 거리
공식을 이용해서 계산할 수 있습니다.
(위: 만유인력의 법칙, 아래: 만유인력의 법칙을 이용한 실제 필요한 식)
중력은 만유인력의 법칙을 이용하여 계산할 수 있습니다.
이때 반지름의 제곱
이 필요하므로 행성의 중심 사이의 거리
를 계산할 때 루트를 씌우지 않은 값을 그대로 사용하여 최적화를 할 수 있을 것으로 예상합니다.
이는 삼각함수의 정의를 이용하여 구할 수 있습니다.
2. 중력
에서 구한 F
를 sinA
와 sinB
를 이용하며 분리하면 됩니다.
기울기가 양수인 대각선으로 배치 | 기울기가 음수인 대각선으로 배치 |
---|---|
역시 버그가 없으면 개발이 아니지 분명 이론상으로는 완벽했는데 문제가 생겼습니다.
사실 별 거는 아니었고, cosA
를 넣어야 하는 자리에 sinA
를 넣었던 것이 화근이었습니다 ㅋㅋㅋㅋㅋㅋㅋ
성공!!!!!!!!!!!!!!
드디어 스페이스 그래비티의 가장 중심인 시뮬레이터를 성공적으로 만들었습니다.
그렇지만 아직 끝은 아닙니다. 가장 필수인 중력만을 구현했을 뿐, UI/UX 편의성도 개선을 해야 되고, 행성 고정, 시뮬레이터 변경, 시나리오 추가, 범위를 벗어난 행성 제거, 행성 충돌 시 충돌 구현 등 여러가지 할 일들이 남아 있습니다.
그래도 너무 행복하네요. 며칠동안 고생했던 문제인데 드디어 끝을 봤습니다.
끝!
좋아요 구독 알림설정 누르고 가요