유체 핵심 정리

유체(Fluid)는 고체처럼 일정한 형태를 유지하지 않고 흐를 수 있는 물질이다.

대표적으로 액체와 기체가 있다.

유체 역학에서 중요한 것은

밀도 -> 압력 -> 부력

유체 + 물체의 상대 운동 -> 저항 -> 항력

유체의 속도/점성 -> 흐름의 특성

이다.

게임 물리에서는 실제 유체를 정확하게 시뮬레이션하지 않더라도 부력, 공기 저항, 물 저항, 항력 등을 근사하는 데 이 개념들이 사용된다.


밀도

밀도(Density)는 단위 부피당 질량이다.

ρ = m/V

ρ -> 밀도

m -> 질량

V -> 부피

이다.

단위는

kg/m³

를 사용한다.

밀도가 높다는 것은 같은 부피 안에 더 많은 질량이 들어 있다는 의미다.

밀도는 부력과 유체 저항을 이해하는 데 중요한 변수다.

예를 들어

물의 밀도 ≈ 1000 kg/m³

정도로 생각할 수 있다.

공기의 밀도는 물보다 훨씬 작다.

따라서 같은 부피의 물과 공기는 질량 차이가 매우 크다.


압력

압력(Pressure)은 단위 면적당 작용하는 힘이다.

P = F/A

P -> 압력

F -> 힘

A -> 면적

이다.

단위는 파스칼(Pa)이다.

1 Pa = 1 N/m²

같은 힘이라도 작용 면적이 작으면 압력이 커진다.

면적 감소 -> 압력 증가

유체에서는 압력이 모든 방향으로 전달된다.

정지한 유체에서 깊이에 따른 압력은

P = P_0 + ρgh

로 표현할 수 있다.

P_0 -> 표면 압력

ρ -> 유체 밀도

g -> 중력 가속도

h -> 깊이

이다.

따라서

깊이 증가 -> 압력 증가

한다.


부력

부력(Buoyant Force)은 유체 속에 들어간 물체가 유체로부터 받는 위쪽 방향의 힘이다.

아르키메데스 원리에 따르면 부력은 물체가 밀어낸 유체의 무게와 같다.

F_b = ρ_fluid g V_displaced

이다.

ρ_fluid -> 유체 밀도

V_displaced -> 물체가 밀어낸 유체의 부피

이다.

물체의 평균 밀도와 유체의 밀도를 비교하면 대략적인 상태를 판단할 수 있다.

ρ_object > ρ_fluid -> 가라앉음

ρ_object < ρ_fluid -> 뜸

ρ_object = ρ_fluid -> 중성 부력

단, 떠 있는 물체는 물체 전체가 유체에 잠기는 것이 아니라 일부만 잠겨 부력과 중력이 평형을 이룬다.

부력 = 중력 -> 평형


점성

점성(Viscosity)은 유체가 흐름에 저항하는 성질이다.

쉽게 말하면 유체 내부의 층과 층 사이에서 발생하는 마찰과 비슷한 성질이다.

점성이 낮으면 쉽게 흐르고,

점성이 높으면 흐르기 어렵다.

예를 들어

물 -> 낮은 점성

꿀 -> 높은 점성

으로 볼 수 있다.

점성이 높을수록 유체 내부의 속도 차이를 줄이려는 효과가 강해진다.

게임에서는 점성을 직접 계산하기보다

점성 증가 -> 움직임 저항 증가

형태로 단순화하는 경우가 많다.


유체 흐름

유체 흐름은 유체 입자들이 공간을 통해 이동하는 현상이다.

흐름을 분석할 때 유체의

속도

압력

밀도

점성

등을 고려한다.

대표적인 흐름 형태는 층류와 난류다.

층류

유체가 비교적 규칙적인 층을 이루며 흐른다.

규칙적인 흐름 -> 층류

점성이 높거나 흐름 속도가 낮을 때 나타나기 쉽다.

난류

유체가 불규칙하게 섞이며 복잡하게 흐른다.

불규칙한 흐름 -> 난류

