조성개발실록
테마 변경
태그
방명록
ABOUT ME

Explicit Integration & Implicit Integration

TILPhysics SimulationComputer Graphics

June 30, 2026



! 주의 : TIL 게시글입니다. 다듬지 않고 올리거나 기록을 통째로 복붙했을 수 있는 뒷고기 포스팅입니다.

물리 기반 시뮬레이션이나 컴퓨터 그래픽스 환경에서 물체의 운동을 그려내려면 시간에 따라 가속도와 속도, 위치 등을 업데이트해야 합니다.
시간에 따른 가속도 및 그에 의해 변하는 속도, 그에 의해 변하는 위치는 미분방정식으로 주어지고,
미분방정식들을 수치해석(numerical analysis)적으로 근사하여 풀게 됩니다.
이 중 가장 기초적인 두 가지 접근법인 Explicit Integration(명시적 적분), Implicit Integration(암시적 적분)에 대해 쓰려고 합니다.

  • Explicit Integration: 현재 시점의 시스템 상태로부터 다음 시점의 시스템 상태를 계산합니다. "현재 정보(속도/가속도 등)가 다음 dtdt동안에도 똑같겠지"라고 생각하는 셈입니다.
  • Implicit Integration: 시스템의 현재 상태와 미래 상태를 모두 포함하는 방정식을 풀어서 해를 구합니다. "다음 순간의 정보를 사용한다."로 생각하면 편합니다.

여기서는 이 두 가지가 의미하는 바를 살펴보고, 특히 이 두 가지 방법에 의해 발생할 수 있는
연속적인 물리계를 이산적(Discrete)인 시간 간격 dtdt로 쪼개어 연산할 때 발생하는 오차와 이로 인한 효과를 알아보기 위해
등속 원운동(Uniform Circular Motion) 이라는 이상적인 조건에 대입해보며 살펴보려 합니다

주어진 조건 (Given Contexts & Conditions)

아래와 같이 벡터 공간에서 등속 원운동하는 상황을 생각해봅니다.

  • 시뮬레이션의 현재 시점을 tt, 시간 간격(Time step) dtdt, dtdt가 지난 후 다음 시점을 t+dtt+dt
  • 임의의 시점 tt에서의 물체의 위치 벡터를 pt\vec{p}_t, 순간 속도 벡터를 vt\vec{v}_t
  • 등속 원운동:
    • 원의 중심 위치 벡터를 c\vec{c}, 궤도의 반지름을 rr이라 할 때, 물체의 위치는 항상 중심으로부터 일정한 거리를 유지: (ptc=r|\vec{p}_t - \vec{c}| = r)
    • 물체의 속력(속도의 크기)은 항상 일정합니다. (vt=v=const|\vec{v}_t| = v = \text{const})
    • 속도 벡터 vt\vec{v}_t는 항상 궤도의 접선 방향, 반경 벡터와 직교. (vt(ptc)=0\vec{v}_t \cdot (\vec{p}_t - \vec{c}) = 0)
  • 구심가속도: 항상 원의 중심을 향하는 가속도 a\vec{a}가 작용하여 물체가 궤도를 이탈하지 않고 원운동을 유지.
    • 원의 중심에서 물체를 향하는 단위 방향 벡터를 r^\hat{r}이라 할 때, 가속도 a=v2rr^\vec{a} = - \frac{|\vec{v}|^2}{r} \hat{r}

Explicit Integration

Explicit Integration이 현재 정보를 사용해 다음 위치를 계산합니다. 라는 뜻은:
pt+dt=pt+vtdt\vec{p}_{t+dt} = \vec{p}_t + \vec{v}_t \cdot dt
와 같이, 다음 시점의 위치를 구하기 위해 현재 시점의 속도 vtv_t를 사용한다 를 의미합니다.

dt동안 실제로는 원운동을 위해 조금씩 변화하는 접선속도가 존재하고 이 접선속도들은 모두 다릅니다.
이 중에서 dt가 시작하는 시점의 가장 처음의 속도인 vtv_t만을 선택해 "dtdt동안 속도는 변함없이 vtv_t" 를 기준으로 계산했습니다.

따라서 아무리 dtdt가 작아도 원보다 바깥쪽으로 곧게 나아간 형태(빨간 선)가 되므로, Explicit Integration으로 원운동을 시뮬레이션하면 발산성이 있는 나선형을 그리게 됩니다.

Implicit Integration

Implicit Integration은 다음 시점의 정보를 사용합니다. 그 의미는:
pt+dt=pt+vt+dtdt\vec{p}_{t+dt} = \vec{p}_t + \vec{v}_{t+dt} \cdot dt
와 같이, 다음 시점의 위치를 구하기 위해 _다음 시점의 속도 vt+dt\vec{v}_{t+dt} 를 사용한다* 를 의미합니다.

이 때, 아직 vt+dt\vec{v}*{t+dt}가 무엇인지 알고 있지 못하므로,
연립하여 vt+dt\vec{v}_{t+dt}를 알아낼 다른 방정식이 필요합니다.

t+dtt+dt 시점의 등속원운동의 구심가속도 at+dt\vec{a}_{t+dt}에 대해
vt+dt=vt+at+dtdt\vec{v}_{t+dt} = \vec{v}_t + \vec{a}_{t+dt} \cdot dt
이고, at+dt\vec{a}_{t+dt} 는, 원점에서 원 중심까지를 c\vec{c} 라고 할 때
v2r2(cpt+dt)\frac{|\vec{v}|^2}{r^2}(\vec{c} - \vec{p}_{t+dt})
이므로, 이제 연립하여 pt+dt\vec{p}_{t+dt} 를 구할 수 있습니다.

그런데 이렇게 Implicit Integration하는 과정은 _dt구간에 대해 다음 시점의 속도 vt+dt\vec{v}_{t+dt} 만을 사용하여 계산_ 하므로 이번에는 안쪽으로 곧게 뻗어나가는 형태(파란 선)가 됩니다.

따라서 Implicit Integration 으로 원운동을 시뮬레이션하면 수렴성이 있는 나선형을 그리게 됩니다.


대충 이런식으로 생기게 됩니다.
이런 unstable한 현상을 막기 위해
두 방식을 적절히 섞어서 쓰거나, 제약조건같은 것을 넣기도 합니다.
예를 들어 이런 원운동에서는, "이동 후에 중심으로부터 거리가 rr과 동일해야 한다"를 지키기 위해 위치를 이동시키는 등..
이런 것에 대해서는 다음번에 알아보면 좋겠습니다