โ Vector
๋ฒกํฐ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ ์๋ ๋ฐฉํฅ์ด๋ค. ๋ฒกํฐ๋ ๋ฐฉํฅ๊ณผ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ฒกํฐ๋ ์ด๋ค ์ฐจ์๋ ๊ฐ์ง ์ ์์ง๋ง, ๋ณดํต 2์ฐจ์์์ 4์ฐจ์์ ๋ฒกํฐ๋ฅผ ์ฃผ๋ก ๋ค๋ฃฌ๋ค. ๋ฒกํฐ๊ฐ 2์ฐจ์์ผ ๊ฒฝ์ฐ ์ด๋ ํ๋ฉด์์ ๋ฐฉํฅ์ ๋ํ๋ด๋ฉฐ, 3์ฐจ์์ผ ๊ฒฝ์ฐ 3D ์ธ๊ณ์์์ ๋ชจ๋ ๋ฐฉํฅ์ ๋ํ๋ผ ์ ์๋ค.
2D๋ก ๋ฒกํฐ๋ฅผ ํ์ํ๋ ๊ฒ์ด ๋ ์ง๊ด์ ์ด๊ธฐ ๋๋ฌธ์ 2D ๋ฒกํฐ๋ฅผ z ์ขํ๊ฐ 0์ธ 3D ๋ฒกํฐ๋ก ์๊ฐํ ์ ์๋ค. ๋ฒกํฐ๋ ๋ฐฉํฅ์ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ ๋ฒกํฐ์ ์์์ (์์ )์ ๊ทธ ๊ฐ์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
๋ฒกํฐ๋ฅผ ์์น๋ก ์๊ฐํํ๋ ค๋ฉด ๋ฐฉํฅ ๋ฒกํฐ์ ์์ ์ (0,0,0)์ผ๋ก ์๊ฐํ๊ณ ํน์ ๋ฐฉํฅ์ ๊ฐ๋ฆฌํค๊ฒ ํ๋ฉด, ๊ทธ๊ฒ์ด ์์น ๋ฒกํฐ๊ฐ ๋๋ค. ์ด๋ ๊ฒ ๋ฒกํฐ๋ฅผ ์ฌ์ฉํ์ฌ 2D ๋ฐ 3D ๊ณต๊ฐ์์ ๋ฐฉํฅ๊ณผ ์์น๋ฅผ ์ค๋ช
ํ ์ ์๋ค.
์ผ๋ฐ ์ซ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฒกํฐ์๋ ์ฌ๋ฌ ๊ฐ์ง ์ฐ์ฐ์ ์ ์ํ ์ ์๋ค.
โ ๋ฒกํฐ์ ์ค์นผ๋ผ ์ฐ์ฐ (Scalar vector operations)
์ค์นผ๋ผ๋ ๋จ์ผ ์ซ์๋ฅผ ์๋ฏธํ๋ค. ๋ฒกํฐ์ ์ค์นผ๋ผ๋ฅผ ๋ํ๊ฑฐ๋ ๋นผ๊ฑฐ๋ ๊ณฑํ๊ฑฐ๋ ๋๋ ๋, ๋ฒกํฐ์ ๊ฐ ์์์ ์ค์นผ๋ผ๋ฅผ ๋จ์ํ ๋ํ๊ฑฐ๋ ๋นผ๊ฑฐ๋ ๊ณฑํ๊ฑฐ๋ ๋๋๋๋ค.
โ ์ญ๋ฒกํฐ (Vector negation)
๋ฒกํฐ๋ฅผ ๋ถ์ (negate)ํ๋ฉด ๋ฐ๋ ๋ฐฉํฅ์ ๋ฒกํฐ๊ฐ ๋๋ค. ๋ฒกํฐ๋ฅผ ๋ถ์ ํ๋ ค๋ฉด ๊ฐ ๊ตฌ์ฑ ์์์ ๋ง์ด๋์ค ๊ธฐํธ๋ฅผ ์ถ๊ฐํ๋ค. (์ค์นผ๋ผ ๊ฐ -1๊ณผ์ ๊ณฑ์
์ผ๋ก๋ ํํํ ์ ์๋ค)
โ ๋ง์ ๊ณผ ๋บ์
- ๋ง์
๋ ๋ฒกํฐ์ ๋ง์
์ ๊ตฌ์ฑ ์์๋ณ ๋ง์
์ผ๋ก ์ ์๋๋ค. ์ฆ, ํ ๋ฒกํฐ์ ๊ฐ ๊ตฌ์ฑ ์์์ ๋ค๋ฅธ ๋ฒกํฐ์ ๊ฐ์ ๊ตฌ์ฑ ์์๋ฅผ ๋ํ๋ ๋ฐฉ์์ด๋ค.
์๊ฐ์ ์ผ๋ก, ๋ฒกํฐ ๐ฃ = (4, 2)์ ๐ = (1, 2)์ ๋ง์
์ ๋ณด๋ฉด, ๋ ๋ฒ์งธ ๋ฒกํฐ๋ฅผ ์ฒซ ๋ฒ์งธ ๋ฒกํฐ์ ๋์ ์ถ๊ฐํ์ฌ ๊ฒฐ๊ณผ ๋ฒกํฐ์ ๋์ ์ ์ฐพ๋ ๋ฐฉ์(head-to-tail method)์ผ๋ก ํํํ ์ ์๋ค.
๐ฃ + ๐ = (5, 4) → ์์์ ์์ ์๋ก์ด ๋์ ๊น์ง์ ๋ฒกํฐ๊ฐ ๊ฒฐ๊ณผ ๋ฒกํฐ์ด๋ค.
- ๋บ์
์ผ๋ฐ์ ์ธ ๋ง์
๊ณผ ๋บ์
์ฒ๋ผ, ๋ ๋ฒกํฐ์ ๋บ์
์ ๋ ๋ฒ์งธ ๋ฒกํฐ๋ฅผ ๋ถ์ ํ ํ ๋ง์
์ ํ๋ ๊ฒ๊ณผ ๋์ผํ๋ค.
๋ ๋ฒกํฐ๋ฅผ ์๋ก ๋นผ๋ฉด, ๊ฐ ๋ฒกํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์์น์ ์ฐจ์ด๋ฅผ ๋ํ๋ด๋ ๋ฒกํฐ๊ฐ ์์ฑ๋๋ค. ์ด๋ ๋ ์ ์ฌ์ด์ ์ฐจ์ด๋ฅผ ๋ํ๋ด๋ ๋ฒกํฐ๋ฅผ ์ป์ด์ผ ํ ๋ ๋งค์ฐ ์ ์ฉํ๋ค.
โ ๊ธธ์ด
๋ฒกํฐ์ ๊ธธ์ด(๋๋ ํฌ๊ธฐ)๋ฅผ ๊ตฌํ๋ ค๋ฉด ํผํ๊ณ ๋ผ์ค ์ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค. (๋ฒกํฐ๋ ๊ฐ x ๋ฐ y ๊ตฌ์ฑ ์์๋ฅผ ์ผ๊ฐํ์ ๋ ๋ณ์ผ๋ก ์๊ฐํํ ๋ ์ผ๊ฐํ์ ํ์ฑํ๋ค)
โ ๋จ์ ๋ฒกํฐ (Unit Vector)
๋จ์ ๋ฒกํฐ๋ ๊ธธ์ด๊ฐ ์ ํํ 1์ธ ํน๋ณํ ์ข
๋ฅ์ ๋ฒกํฐ์ด๋ค. ์์์ ๋ฒกํฐ์์ ๋จ์ ๋ฒกํฐ๋ฅผ ๊ณ์ฐํ๋ ค๋ฉด ๋ฒกํฐ์ ๊ฐ ๊ตฌ์ฑ ์์๋ฅผ ๋ฒกํฐ์ ๊ธธ์ด๋ก ๋๋๋ฉด ๋๋ค. (์ด๋ฅผ ๋ฒกํฐ์ ์ ๊ทํ(normalizing)๋ผ๊ณ ํ๋ค)
* ๋ฒกํฐ๋ฅผ ์ ๊ทํํ์ฌ ๋จ์ ๋ฒกํฐ๋ฅผ ๊ตฌํ๋ฉด ๋ค์ํ ์ฐ์ฐ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋จ์ ๋ฒกํฐ๋ ๋ฒกํฐ์ ๋ฐฉํฅ์ ์ ์งํ๋ฉด์ ํฌ๊ธฐ๋ฅผ ๋ฌด์ํ ์ ์์ด ์ฌ๋ฌ ์ํฉ์์ ํธ๋ฆฌํ๋ค.
โ ๋ฒกํฐ์ ๋ฒกํฐ์ ๊ณฑ์
๋ฒกํฐ ๋ ๊ฐ๋ฅผ ๊ณฑํ๋ ๊ฒ์ ๋ค์ ํน์ดํ ๊ฒฝ์ฐ์ด๋ค. ์ผ๋ฐ์ ์ธ ๊ณฑ์
์ ๋ฒกํฐ์ ๋ํด ์ ์๋์ง ์์ผ๋ฉฐ, ์๊ฐ์ ์๋ฏธ๋ ์๋ค.
๋ฒกํฐ ๊ณฑ์
์ ๊ฒฝ์ฐ ๋ด์ (dot product), ์ธ์ (cross product) ๋ ๊ฐ์ง ํน์ ํ ์ฐ์ฐ์ด ์๋ค.
โ ๋ด์ (dot product)
๋ ๋ฒกํฐ์ ๋ด์ ์ ๋ ๋ฒกํฐ์ ๊ธธ์ด์ ๋ ๋ฒกํฐ ์ฌ์ด์ ๊ฐ๋(θ)์ ์ฝ์ฌ์ธ ๊ฐ์ ๊ณฑํ ๊ฐ๊ณผ ๊ฐ๋ค.
v ⋅ k = โฅvโฅ ⋅ โฅkโฅ ⋅ cosθ
- ๋ด์ ์ ํน์ฑ
ํํ ๋ฒกํฐ : ๋ ๋ฒกํฐ๊ฐ ํํํ๋ฉด θ๋ 0๋ ๋๋ 180๋๊ฐ ๋๋ค. ์ด ๊ฒฝ์ฐ, ๋ด์ ์ ๋ฒกํฐ์ ๊ธธ์ด์ ๊ณฑ์ด ๋๋ค.
์ง๊ต ๋ฒกํฐ : ๋ ๋ฒกํฐ๊ฐ ์ง๊ตํ๋ฉด θ๋ 90๋๊ฐ ๋๋ค. ์ด ๊ฒฝ์ฐ, ๋ด์ ์ 0์ด ๋๋ค.
- ๋ ๋ฒกํฐ ์ฌ์ด์ ๊ฐ๋
๋ ๋ฒกํฐ์ ๋ด์ ํ ๊ฐ์ ๋ ๋ฒกํฐ์ ๊ธธ์ด๋ก ๋๋์ด ์ฝ์ฌ์ธ ๊ฐ์ ์ป๊ณ , ์ํฌ์ฝ์ฌ์ธ ํจ์(์ฝ์ฌ์ธ์ ์ญํจ์)๋ฅผ ์ ์ฉํ์ฌ ๋ ๋ฒกํฐ ์ฌ์ด์ ๊ฐ๋๋ฅผ ๊ตฌํ ์ ์๋ค.
- ๋ด์ ์ ํ์ฉ
๋ด์ ์ ์กฐ๋ช
๊ณ์ฐ ๋ฑ์์ ๋งค์ฐ ์ ์ฉํ๋ค. ์กฐ๋ช
๊ณ์ฐ์์ ๋ด์ ์ ์ฌ์ฉํ์ฌ ๋ฒกํฐ ๊ฐ์ ๊ฐ๋๋ฅผ ๊ณ์ฐํ๊ณ , ์ด๋ฅผ ํตํด ๋ฌผ์ฒด์ ํ๋ฉด์ ๋น์น๋ ๋น์ ๊ฐ๋๋ฅผ ์กฐ์ ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ์กฐ๋ช
์ ๋ฐฉํฅ๊ณผ ๋ฌผ์ฒด์ ํ๋ฉด ๋
ธ๋ฉ ๋ฒกํฐ ์ฌ์ด์ ๋ด์ ์ ํ๋ฉด์ ๋น์น๋ ์กฐ๋ช
์ ๊ฐ๋๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
โ ์ธ์ (cross product)
์ธ์ ์ 3์ฐจ์ ๊ณต๊ฐ์์๋ง ์ ์๋๋ฉฐ, ๋ ๋นํํ ๋ฒกํฐ๋ฅผ ์
๋ ฅ์ผ๋ก ๋ฐ์ ๋ ์
๋ ฅ ๋ฒกํฐ ๋ชจ๋์ ์์ง์ธ ์๋ก์ด ๋ฒกํฐ๋ฅผ ์์ฑํ๋ค. ๋ง์ฝ ๋ ๋ฒกํฐ๊ฐ ์๋ก ์ง๊ตํ๋ค๋ฉด, ์ธ์ ์ 3๊ฐ์ ์ง๊ต ๋ฒกํฐ๋ฅผ ์์ฑํ ์ ์๋ค.
- ์ธ์ ์ ์๋ฏธ
์์ง ๋ฒกํฐ : ์ธ์ ์ ๊ฒฐ๊ณผ๋ก ์ป์ ๋ฒกํฐ๋ ๋ ์
๋ ฅ ๋ฒกํฐ๊ฐ ์์ฑํ๋ ํ๋ฉด์ ์์ง์ด๋ค.
ํฌ๊ธฐ : ์ธ์ ์ ํฌ๊ธฐ๋ ๋ ๋ฒกํฐ๊ฐ ์์ฑํ๋ ํํ์ฌ๋ณํ์ ๋ฉด์ ์ ๋ํ๋ธ๋ค.
์ธ์ ์ 3์ฐจ์ ๊ณต๊ฐ์์ ๋ฒกํฐ์ ๋ฐฉํฅ๊ณผ ํ๋ฉด์ ์ ์ํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ๋ค.
'๐จ Graphics > ๐ต OpenGL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [OpenGL] ๋ณํ (Transformation) (0) | 2024.07.30 |
|---|---|
| [OpenGL] ํ๋ ฌ (Matrix) (0) | 2024.07.30 |
| [OpenGL] Texture ์ ๋ (0) | 2024.07.28 |
| [OpenGL] Texture ์ ์ฉ (0) | 2024.07.28 |
| [OpenGL] Texture ๋ก๋ (0) | 2024.07.28 |