속도가 높거나 물체의 형상과 유체 조건에 따라 난류가 발생하기 쉽다.


레이놀즈 수

층류와 난류를 판단할 때 대표적으로 레이놀즈 수(Reynolds Number)를 사용한다.

Re = ρvL/μ

또는 동점성계수 ν를 사용하면

Re = vL/ν

이다.

ρ -> 밀도

v -> 유체 속도

L -> 대표 길이

μ -> 동점성계수

이다.

레이놀즈 수가 낮으면 점성 효과가 상대적으로 크고, 높으면 관성 효과가 상대적으로 크다.

일반적인 흐름에서는

낮은 Re -> 층류 경향

높은 Re -> 난류 경향

으로 이해할 수 있다.

다만 실제 전이 기준은 유동 조건과 형상에 따라 달라진다.


유체 저항

물체가 유체 속을 움직이면 유체는 물체의 운동을 방해한다.

이를 일반적으로 유체 저항(Fluid Resistance)이라고 한다.

구조는

물체 운동 -> 유체와 상대 운동 -> 저항력

이다.

저항력의 방향은 일반적으로 상대 운동 방향의 반대다.

v > 0 -> F_drag < 0

v < 0 -> F_drag > 0

따라서

저항력 -> 운동 방향 반대

라고 볼 수 있다.


공기 저항

공기 저항은 공기 중에서 움직이는 물체가 받는 저항력이다.

저속에서는 단순화해서 속도에 비례하는 모델을 사용할 수도 있다.

F_drag = -cv

하지만 일반적인 고속 운동에서는 항력을 속도의 제곱에 비례하는 형태로 근사하는 경우가 많다.

F_drag = 1/2 ρ C_d A v²

이다.

ρ -> 공기 밀도

C_d -> 항력 계수

A -> 기준 면적

v -> 물체와 공기의 상대 속도

이다.

방향까지 포함하면 저항력은 속도와 반대 방향으로 적용한다.

F_drag = -1/2 ρ C_d A |v|v

형태로 표현할 수 있다.


항력

항력(Drag Force)은 유체 속에서 움직이는 물체가 유체로부터 받는 운동 저항력이다.

핵심 요소는

유체 밀도

상대 속도

물체의 기준 면적

물체 형상

이다.

대표적인 항력 공식은

F_d = 1/2ρC_dAv²

이다.

여기서 중요한 것은 속도가 제곱으로 들어간다는 것이다.

속도 2배 -> 항력 4배

속도 3배 -> 항력 9배

가 된다.

따라서 빠르게 움직일수록 공기 저항의 영향이 급격하게 커진다.


Drag Coefficient

Drag Coefficient(항력 계수) C_d는 물체의 형상과 유동 조건에 따른 항력 특성을 나타내는 무차원 계수다.

항력은

F_d = 1/2ρC_dAv²

이므로

C_d 증가 -> 항력 증가

한다.

같은 면적, 같은 속도, 같은 공기 밀도라도 물체의 형상에 따라 항력이 달라질 수 있다.

예를 들어

유선형 물체 -> 상대적으로 낮은 C_d

둔한 형상의 물체 -> 상대적으로 높은 C_d

로 생각할 수 있다.

실제 C_d는 고정된 물체 고유 상수가 아니라 레이놀즈 수, 마하 수, 자세, 표면 특성 등의 영향을 받을 수 있다.

게임에서는 물체의 형태를 직접 유체역학적으로 계산하는 대신

C_d -> 물체별 저항 특성을 조절하는 파라미터

로 사용하는 경우가 많다.


종단 속도

물체가 공기 중에서 낙하하면 처음에는 중력이 물체를 가속한다.

하지만 속도가 증가하면 공기 저항도 증가한다.

속도 증가 -> 항력 증가

결국 어느 순간

중력 = 항력

이 되는 상태에 접근한다.

그러면 알짜힘이 0이 되어 가속도가 0이 된다.

F_net = mg - F_d = 0

따라서

a = 0

이고 속도는 더 이상 증가하지 않는다.

