*์ธํ๋ฐ <๊ฒ์ ์์ง์ ์งํฑํ๋ ๊ฒ์์ํ, ์ด๋์ฐ ๊ต์๋> ๊ฐ์๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ ๊ธ์ ๋๋ค.
1. ์ธ ์ ์ ์ํ ์กฐํฉ (Affine combination of Three points)
์ด์ ์ ๋ ์ ์ ์ํ ์กฐํฉ์์ ๊ณ์์ ํฉ์ด 1์ด ๋์ด์ผ ํ๋ค๋ ๊ฑธ ๋ดค์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ค์ ํ ์ํ ๊ณต๊ฐ ๋ด ๊ท์น์ ์ด๊ธฐ์ง ์์ผ๋ ค๋ฉด ๋ง์ง๋ง ์ฐจ์์ ๊ฐ์ด 1์ด ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด์์ฃ . ์ด๋ฌํ ๊ฐ๋ ์ ์ธ ์ ์ ์ํ ์กฐํฉ์ผ๋ก ํ์ฅ๋์ด๋ ๋๊ฐ์ด ์ ์ฉ๋ฉ๋๋ค.
$$ P' = s \cdot P_1 + t \cdot P_2 + (1-s-t) \cdot P_3 $$
์ ์์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ ํญ์ ์ํ ๊ณต๊ฐ์ ์ ์ ๋ณด์ฅ ๋ฐ๊ฒ ๋๋ ๊ฒ์ด์ฃ . ์์ ์์ ๋ณํํ์ฌ ๋ค์๊ณผ ๊ฐ์ ๊ณต๊ฐ ํํ๋ก ๋ํ๋ผ ์๋ ์์ต๋๋ค.
$$ P' - P_3 = s(P_1 - P_3) + t(P_2 - P_3) $$
$$ \rightarrow \ \vec{w} = s\vec{u} + t\vec{v} $$
์ \(P_3\) ์์ ์์ํ๋ ์ด 3๊ฐ์ ๋ฒกํฐ๊ฐ ์ ์์ ํฌํจ๋์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ค ๋ 2์ฐจ์ ๋ฒกํฐ๊ฐ ์ ํ ๋ ๋ฆฝ์ด๋ผ๋ฉด ํ๋ฉด์ ๋ง๋ ๋ค๋ ์ฌ์ค์ ์๊ณ ์์ต๋๋ค. \(\vec{u}, \ \vec{v} \) ๊ฐ 2์ฐจ์ ๋ฒกํฐ์ด๊ณ ์ ํ ๋ ๋ฆฝ์ด๋ผ๋ฉด, ์ ์์ ํตํด ๊ฐ์ ํ๋ฉด ์์ ์กด์ฌํ๋ ๋ชจ๋ ์ ์ ๋ง๋ค ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ณ์์ ๋ฒ์๋ฅผ 0 ์ด์ 1 ์ดํ๋ก ์ ํํ๋ฉด, ๋ ์ ์ ์ด์ ์ ๋ถ์ด ์์ฑ๋๋ค๊ณ ํ์์ฃ ? ์ ์์๋ ์ธ ๊ฐ์ ์ ์ด ์กด์ฌํ๊ณ , ๊ฐ ๊ณ์๋ค์ ๋ฒ์๋ฅผ \( 0\leq s\leq 1, \ 0 \leq t \leq1, \ 0 \leq (1-s-t) \leq1 \) ์ ๊ฐ์ด ์ ํํ์ฌ ์ ๋ถ์ ๊ธ๊ฒ ๋๋ฉด ์ฐ๋ฆฌ๊ฐ ์ต์ํ๊ฒ ๋ดค๋ ๋ชจํ์ด ๋ํ๋๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ก, ์ผ๊ฐํ์ ๋๋ค.
์ด์ ๊ฐ์ด, ์ํ ์กฐํฉ์์ ๋ชจ๋ ๊ณ์์ ํฌ๊ธฐ๊ฐ 0 ์ด์ 1 ์ดํ์ธ ๊ฒฝ์ฐ, ํ์ํ ํ ์ ์๋ ๋ฌผ์ฒด์ ๋ฒ์๊ฐ ๋ง๋ค์ด์ง๊ณ , ๊ทธ๊ฒ์ ์ปจ๋ฒก์ค ์กฐํฉ(Convex Combination)์ด๋ผ๊ณ ํฉ๋๋ค. ์ํ ์กฐํฉ์์ ๊ณ์ \( c_i \) ์ ๋ฒ์๋ฅผ \(0 \leq c_i \leq 1 \) ๋ก ์ ํํ๋ค๋ ์ถ๊ฐ ์กฐ๊ฑด๋ง ๋ถ์ผ๋ฉด ๋ฉ๋๋ค.
$$ \sum_{i = 0}^n c_i \cdot P_i $$
$$ ๋จ, \ \sum_{i = 0}^n c_i = 1, \ 0 \leq c_i \leq 1 $$
๋ณผ๋ก(Convex)๊ณผ ์ค๋ชฉ(Concave)
๋๋ณด๊ธฐ๋ฅผ ์๊ณ ์๋ค๋ฉด ์์ ๋ ๋จ์ด๋ ํํ ๋ค์ด๋ดค์ ๊ฒ๋๋ค. ๋ณผ๋ก ๋ ์ฆ์ ์ค๋ชฉ ๋ ์ฆ๋ฅผ ์ด์ผ๊ธฐ ํ ๋์ ๋ง์ด์ฃ . ํ์ง๋ง ๋ณผ๋กํ๋ค์ ์ค๋ชฉํ๋ค๋ผ๋ ํํ์ ์ํ์์ ์ฌ์ฉํ๊ธฐ์๋ ๊ฐ๋ ์ด ๋ช ํํ์ง ์์ต๋๋ค. ์ํ์์ ์ฌ์ฉํ๋ ค๋ฉด ์ข ๋ ๋ช ํํ ๊ธฐ์ค์ด ํ์ํ์ฃ .
์ํ์์ ๋ณผ๋ก๊ณผ ์ค๋ชฉ์ ๋ค์๊ณผ ๊ฐ์ด ๊ท์ ํ ์ ์์ต๋๋ค. ์ด๋ ํ ์์ญ ๋ด์์ ์์์ ๋ ์ ์ ์ ํํ์ฌ ์ฐ๊ฒฐํ์ ๋,
- ๋ ์ ์ ์ด์ ์ ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ํด๋น ์์ญ ์์ ํญ์ ์ํ๋ค. ๐๐ป ๋ณผ๋ก(Convex)
- ๋ ์ ์ ์ด์ ์ ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ํด๋น ์์ญ ๋ฐ์ ๋๊ฐ๋ค. ๐๐ป ์ค๋ชฉ(Concave)
์์ ๊ฐ์ ๊ฐ๋ ์ผ๋ก ๋น์ถ์ด ๋ดค์ ๋, ์ผ๊ฐํ์ ๋ณผ๋กํจ(Convexity, ์์ญ ๋ด์์ ์์๋ก ์ฐ๊ฒฐํ ์ ์ด ํด๋น ์์ญ์ ๋ฒ์ด๋์ง ์๋ ์ฑ์ง)์ ๊ฐ์ง๊ณ ์๊ธฐ์ ๋ํ์ ์ธ ๋ณผ๋ก(Convex)ํ ๋ํ ์์ญ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
๋ค ์ ์ ์ปจ๋ฒก์ค ์กฐํฉ
์ ์ ํ ๊ฐ ๋ ์ถ๊ฐํ๋ฉด ์ด๋ค ๋ชจํ์ด ๋์ค๊ฒ ๋ ๊น์?
$$ P'=a\cdot P_1+b\cdot P_2 + c\cdot P_3 + (1-a-b-c)\cdot P_4 $$
$$ \vec{x}=a\vec{u}+b\vec{v}+c\vec{w} $$
๋ค ์ ์ ์ปจ๋ฒก์ค ์กฐํฉ์ ํตํด ๋ง๋ค์ด์ง๋ ๊ฐ ๋ฒกํฐ๊ฐ ์ ํ ๋ ๋ฆฝ์ธ ๊ฒฝ์ฐ, ๋ฒกํฐ๊ฐ 3๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ค 3์ฐจ์ ๊ณต๊ฐ์ ์ํ ์ ๋ค์ ๋ฌดํํ ๋ง๋ค ์ ์์ ๊ฒ๋๋ค. ์ด ๋์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ ๊ณ์๋ค์ ๋ฒ์๋ฅผ 0 ์ด์ 1 ์ดํ๋ก ์ค์ ํด์ฃผ๋ฉด ๋ฌผ์ฒด์ ํ์์ด ๋ง๋ค์ด ์ง ๊ฒ์ด๊ณ , ๊ทธ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ์ฌ๋ฉด์ฒด์ ๋ชจ์ต์ด๊ฒ ์ง์.
์ด๋ ๊ฒ ๋ ์ ์ ์กฐํฉํด์ ์ ๋ถ, ์ธ ์ ์ ์กฐํฉํด์ ์ผ๊ฐํ, ๋ค ์ ์ ์กฐํฉํด์ ์ฌ๋ฉด์ฒด์ ๊ฐ์ ์ปจ๋ฒก์คํ ์์ญ๋ค์ ๋ง๋ค์์ต๋๋ค. ์ด๋ฌํ ์ปจ๋ฒก์ค ๋ํ๋ค์ ํ์ฉํด ์ค์ ํ์ค๊ณผ ์ ์ฌํ 3์ฐจ์ ๊ณต๊ฐ์์์ ๋ฌผ์ฒด๋ฅผ ํํํ๊ฒ ๋๋๋ฐ, ์ด๋ ์ฌ์ฉํ๋ ๋ํ์ ์ธ ์๋ฃ๊ตฌ์กฐ๊ฐ ๋ฉ์(Mesh)์ ๋๋ค.
2. ๋ฉ์(Mesh)์ ๊ตฌ์กฐ
์์ ์ค๋ช ํ ์ ๋ถ, ์ผ๊ฐํ, ์ฌ๋ฉด์ฒด ๋ฑ์ ์ปด๋ฒก์ค ์์ญ ์ค, ๊ฐ์ฅ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ ์ ์๋ ๋ํ์ ์ผ๊ฐํ์ ๋๋ค. 1) 2์ฐจ์ ์์ญ ํํ์ด ๊ฐ๋ฅํ๊ณ , 2) 3์ฐจ์๋ 2์ฐจ์ ํ๋ฉด์ ์กฐํฉํ์ฌ ํํ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด์ง์.
์ด๋ ๊ฒ 3์ฐจ์ ๋ฌผ์ฒด๋ค์ ๊ฒฐ๊ตญ ๋ง์ ์ผ๊ฐํ๋ค์ด ๋ชจ์ฌ ํ์ฑ๋ ์งํฉ์ด๋ผ๊ณ ๋ณผ ์ ์๋๋ฐ, ์ด๋ฌํ ์ ๋ณด๋ค์ ์ ์ฅํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ฉ์(Mesh)๋ผ๊ณ ํ๋ ๊ฒ์ ๋๋ค. ๋ฉ์๋ ์ ์ (Vertex)๊ณผ ์ผ๊ฐํ(Triangle) ์ ๋ณด๋ฅผ ๋ณ๋๋ก ๊ตฌ์ฑํ๋ ์ผ๊ฐํ ๋ฆฌ์คํธ(Triangle List)๋ผ๋ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฒ ๋์ฃ .
์ผ๊ฐํ ๋ฆฌ์คํธ(Triangle List)
์ ์ ์ ๋ณด๋ง์ ๋ชจ์๋๋ ์ ์ ๋ฒํผ์ ์ผ๊ฐํ ์ ๋ณด๋ง์ ๋ชจ์๋๋ ์ธ๋ฑ์ค ๋ฒํผ๋ฅผ ํตํด, ์ผ๊ฐํ์ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ๊ฐํ์ ์ผ๊ฐํ ๋ ๊ฐ๋ก ๊ตฌ์ฑํ ์ ์๊ณ , ์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์ค๊ณํ ์ ์์ต๋๋ค.
๊ฐ ์ ์ ๋ํ ์ ๋ณด๋ ์ ์ ๋ฒํผ์์ ๊ฐ์ ธ์ค๊ณ , ์ด๋ฅผ ์ด๋ฃจ๋ ์ผ๊ฐํ์ ๋ํ ์ ๋ณด๋ ์ธ๋ฑ์ค ๋ฒํผ์์ ๊ฐ์ ธ์ต๋๋ค. ์ธ๋ฑ์ค ๋ฒํผ์์ ์ผ๊ฐํ 0๋ฒ์ ํด๋นํ๋ ์ ์ ๋ค์ (0, 1, 2)์ด๊ณ , ์ผ๊ฐํ 1๋ฒ์ ํด๋นํ๋ ์ ์ ๋ค์ (0, 2, 3)์ด๋ฉฐ, ์ด๋ค์ ๊ทธ๋ฆฌ๋ ์์ ๋ํ ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
์ด์ ๊ฐ์ ๋ฐฉ์์ ํตํด, ์ผ๊ฐํ์ด ๋ง๋ฟ์ ๊ฒน์ณ์ ์ค๋ณต๋๋ ์ ์ ์ด ์๊ธฐ์ง ์๋๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ์ผ๊ฐํ๋ง๋ค ์ ์ ์ฐ๊ฒฐํ๊ณ ์ ์ ๊ทธ๋ ค, ๋ฉ์๋ฅผ ํ์ํ ํ ๊ฒฐ๊ณผ ํ๋ฉด์ ์์ด์ดํ๋ ์(Wireframe)์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
3. ๋ฌด๊ฒ์ค์ฌ ์ขํ (Barycentric Coordinate)
์ธ ์ ์ ๋ํ ์ํ ์กฐํฉ ์์์, 3๊ฐ์ ๊ณ์๋ฅผ ์กฐํฉํด ์์ฑํ ์ขํ \((s, \ t, \ 1-s-t) \) ๋ฅผ ๋ฌด๊ฒ์ค์ฌ ์ขํ๋ผ๊ณ ํฉ๋๋ค.
$$ P' = s \cdot P_1 + t \cdot P_2 + (1-s-t) \cdot P_3 $$
๊ทธ๋ ๋ค๋ฉด, ๋ฌด๊ฒ์ค์ฌ ์ขํ๋ ์ด๋ป๊ฒ ๊ณ์ฐํ๋ ๊ฑธ๊น์? ์์ ๋ฅผ ํ ๋ฒ ๋ด ์๋ค.
์์ ๊ฐ์ด, ์ \(P_1, \ P_2, \ P_3 \) ๋ก ์ด๋ฃจ์ด์ง ์ผ๊ฐํ๊ณผ ๋์ผํ ํ๋ฉด ์์ ์ \(P_4\) ์ ๋ํ ๋ฌด๊ฒ์ค์ฌ ์ขํ๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$$ \vec{w} = s \cdot \vec{u} + t \cdot \vec{v} $$
์ ์์ ์๋ณ์ \(\vec{u}, \ \vec{v} \) ๋ฅผ ๊ฐ๊ฐ ๋ด์ ํ์ฌ 2๊ฐ์ ๋ฐฉ์ ์์ ๋ง๋ญ๋๋ค.
$$ \vec{w} \cdot \vec{u} = s(\vec{u} \cdot \vec{u}) + t(\vec{v} \cdot \vec{u}) \ \ \ \ \ \ ... (1) $$
$$ \vec{w} \cdot \vec{v} = s(\vec{u} \cdot \vec{v}) + t(\vec{v} \cdot \vec{v}) \ \ \ \ \ \ ... (2) $$
(1)์์ \( (\vec{u} \cdot \vec{v})\) , (2)์์ \( (\vec{u} \cdot \vec{u}) \) ๋ฅผ ๊ณฑํด์ค๋๋ค.
$$ (\vec{w} \cdot \vec{u})(\vec{u} \cdot \vec{v}) = s(\vec{u} \cdot \vec{u})(\vec{u} \cdot \vec{v}) +t(\vec{u} \cdot \vec{v})(\vec{u} \cdot \vec{v}) \ \ \ \ \ \ ...(1a) $$
$$ (\vec{w} \cdot \vec{v})(\vec{u} \cdot \vec{u}) = s(\vec{u} \cdot \vec{v})(\vec{u} \cdot \vec{u}) + t(\vec{v} \cdot \vec{v})(\vec{u} \cdot \vec{u}) \ \ \ \ \ \ ...(2a) $$
\((1a) - (2a)\) ๋ฅผ ํตํด ์๊ฑฐ๋ฒ์ ์งํํด์ฃผ๋ฉด, \(s(\vec{u} \cdot \vec{u})(\vec{u} \cdot \vec{v})\) ๊ฐ ์ ๊ฑฐ๋๊ณ , \(t\) ์ ๋ํด ์์ ์ ๋ฆฌํด์ฃผ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$$ t = \frac{(\vec{w} \cdot \vec{u})(\vec{u} \cdot \vec{v}) - (\vec{w} \cdot \vec{v})(\vec{u} \cdot \vec{u})}{(\vec{u} \cdot \vec{v})^2 - (\vec{v} \cdot \vec{v})(\vec{u} \cdot \vec{u})} $$
์ด๋ฒ์๋ (1)์ \((\vec{v} \cdot \vec{v})\) ๋ฅผ, (2)์ \( (\vec{v} \cdot \vec{u}) \) ๋ฅผ ๊ณฑํด์ฃผ๊ณ , \(t\) ๋ฅผ ์๊ฑฐํด์ฃผ๋ฉด, \(s\) ์ ๊ตฌํ ์ ์์ต๋๋ค.
$$ s = \frac{(\vec{w} \cdot \vec{v})(\vec{u} \cdot \vec{v}) - (\vec{w} \cdot \vec{u})(\vec{v} \cdot \vec{v})}{(\vec{u} \cdot \vec{v})^2 - (\vec{v} \cdot \vec{v})(\vec{u} \cdot \vec{u})}$$
์ด๋ ๊ฒ ๊ตฌํ \(s, \ t\) ๊ฐ์ ํตํด ๋ฌด๊ฒ์ค์ฌ ์ขํ \( (s, \ t, \ 1-s-t)\) ๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ๊ตฌํ ๊ฐ ์ขํ๊ฐ์ด ๋ชจ๋ 0 ์ด์ 1 ์ดํ๋ฅผ ๋ง์กฑํ๋ค๋ฉด, ์ผ๊ฐํ ๋ด๋ถ์ ์๋ ์ ์ด๋ผ๋ ๊ฑธ ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํ์ฉํ์ฌ, ์ผ๊ฐํ ๋ด๋ถ ์์ญ์ ์์น ํ๋ ๋ฑ์ ์์ฉํ ์ ์์ต๋๋ค.
'๐ฎGame Development > Game Mathemathics' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ฒ์ ์ํ] #15 | ๊ฒ์ ์์ง(Game Engine) (1) | 2023.11.28 |
---|---|
[๊ฒ์ ์ํ] #14 | ํ ์ค์ฒ ๋งคํ(Texture Mapping) (0) | 2023.11.28 |
[๊ฒ์ ์ํ] #12 | ์ง์ (Line) (2) | 2023.11.26 |
[๊ฒ์ ์ํ] #11 | ๋ด์ (Dot Product) (1) | 2023.11.25 |
[๊ฒ์ ์ํ] #10 | ์ํ ๊ณต๊ฐ(Affine Space) (1) | 2023.11.24 |