오늘은 만유인력의 법칙 – mutual attraction을 표현하는 프로그램 공부를 시작할게요~^^* 아래 동영상 강의를 클릭하여 4:00까지 보시면 오늘 공부 끝~^^*
물체의 운동에 대하여 미분법이 아니라 오일러 적분법을 사용하여 지금까지 프로그램을 만들어 왔었지요? 이번에도 오일러 적분법을 사용하도록 할 게요.
두 개의 물체 사이의 움직임은 솔루션이 이미 구해져 있지만, 세 개의 물체 사이의 움직임은 아직 그 솔루션이 나와 있지 않다고 해요. n 개의 물체 사이의 움직임도 그렇겠지요? 여기서 잠깐! 세 개의 물체 사이의 움직임이라 하면! 세간의 화제! 삼체???? 아 그래서, 태양 세 개의 움직임을 예측하지 못하는 것이군요!!!
세 개의 물체 사이의 움직임에 대한 문제는 단순히 SF의 주제가 아니라, 우리 우주에 실제로 존재하는 3 개의 태양으로 구성된 은하계의 문제이기도 하네요.
물체 사이의 움직임에 대한 솔루션을 찾아내려는 노력들을 살펴 볼까요~^^*
아직 세 개의 물체 사이의 움직임에 대한 솔루션이 나오지 않았기 때문에, 우리는 이미 솔루션이 나와 있는 두 개의 물체 사이의 움직임을 세 개 이상의 물체 사이의 움직임에 적용해 보려고 해요. 어떻게요?
음…한 번에 한 쌍의 관계에 대해서만 처리를 하는 것이지요. 예를 들어, 세 개의 물체 n1, n2, n3가 있으면, n1과 n1, n1과 n2, n1과 n3, n2와 n1, n2와 n2, n2와 n3, n3와 n1, n3와 n2, 그리고 n3와 n3, 이렇게 3의 제곱인 9가지 경우에 대하여 두 개의 물체 사이의 움직임을 계산하는 거예요.
그런데, n1과 n1, n2와 n2, n3와 n3의 경우, 거리가 0이 되어 인력방정식을 적용할 수가 없겠지요? (거리의 제곱으로 나누어야 하는데, 0로 나눌 수는 없으니까요.) 그래서, 자기자신과의 관계에서는 인력방정식을 사용하지 않고 그냥 놔두고, 다른 두 물체 사이에는 인력방정식을 적용하는 거예요~^^*.
그리고 우리는 움직임의 변화를 오일러 적분을 사용해서 계산해 내는 것이지요. 오일러 적분은 거칠지만 간단한 계산법이고, 컴퓨터 애니메이션의 상황에서는 충분히 움직임을 잘 표현해 낼 수 있다고 했었지요? 오일러 적분 외에도, 움직임의 변화를 계산해 내는 다른 방식들이 있는데요. leap frog 적분(긴 시간의 단위에서 정확도가 높음), verlet 적분(force field의 영향으로 가속도가 일정하지 않을 때 사용함), runge-kutta 적분 (계산단계는 많지만, 보다 정확하게 움직임을 표현해 냄) 등이 있다고 해요. 아래의 동영상 강의들을 가볍고 편안한 마음으로 보셔도 좋겠죠~^^* 아주 가볍고 아주 편안한 마음으로~~^^*
다른 적분법들이 짧은 시간 단위에서 높은 정확도를 가지는 반면에, leap-frog은 긴 시간 단위에서 높은 정확도를 가집니다. 그래서 sin-cos 곡선형의 움직임도 긴 시간 단위에서 정확하게 묘사할 수 있다고 합니다. 긴 시간 단위에서 정확하다보니, 컴퓨터 계산 비용도 낮아지기 때문에, 분자 시뮬레이션에 잘 사용된다고 해요.
Verlet 적분법은 한 단계 앞선 시간(미래)과 한 단계 뒤쪽의 시간(과거)의 위치 관계를 고려하여, 현 시점 에서의 물체의 위치와 과거 시점에서의 물체의 위치 그리고 작용하는 힘 값을 대입하여, 한 단계 앞선 시간에서의 물체의 위치를 계산합니다.
Runge_Kutta 적분은 계산 단계가 많아서 계산 비용이 크지만 그 계산 결과는 오일러 적분에 비하여 매우 많이 정확하다고 해요~^^*
일단 우리는 훌륭하신 오일러님의 적분법으로 만유인력의 법칙을 프로그램으로 표현해 보기로 해요~^^*
오늘도 함께 공부해 주셔서 감사합니다~^^*
넵, 꿈은 이루어 집니다~!!
댓글 남기기