이때의 속도를 종단 속도(Terminal Velocity)라고 한다.


종단 속도와 항력

제곱 항력 모델을 사용하면 종단 속도에서는

mg = 1/2ρC_dAv_t²

이다.

이를 정리하면

v_t = sqrt(2mg / ρC_dA)

이다.

따라서

질량 증가 -> 종단 속도 증가

공기 밀도 증가 -> 종단 속도 감소

항력 계수 증가 -> 종단 속도 감소

단면적 증가 -> 종단 속도 감소

한다.


유체 저항의 모델

게임에서는 상황에 따라 저항 모델을 단순화할 수 있다.

선형 저항

F_drag = -cv

속도에 비례한다.

계산이 간단하고 작은 속도 영역의 근사나 게임플레이용 물리에 적합하다.

제곱 저항

F_drag = -kv|v|

또는

F_drag = -1/2ρC_dA|v|v

속도의 제곱에 비례한다.

실제 공기 저항을 근사할 때 일반적으로 더 적합하다.

두 모델의 차이는

선형 저항 -> 속도 증가에 비례하여 저항 증가

제곱 저항 -> 속도 증가에 따라 저항이 훨씬 빠르게 증가

이다.


물속에서의 저항

물은 공기보다 밀도가 훨씬 높기 때문에 같은 조건이라면 물속에서 항력이 훨씬 크게 발생한다.

F_d = 1/2ρC_dAv²

에서

ρ_water >> ρ_air

이기 때문이다.

따라서 게임에서는

공기 -> 낮은 저항

물 -> 높은 저항

으로 설정하여 물속 움직임을 표현할 수 있다.

물속에서는 항력뿐만 아니라 부력도 함께 고려해야 한다.

물속 운동 -> 중력 + 부력 + 항력


게임 물리에서의 적용

게임에서 실제 유체역학을 그대로 구현하는 경우는 드물다.

대부분 목적에 맞게 단순화한다.

예를 들어 물속 캐릭터라면

중력 -> 아래 방향 힘

부력 -> 위 방향 힘

항력 -> 이동 반대 방향 힘

을 적용할 수 있다.

이를 합치면

F_net = F_gravity + F_buoyancy + F_drag

가 된다.

그리고 뉴턴의 제2법칙으로

a = F_net/m

을 계산한다.

공기 저항을 구현한다면

상대 속도 -> 항력 계산 -> 운동 반대 방향으로 적용

하는 구조가 기본이다.


핵심 정리

밀도 -> ρ = m/V

압력 -> P = F/A

정지 유체의 압력 -> P = P_0 + ρgh

부력 -> F_b = ρ_fluid gV_displaced

점성 -> 유체의 흐름에 대한 내부 저항

층류 -> 규칙적인 유체 흐름

난류 -> 불규칙하고 복잡한 유체 흐름

레이놀즈 수 -> Re = ρvL/μ

유체 저항 -> 유체가 물체의 운동을 방해하는 효과

항력 -> 유체 속 물체의 운동을 방해하는 힘

항력 -> F_d = 1/2ρC_dAv²

Drag Coefficient -> C_d

속도 증가 -> 항력 급격히 증가

속도 2배 -> 제곱 항력 4배

종단 속도 -> 중력과 항력이 평형을 이루는 속도

종단 속도 -> v_t = sqrt(2mg/ρC_dA)

전체 구조는 다음과 같이 잡으면 된다.

유체 -> 밀도 / 압력 / 점성 / 흐름

유체 + 물체 -> 부력 / 항력

상대 속도 -> 유체 저항

상대 속도 증가 -> 항력 증가

항력 증가 -> 가속도 감소

중력 + 항력 -> 종단 속도

물속 운동 -> 중력 + 부력 + 항력

결국 유체 물리의 핵심은 유체의 밀도와 점성, 물체와 유체 사이의 상대 운동이 물체에 힘을 만들어낸다는 것이다. 게임 물리에서는 이 관계를 목적에 맞게 단순화하여 부력과 항력, 저항 계수 등을 조절하는 방식으로 구현하면 된다.