๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ Development Study/๐Ÿ–ผ GameProgramming 2D

World View Projection ๋ณ€ํ™˜

by eazuooz 2023. 1. 11.

์˜ˆ์ œ :)

https://github.com/eazuooz/YamYamEngine/commit/5746341cee3f322346b6f0f90fb69db6e121ce48#diff-4da099d09d596674ef3104953885d51bd55ca72a394800f0a83f9a457cd5e3de

 

View, Projection Matrix · eazuooz/YamYamEngine@5746341

Show file tree Showing 23 changed files with 385 additions and 117 deletions.

github.com

3์ฐจ์› ๊ณต๊ฐ„์„ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

Z๊ฐ’์ด ๋ชจ๋‹ˆํ„ฐ ๋’ค์ชฝ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์™ผ์† ์ขŒํ‘œ๊ณ„์™€ z๊ฐ’์ด ๋ชจ๋‹ˆํ„ฐ ์•ž์ชฝ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์˜ค๋ฅธ์† ์ขŒํ‘œ๊ณ„์ด๋‹ค.

 

ํ•˜๋‚˜์˜ ๋ฌผ์ฒด๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๋ฉ”์‹œ ๋ฐ์ดํ„ฐ๋Š” ์ž์‹ ๋งŒ์˜ ๊ณต๊ฐ„์—์„œ ๋ฌผ์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ ์ •์ ์˜ ์œ„์น˜์ •๋ณด๊ฐ€ ์ €์žฅ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฌผ์ฒด์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ธฐ ์œ„ํ•ด ๋ถ€์—ฌํ•œ ๊ณต๊ฐ„์„ ๋กœ์ปฌ๊ณต๊ฐ„์ด๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฒŒ์ž„์ฝ˜ํ…์ธ ๋Š” ๋‹จ์ผ ๋ฌผ์ฒด๊ฐ€ ์•„๋‹Œ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋ฌผ์ฒด๊ฐ€ ๋ชจ์—ฌ ๋ฐฐ๊ฒฝ์„ ์ด๋ฃจ๋ฏ€๋กœ, ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฌผ์ฒด๋ฅผ ๋ชจ์•„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ณ„๋„์˜ ๊ณต๊ฐ„์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์—ฌ๋Ÿฌ ๋ฌผ์ฒด๋ฅผ ๋ชจ์•„ ๊ฒŒ์ž„์ฝ˜ํ…์ธ ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ ๋˜๋Š” ์ƒˆ๋กœ์šด ๊ณต๊ฐ„์„ ์›”๋“œ ๊ณต๊ฐ„์ด๋ผ๊ณ  ํ•œ๋‹ค. 

 

 

ํฌ๊ธฐ ๋ณ€ํ™˜ ํ–‰๋ ฌ

 

ํšŒ์ „ ๋ณ€ํ™˜ ํ–‰๋ ฌ ( ์˜ค์ผ๋Ÿฌ ๊ฐ )

 

 

์ด๋™ ํ–‰๋ ฌ

Directx ๋Š” ํ–‰์šฐ์„  ํ–‰๋ ฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋™ํ–‰๋ ฌ์˜ p1, p2, p3๊ฐ€ ์ขŒ์ธกํ•˜๋‹จ์— ์œ„์น˜ํ•œ๋‹ค.

์นด๋ฉ”๋ผ๊ณต๊ฐ„

์›”๋“œ์—์„œ์˜ ์ขŒํ‘œ๊ฐ€ ์–ด๋–ป๋“  ์นด๋ฉ”๋ผ ๊ด€์ ์—์„œ ๋ดค์„ ๋•Œ ์นด๋ฉ”๋ผ๋Š” ์„ธ์ƒ์˜ ์ขŒํ‘œ์™€ ๋ฐ˜๋Œ€๋กœ ๋ฐ”๋ผ๋ณด๋Š” ๋ชจ์Šต์ด ๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ์„œ๋กœ ๋ฐ˜๋Œ€๋˜๋Š” ์ขŒํ‘œ๊ณ„๋กœ ์ธํ•ด x์™€ y๊ฐ’์ด ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ฐ˜๋Œ€๋กœ ๋’ค์ง‘ํž ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ์›๋ž˜ ์ขŒํ‘œ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ์นด๋ฉ”๋ผ๋ฅผ 180๋„ ํšŒ์ „์‹œ์ผœ์„œ +z์ถ•์ด ์นด๋ฉ”๋ผ ๋’คํŽธ์„ ํ–ฅํ•˜๊ฒŒ ํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์ขŒํ‘œ๊ณ„๋กœ ๋ฌผ์ฒด๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

 

 

 

์นด๋ฉ”๋ผ์—๋Š” ํฌ๊ธฐ์˜ ๊ฐœ๋…์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์นด๋ฉ”๋ผ์˜ ํŠธ๋žœ์Šคํผ์€ ํฌ๊ธฐ ๋ณ€ํ™˜์„ ์ œ์™ธํ•œ ํšŒ์ „๊ณผ ์ด๋™๋ณ€ํ™˜์œผ๋กœ๋งŒ ๊ตฌ์„ฑ ๋œ๋‹ค. ์นด๋ฉ”๋ผ์˜ ํŠธ๋žœ์Šคํผ์— ์ €์žฅ๋œ ์œ„์น˜ ๊ฐ’์„ t(t1, t2, t3)๋กœ ์ง€์ •ํ•˜๊ณ  ๋กœ์ปฌ ์ถ• ๊ฐ’์„ ๊ฐ๊ฐ x = (x1, x2, x3)

y = (y1, y2, y3), z = (z1, z2, z3)๋กœ ์ง€์ •ํ•ด๋ณด์ž. ๊ทธ๋Ÿฌ๋ฉด ์ด๋™ํ–‰๋ ฌ T์™€ ํšŒ์ „ํ–‰๋ ฌ R์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

 

ํšŒ์ „ ๋ณ€ํ™˜ ์—ญ์‹œ ์ด๋™ ๋ณ€ํ™˜๊ณผ ๋™์ผํ•˜๊ฒŒ ์—ญํ–‰๋ ฌ์„ ์ ์šฉ์‹œํ‚จ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌผ์ฒด๋Š” ๊ฐ€๋งŒํžˆ ์žˆ๋Š”๋ฐ ์นด๋ฉ”๋ผ๊ฐ€ 30๋„ ํšŒ์ „ํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด, ํ™”๋ฉด์„ ๋ฐ”๋ผ๋ณด๋Š” ์‚ฌ์šฉ์ž๋Š” ๋งˆ์น˜ ๋ฌผ์ฒด๊ฐ€ -30๋„ ํšŒ์ „ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋А๋‚„ ๊ฒƒ์ด๋‹ค. ์ง๊ตํ–‰๋ ฌ์ธ ํšŒ์ „ ๋ณ€ํ™˜ํ–‰๋ ฌ R์˜ ์—ญํ–‰๋ ฌ R-1์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ „์น˜ ํ–‰๋ ฌ๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋™ํ–‰๋ ฌ์˜ ์—ญํ–‰๋ ฌ๋„ ๋งˆ์ € ๊ตฌํ•ด๋ณด์ž.

 

์ด ๋‘˜์„ ๊ณฑํ•œ ์ตœ์ข… ๋ทฐ ๋ณ€ํ™˜ ํ–‰๋ ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

 

์ด๋™์˜ ์—ญํ–‰๋ ฌ์„ ๋จผ์ € ์ ์šฉํ• ์ง€, ํšŒ์ „์˜ ์—ญํ–‰๋ ฌ์„ ๋จผ์ € ์ ์šฉํ• ์ง€๋ฅผ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค. ์ ์šฉ ์ˆœ์„œ๋ฅผ ๊ณฐ๊ณฐํžˆ ์ƒ๊ฐํ•ด ๋ณธ๋‹ค๋ฉด ์ด๋™์˜ ์—ญํ–‰๋ ฌ์„ ์ ์šฉํ•œ ํ›„์— ํšŒ์ „์˜ ์—ญํ–‰๋ ฌ์„ ์ ์šฉํ•ด์•ผ ํ•จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์นด๋ฉ”๋ผ์— ํšŒ์ „์„ ์ ์šฉํ•  ์‹œ์ ์— ๋ชจ๋“  ์ขŒํ‘œ๋Š” ์นด๋ฉ”๋ผ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋Š” ํŠธ๋žœ์Šคํผ ์ˆœ์„œ๋ฅผ ๊ฑฐ๊พธ๋กœ ๋Œ๋ฆฌ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์›๋ฆฌ๋กœ ๋ณผ์ˆ˜ ์žˆ๋‹ค.

 

์ •๋ฆฌํ•˜๋ฉด ํฌ๊ธฐ๋ณ€ํ™˜ S๋ฅผ ์ œ์™ธํ•œ ์นด๋ฉ”๋ผ์˜ ํŠธ๋žœ์Šคํผ์œผ๋กœ ๋ถ€ํ„ฐ ์–ป์–ด์ง€๋Š” ๋ชจ๋ธ๋ง ํ–‰๋ ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

M = R * T

 

๋ชจ๋ธ๋ง ํ–‰๋ ฌ์˜ ์—ญํ–‰๋ ฌ  M(-1) ์€ ๋ฐ”๋กœ ๋ทฐ ํ–‰๋ ฌ์ด ๋˜๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ „๊ฐœ๋œ๋‹ค.

M(-1) = ( T * R ) (-1) = R(-1) * T(-1)

 

 

์›๊ทผ ํˆฌ์˜

์šฐ๋ฆฌ๊ฐ€ ์‚ฌ๋Š” ์„ธ์ƒ์€ 3์ฐจ์›์œผ๋กœ ์ด๋ค„์ ธ ์žˆ๊ณ , ์ด๋ฅผ ๋ชจ๋ฐฉํ•œ ๊ฐ“์•„์˜ ๊ฒŒ์ž„ ๊ณต๊ฐ„๋„ 3์ฐจ์›์˜ ์ฒด๊ณ„๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ 3์ฐจ์›์œผ๋กœ ๊ฐ€์ƒ๊ณต๊ฐ„์„ ๊ตฌ์„ฑํ•˜๋”๋ผ๋„ ๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด์— ๋ณด์ด๋Š” ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ์€ 2์ฐจ์› ํ‰๋ฉด์ด ๋ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

2์ฐจ์›์˜ ํ‰๋ฉด์—์„œ 3์ฐจ์› ๊ณต๊ฐ„๊ฐ์„ ๋А๋‚„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ ค๋ฉด ๊ณต๊ฐ„์„ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™˜ํ•ด์•ผ ํ• ๊นŒ?

ํ•ด๋‹ต์€ ์šฐ๋ฆฌ ๋ˆˆ์ด ๋ณด๋Š” ์„ธ์ƒ์„ ๋ณด๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ณต๊ฐ„์„ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ ๋ˆˆ์ด ์„ธ์ƒ์„ ๋ณด๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์„ ์›๊ทผ ํˆฌ์˜ ๋ณ€ํ™˜์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์›๊ทผ ํˆฌ์˜๋ณ€ํ™˜์˜ ์›๋ฆฌ

์›๊ทผ ๊ธฐ๋ฒ•์€ ๋ฅด๋„ค์ƒ์Šค ์‹œ๋Œ€์˜ ํ™”๊ฐ€๋“ค์— ์˜ํ•ด ์ฐฝ์•ˆ๋˜์—ˆ๋‹ค. ๋‹น์‹œ ๋ฅด๋„ค์ƒ์Šค ํ™”๊ฐ€๋“ค์€ ๋ˆˆ์— ๋ณด์ด๋Š” ์ƒ์„ ๊ทธ๋Œ€๋กœ ํ™”ํญ์— ๋‹ด๊ธฐ ์œ„ํ•ด ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์‹œ์„ ์„ ํ•œ ์ ์— ๊ณ ์ •์‹œํ‚ค๊ณ  ๊ณ ์ •๋œ ์ ์œผ๋กœ๋ถ€ํ„ฐ ํ™”ํญ๊นŒ์ง€ ๊ณง๊ฒŒ ๋ป—์€ ์‹ค์„ ํ™œ์šฉํ•ด ๊ทธ๋ฆผ์„ ๊ทธ๋ ธ๋‹ค. ์ด๋Ÿฌํ•œ ํ™”๋ฒ•์„ ํˆฌ์‹œ ์›๊ทผ๋ฒ• ์ด๋ผ๊ณ ํ•œ๋‹ค.

 

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  3์ฐจ์› ๊ณต๊ฐ„์— ํˆฌ์‹œ ์›๊ทผ๋ฒ•์˜ ์›๋ฆฌ๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ณต๊ฐ„์˜ ๋ชจ๋“ ์ ์ด ํ•œ์ ์„ ํ–ฅํ•ด ๋ชจ์ด๋Š” ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค.

 ์›๊ทผ ํˆฌ์˜์ด๋ž€ ์šฐ๋ฆฌ๋ˆˆ์ด ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐ€์ƒ ๊ณต๊ฐ„์„ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ€์ƒ ๊ณต๊ฐ„์—์„œ ๋ˆˆ์— ๋Œ€์‘ํ•˜๋Š” ๋ฌผ์ฒด๋Š” ์นด๋ฉ”๋ผ๋‹ค. ๊ทธ๋ž˜์„œ ์›๊ทผ ํˆฌ์˜ ๋ณ€ํ™˜์„ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ˆˆ์— ๋ณด์ด๋Š” ๋ฒ”์œ„๋ฅผ ์นด๋ฉ”๋ผ์—๋„ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ด๋ฅผ ํ™”๊ฐ(filed of view)๋ผ๊ณ  ํ•œ๋‹ค. ์นด๋ฉ”๋ผ์— ํ™”๊ฐ์„ ์„ค์ •ํ•˜๋ฉด ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ขŒ์šฐ์™€ ์œ„์•„๋ž˜๊ฐ€ ๊ท ๋“ฑํ•œ ์‚ฌ๊ฐ๋ฟ” ์˜์—ญ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

 

์›๊ทผ ํˆฌ์˜ ๋ณ€ํ™˜์€ x, y, z์ถ•์ด ๋ชจ๋‘ ์ง๊ตํ•˜๋Š” ์ •์œก๋ฉด์ฒด ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง„ ๋ทฐ ๊ณต๊ฐ„์„ ์นด๋ฉ”๋ผ์˜ ํ•œ์ ์œผ๋กœ ๋ชจ์ด๋Š” ์‚ฌ๊ฐ๋ฟ” ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง„ ๊ณต๊ฐ„์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ž‘์—…์ด๋ผ๊ณ  ํ• ์ˆ˜ ์žˆ๋‹ค.

 

3์ฐจ์› ๊ณต๊ฐ„์„ ๋ณ€ํ™˜ํ•œํ›„์—๋Š” ๊ณต๊ฐ„์˜ ๋ฌผ์ฒด๋ฅผ ํˆฌ์˜ํ•ด 2์ฐจ์› ๋ชจ๋‹ˆํ„ฐ ํ‰๋ฉด์— ๋‹ด์•„๋‚ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ ๋ชจ๋“  ๋ฌผ์ฒด์˜ ์ƒ์ด ๋งบํžˆ๋Š” ๊ฐ€์ƒ์˜ ํ‰๋ฉด์„ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ด๋ฅผ ํˆฌ์˜ ํ‰๋ฉด์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํˆฌ์˜ ํ‰๋ฉด์˜ ๊ฐœ๋…์€ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ž๋™์ฐจ๊ฐ€ Image์— ๊ทธ๋ ค์ง„ ํ‰๋ฉด์„ ์ด์•ผ๊ธฐํ•œ๋‹ค.

ํˆฌ์˜ ํ‰๋ฉด์˜ ์œ„์ฐจ๊ฐ€ ์นด๋ฉ”๋ผ์™€ ๋ฉ€์–ด์งˆ์ˆ˜๋ก ํˆฌ์˜ ํ‰๋ฉด์€ ๋” ์ปค์ง„๋‹ค. ํˆฌ์˜ํ‰๋ฉด์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•œ ์นด๋ฉ”๋ผ๋กœ๋ถ€ํ„ฐ ํˆฌ์˜ ํ‰๋ฉด๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ดˆ์ ๊ฑฐ๋ฆฌ Forcal length๋ผ๊ณ  ํ•œ๋‹ค.

 

ํ™”๊ฐ์„

์›๊ทผ ํˆฌ์˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  ํˆฌ์˜ ํ‰๋ฉด์˜ ์œ„์น˜๋ฅผ ์ง€์ • ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํˆฌ์˜ ํ‰๋ฉด์˜ ์œ„์น˜๋Š” ๊ณ„์‚ฐ์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด ์œ„์•„๋ž˜ ํฌ๊ธฐ๊ฐ€ 1์ด ๋˜๋Š” ์ง€์ ์œผ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค. ์ขŒ์šฐ ์ƒํ•˜์˜ ํ™”๊ฐ์ด ๋™์ผํ•˜๋ฏ€๋กœ ํˆฌ์˜ํ‰๋ฉด

์€ [-1, 1]์˜ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง€๋Š” ์ •์‚ฌ๊ฐํ˜• ๋ชจ์Šต์„ ๋ˆ๋‹ค.

 

2์ฐจ์› ํˆฌ์˜ํ‰๋ฉด์˜ ์ขŒํ‘œ์‹œ์Šคํ…œ์„ NDC(normailized device coordinate)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

ํˆฌ์˜ ํ‰๋ฉด์— ๋Œ€์‘ ํ•˜๋Š” NDC๊ฐ€ ์ผ์ •ํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค๋ฉด, ์นด๋ฉ”๋ผ์— ์„ค์ •๋œ ํ™”๊ฐ์ด ๋ณ€ํ• ๋–„ ์ดˆ์  ๊ฑฐ๋ฆฌ๋Š” ๋‹ฌ๋ผ์งˆ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ํ™”๊ฐ์ด ์ปค์งˆ์ˆ˜๋ก ์ดˆ์  ๊ฑฐ๋ฆฌ๋Š” ๊ฐ€๊นŒ์›Œ์ง€๊ณ  ํ™”๊ฐ์ด ์ž‘์•„์งˆ์ˆ˜๋ก ์ดˆ์ ๊ฑฐ๋ฆฌ๋Š” ๋ฉ€์–ด์ง„๋‹ค. ํ™”๊ฐ๊ณผ ์ดˆ์ ๊ฑฐ๋ฆฌ์˜ ๊ด€๊ณ„๋Š” tanํ•จ์ˆ˜๋กœ ์„ค์ •๋œ๋‹ค.

 

 

 

Tanํ•จ์ˆ˜๋กœ ์ดˆ์  ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ–ˆ๋‹ค๋ฉด, ๋ทฐ ๊ณต๊ฐ„์˜ ์ ์„ ํˆฌ์˜ ํ‰๋ฉด ์œ„์˜ ์ ์œผ๋กœ ๋Œ€์‘์‹œํ‚ค๋Š” ์›๊ทผ ํˆฌ์˜ ๋ณ€ํ™˜์„ ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.  ์ด ์—ญ์‹œ ํ–‰๋ ฌ๋กœ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ–‰๋ ฌ๊ณฑ์˜ ์žฅ์ ์„ ํ™œ์šฉํ•ด ๋กœ์ปฌ ๊ณต๊ฐ„์˜ ์ ์„ ํˆฌ์˜ ํ‰๋ฉด์˜ ์ ์œผ๋กœ ํ•œ๋ฒˆ์— ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ํŒŒ์ดํ”„๋ผ์ธ์„ ๋งŒ๋“ค์ˆ˜ ์žˆ๋‹ค.

 

์›๊ทผ ํˆฌ์˜ ํ–‰๋ ฌ์„ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์นด๋ฉ”๋ผ๊ฐ€ ๋ฐ”๋ผ๋ณด๋Š” ๊ณต๊ฐ„์€ ์–ด๋–ค ์„ฑ์งˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž. ์ง€๊ธˆ๊นŒ์ง€ ์ง„ํ–‰ํ•œ ๊ณต๊ฐ„๋ณ€ํ™˜์€ ๋ชจ๋‘ ์ •์œก๋ฉด์ฒด ํ˜•ํƒœ์˜ 3์ฐจ์› ๊ณต๊ฐ„์ด์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์„ธ์ถ•์ด ์ง๊ตํ•˜๋Š” ๊ณต๊ฐ„์„ ์œ ํด๋ฆฌ๋“œ ๊ณต๊ฐ„์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋กœ์ปฌ, ์›”๋“œ, ์นด๋ฉ”๋ผ ๊ณต๊ฐ„์ด ๋ชจ๋‘ ์œ ํด๋ฆฌ๋“œ ๊ณต๊ฐ„์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ •์œก๋ฉด์ฒด ํ˜•ํƒœ์˜ ์œ ํด๋ฆฌ๋“œ ๊ณต๊ฐ„์€ ์›๊ทผ ํˆฌ์˜ ๋ณ€ํ™˜์— ์˜ํ•ด ์‚ฌ๊ฐ๋ฟ” ํ˜•ํƒœ๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์˜๊ณต๊ฐ„ Project Space๋ผ๊ณ  ํ•œ๋‹ค.

 

์‚ฌ์˜๊ณต๊ฐ„์€ x, y ์ถ•์€ ์—ฌ์ „ํžˆ ์ง๊ตํ˜•ํƒœ๋ฅผ ๋„๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ z์ถ•์€ ๋…๋ฆฝ์ ์œผ๋กœ ํ–‰๋™ํ•˜์ง€ ์•Š๊ณ  x์ถ•๊ณผ y์ถ•์— ๋ชจ๋‘์˜ํ–ฅ์„ ์ค€๋‹ค. ์ด๋Š” ์ดˆ์  ๊ฑฐ๋ฆฌ์— ๋”ฐ๋ผ x์ถ•๊ณผ y์ถ•์ด ๋งŒ๋“ค์–ด๋‚ด๋Š” ํˆฌ์˜ํ‰๋ฉด์˜ ๋ฉด์ ์ด ๋‹ฌ๋ผ์ง€๋Š” ์ด์œ ์ด๊ธฐ๋„ ํ•˜๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์›๊ทผ ํˆฌ์˜ ๋ณ€ํ™˜์— ๋Œ€์‘ํ•˜๋Š” ํ–‰๋ ฌ์€ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•ด์•ผ ํ• ๊นŒ? ์œ ํด๋ฆฌ๋“œ ๊ณต๊ฐ„์ด ์‚ฌ์˜๊ณต๊ฐ„์œผ๋กœ ๋ณ€ํ™˜๋˜๋ฉด์„œ x, y, z์ถ•์ด ๋ชจ๋‘ ์ง๊ตํ•˜๋Š” ์ฒด๊ณ„๊ฐ€ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์›๊ทผ ํˆฌ์˜ ๋ณ€ํ™˜์— ๋Œ€์‘ํ•˜๋Š” ํ–‰๋ ฌ์€ ์ง€๊ธˆ๊นŒ์ง€ ์‚ฌ์šฉํ•œ ํ‘œ์ค€ ๊ธฐ์ €๋ฒกํ„ฐ์˜ ๋ณ€ํ™”๋ฅผ ๊ด€์ฐฐํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์ƒ์„ฑํ• ์ˆ˜ ์—†๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ ์‚ฌ์˜ ๊ณต๊ฐ„์ด ์ง€๋‹ˆ๋Š” ํŠน์ง•์„ ํŒŒ์•…ํ•ด ํ–‰๋ ฌ์˜ ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํผ์ฆ ๋‹ค๋ฃจ๋“ฏ์ด ํ•˜๋‚˜์”ฉ ํ’€์–ด๊ฐ€์•ผ ํ•œ๋‹ค. ๋ฌธ์ œ๋ฅผ ๋‹จ์ˆœํ™” ์‹œํ‚ค๊ธฐ ์œ„ํ•ด x์ถ•์„ ๋ฐฐ์ œํ•œ y์ถ•๊ณผ z์ถ•์œผ๋กœ ๊ณต๊ฐ„์„ ์„ค์ •ํ•˜๊ณ  ํˆฌ์˜ ํ‰๋ฉด์— ์ƒ์— ๋งบํžˆ๋Š” ๊ณผ์ •์„ ์ƒ๊ฐํ•ด๋ณด์ž. ๋ทฐ ๊ณต๊ฐ„์˜ ์  p๊ฐ€ ํ‰๋ฉด์— ํˆฌ์˜๋œ p(ndc)๋ผ๊ณ  ํ• ๋•Œ ํˆฌ์˜ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

P(view) = ( 0, y, z)

p(ndc) = (0, y)

 

 

๋‘ ์‚ผ๊ฐํ˜•์˜ ๋‹ฎ์€ ๊ผด ์„ฑ์งˆ๋กœ๋ถ€ํ„ฐ ๋‹ค์Œ์˜ ๋น„๊ฐ€ ์„ฑ๋ฆฝ๋œ๋‹ค.

 

์œ„ ๋น„๋ก€์‹์œผ๋กœ ๋ถ€ํ„ฐ ๋‹ค์Œ์˜ ์‹์ด ์„ฑ๋ฆฝ๋œ๋‹ค.

 

X์ถ•๊ณผ y์ถ•์€ ๊ฐ™์€ ์‹œ์•ผ๊ฐ์„ ๊ฐ€์ง€๊ณ  ์„œ๋กœ ์ง๊ตํ•˜๋ฏ€๋กœ x์ถ•๋„ ๋™์ผํ•˜๊ฒŒ ๊ตฌํ˜„์ด ๋œ๋‹ค.
 

 

ํˆฌ์˜๋œ ์ตœ์ข… ์ขŒํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

 

์ด์™€ ๊ฐ™์ด NDC ์ขŒํ‘œ๋ฅผ ๊ณ„์‚ฐํ–ˆ๋‹ค๋ฉด ๋ชจ๋‹ˆํ„ฐ์˜ ์ตœ์ข… ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ์ž‘์—…์ด ๋‚จ์•˜๋‹ค. ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด NDC ์ขŒํ‘œ๋ฅผ ํ™”๋ฉด ํ•ด์ƒ๋„๋งŒํผ ๊ฐ€๋กœ์™€ ์„ธ๋กœ๋ฅผ ๋Š˜๋ ค์ฃผ๋ฉด ์ตœ์ข… ์Šคํฌ๋ฆฐ ์ขŒํ‘œ๊ฐ€ ์™„์„ฑ๋œ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ€๋กœ์™€ ์„ธ๋กœ๋ฅผ ๋Š˜๋ฆฌ๋ฉด ๋ฌผ์ฒด๊ฐ€ ์ฐŒ๊ทธ๋Ÿฌ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ตœ์ข…ํ™”๋ฉด์ด 1:1 ๋น„์œจ์ด ์•„๋‹Œ ๊ฐ€๋กœ๊ฐ€ ๋” ๊ธด ๋น„์œจ์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ข…ํšก๋น„(๊ฐ€๋กœ ์„ธ๋กœ์˜ ๋น„์œจ)๋ฅผ ๋ฏธ๋ฆฌ ํŒŒ์•…ํ•ด, NDC ์˜์—ญ์—์„œ ๋ฏธ๋ฆฌ ์ฐŒ๊ทธ๋ŸฌํŠธ๋ฆฐ ํ›„์— ํŽผ์น˜๋Š” ๊ฒƒ์ด๋‹ค. NDC์— ์›์„ ํˆฌ์˜ํ•  ๋•Œ ์ข…ํšก๋น„๋ฅผ ๊ฑฐ๊พธ๋กœ ๋’ค์ง‘์€ ๋น„์œจ์„ ์ ์šฉํ•ด ๋จผ์ € ์ฐŒ๊ทธ๋ŸฌํŠธ๋ ค๋ณด์ž.

 

์ข…ํšก๋น„

 

์ด์ œ NDC์˜ ํˆฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ฐŒ๊ทธ๋ คํŠธ๋ ค๋ณด์ž. ์ขŒ์šฐ๋กœ ์ฐŒ๊ทธ๋ŸฌํŠธ๋ฆฌ๋ ค๋ฉด x์ถ• ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Š” ์ข…ํšก๋น„์˜ ์—ญ์ˆ˜ a/1์„ ๊ณฑํ•˜๋ฉด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ NDC ์ขŒํ‘œ๋ฅผ  p(ndc)๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ณต์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •๋œ๋‹ค.

 

 

๋”ฐ๋ผ์„œ ์ตœ์ข… NDC๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š” ์›๊ทผ ํˆฌ์˜ํ–‰๋ ฌ P๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๊ณ„ ํ• ์ˆ˜ ์žˆ๋‹ค.

 

 

์—ฌ๊ธฐ์„œ ํ•œ๊ฐ€์ง€ ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•  ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์›๊ทผ ํˆฌ์˜ํ–‰๋ ฌ์€ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•  ๋•Œ, ๋ณ€ํ™˜ํ•  ์ ์˜ z๊ฐ’์ด ํ–‰๋ ฌ์— ์‚ฌ์šฉ๋˜๋‹ค ๋ณด๋‹ˆ ๋ณ€ํ™˜ํ•  ์ ๋งˆ๋‹ค ํ•ญ์ƒ ํ–‰๋ ฌ์„ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.

 

ํ–‰๋ ฌ์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ๋ชจ๋“  ๋ณ€ํ™˜์˜ ํ–‰๋ ฌ์„ ๋ฏธ๋ฆฌ ๊ณฑํ•ด๋‘” ํ–‰๋ ฌ์„ ์ ์š”ํ•จ์œผ๋กœ์จ ๋ฐ˜๋ณต๋˜๋Š” ์—ฐ์‚ฐ๋Ÿ‰์„ ์ค„์ด๋Š” ๋ฐ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ์›๊ทผ ํˆฌ์˜ ํ–‰๋ ฌ์— ๋ณ€ํ™˜ํ•  ์ ์˜ ๊ฐ’์ด ์‚ฌ์šฉ ๋˜๋ฉด ํ–‰๋ ฌ์„ ์‚ฌ์šฉํ•˜๋Š” ์žฅ์ ์ด ์‚ฌ๋ผ์ง€๊ณ  ๋งŒ๋‹ค.

๋”ฐ๋ผ์„œ ์›๊ทผ ํˆฌ์˜ ํ–‰๋ ฌ์„ ๊ตฌ์„ฑ ํ•  ๋•Œ ์ ์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์นด๋ฉ”๋ผ ์„ค์ •๋งŒ์œผ๋กœ ํ–‰๋ ฌ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

์šฐ๋ฆฌ๊ฐ€ ์œ ๋„ํ–ˆ๋˜ ํˆฌ์˜ํ–‰๋ ฌ์„ ์‚ดํŽด๋ณด๋ฉด, ํ–‰๋ ฌ์˜ ๊ตฌ์„ฑ์š”์†Œ๋Š” ๋ชจ๋‘ -v(z)๊ฐ’์„ ๋ถ„๋ชจ๋กœ ํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํ–‰๋ ฌ์—์„œ -v(z)๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ณ  ๋Œ€์‹  ํ–‰๋ ฌ์˜ ๊ฒฐ๊ณผ๊ฐ’์—์„œ -v(z)๊ฐ’์„ ๋‚˜๋ˆ„์–ด์ฃผ๋ฉด ์–ด๋–จ๊นŒ?

 

NDC ๊ฐ’์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ณผ์ •์„ ๋‘๋‹จ๊ณ„๋กœ ๋ถ„๋ฆฌํ•ด๋ณด์ž. ์ฒซ๋ฒˆ์งธ๋กœ ์•ž์„œ์„ค๊ณ„ํ•œ ์›๊ทผ ํˆฌ์˜ ํ–‰๋ ฌ P๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜๊ณ  ํ–‰๋ ฌ์— ๊ณฑํ•˜๋Š” ๋ฒกํ„ฐ์˜ ๊ฐ’์„ v๋กœ ์ง€์ •ํ•˜์ž ๋ฒกํ„ฐ v๋Š” ๋ทฐ์ขŒํ‘œ๊ณ„์™€ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.

 

 

์ด ํ–‰๋ ฌ ๊ณฑ์—์„œ ์ƒ์„ฑ๋œ ๋ฒกํ„ฐ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์–ป์–ด์•ผ ํ•  NDC ์ขŒํ‘œ์™€๋Š” ๋‹ค๋ฅด์ง€๋งŒ ์›๊ทผ ํˆฌ์˜ ํ–‰๋ ฌ P์ ๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ์นด๋ฉ”๋ผ ์„ค์ • ๊ฐ’์œผ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋ชจ๋“  ์ ์— ๋Œ€ํ•ด์„œ ๋ณดํŽธ์ ์œผ๋กœ ์„ค๊ณ„๋œ ์›๊ทผ ํˆฌ์˜ ํ–‰๋ ฌ P๋ฅผ ์‚ฌ์šฉ ํ• ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์›๊ทผ ํˆฌ์˜ ํ–‰๋ ฌ P๋กœ ๋ณ€ํ™˜๋˜๋Š” ์ขŒํ‘œ๊ณ„๋ฅผ ํด๋ฆฝ ์ขŒํ‘œ๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ ํด๋ฆฝ์ขŒํ‘œ์˜ ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐ๋œ๋‹ค.

 

๋‘๋ฒˆ์งธ๋กœ๋Š” ํด๋ฆฝ์ขŒํ‘œ์˜ ์  P์˜ ๊ฐ์š”์†Œ๋ฅผ p์˜ ์„ธ๋ฒˆ์จฐ ๊ฐ’์ธ -v(z)๊ฐ’์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” NDC ์˜ ์ขŒํ‘œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

๋™์ฐจ ์ขŒํ‘œ๊ณ„

NDC๋Š” 2์ฐจ์› ํ‰๋ฉด์˜ ์ขŒํ‘œ์ง€๋งŒ ๋ชจ๋“  ์ ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์›๊ทผ ํˆฌ์˜ํ–‰๋ ฌ์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ณ„์‚ฐ ๊ณผ์ •์„ ๋‘ ๋‹จ๊ณ„๋กœ ๊ตฌ๋ถ„ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฒกํ„ฐ์˜ ๊ฐ’๋„ ํ•œ์ฐจ์› ๋†’ํ˜”๋‹ค. ์ด๋ ‡๊ฒŒ ํ•œ ์ฐจ์› ๋†’์ธ ๋ฒกํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ฒŒ์ž„์ œ์ž‘์—์„œ๋Š” ๋ณดํ†ต ๋™์ฐจ ์ขŒํ‘œ๊ณ„๋ผ๊ณ  ํ•œ๋‹ค. ๋™์ฐจ ์ขŒํ‘œ๊ณ„์˜ ๋™์ฐจ๋Š” ๋ชจ๋“  ํ•ญ์˜ ์ฐจ์ˆ˜๊ฐ€ ๊ฐ™์Œ์„ ์˜๋ฏธํ•˜๋Š” ์ˆ˜ํ•™ ์šฉ์–ด๋‹ค.

์•ž์„œ์„œ ์›๊ทผ ํˆฌ์˜์„ ์œ„ํ•ด ํ•˜๋‚˜์˜ ์ ์œผ๋กœ ๋ชจ์ด๋Š” ์‚ฌ๊ฐ๋ฟ”์˜ ๊ณต๊ฐ„์„ ์‚ฌ์˜ ๊ณต๊ฐ„์ด๋ผ ๋ถˆ๋ ธ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์‚ฌ์˜ ๊ณต๊ฐ„๊ณผ ๋™์ฐจ์ขŒํ‘œ๊ณ„๋Š” ์–ด๋–ค ์—ฐ๊ด€์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž.

 

 

 

์‚ฌ์šฉ ๊ณต๊ฐ„์—์„œ ์ ์ด ํ‰ํ–‰์ด๋™ ํ• ๋•Œ ํˆฌ์˜๋œ ์ ์˜ ๋ณ€ํ™”

 

NDC ์ขŒํ‘œ๊ฐ’์€ ์‚ฌ์˜ ๊ณต๊ฐ„์˜ ๋งˆ์ง€๋ง‰ ์ฐจ์› ๊ฐ’ z์— ๋ฐ˜๋น„๋ก€๋กœ ์˜ํ–ฅ์„ ๋ฐ›์œผ๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•  ๊ฒƒ์ด๋‹ค.

 

 

NDC๊ณต๊ฐ„์˜ ์ง์„ ์ด ์‹ค์€ ์‚ฌ์˜ ๊ณต๊ฐ„์˜ ์ ๋“ค์ด ํˆฌ์˜๋˜์–ด ๋งŒ๋“ค์–ด ์กŒ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.

๊ทธ๋ ‡๋‹ค๋ฉด ์ง์„ ์˜ ๋ฐฉ์ •์‹์„ ์‚ฌ์˜ ๊ณต๊ฐ„์˜ ์ขŒํ‘œ๋กœ ํ‘œํ˜„ํ•ด๋ณด์ž.

์ด ์‹์˜ ์–‘๋ฉด์— z'๋ฅผ ๊ณฑํ•˜๋ฉด ์ƒ์ˆ˜๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ  ์„ธ ๋ฏธ์ง€์ˆ˜์˜ ์ฐจ์ˆ˜๊ฐ€ ๋ชจ๋‘ 1์ฐจ์‹์œผ๋กœ ๋™์ผํ•œ ์ˆ˜์‹์ด ๊ตฌ์„ฑ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ฏธ์ง€์ˆ˜์— ๋Œ€ํ•œ ์ง€์ˆ˜๊ฐ€ ๋ชจ๋‘ ๋™์ผํ•œ ๋ฐฉ์ •์‹์„ ๋™์ฐจ๋ฐฉ์ •์‹์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ์ด๋Ÿฐ ์ด์œ ๋กœ ์‚ฌ์˜ ๊ณต๊ฐ„์ด ์‚ฌ์šฉํ•˜๋Š” ์ขŒํ‘œ๊ณ„๋ฅผ ๋™์ดค ์ขŒํ‘œ๊ณ„๋ผ๊ณ  ํ•œ๋‹ค.

 

์›๊ทผ ํˆฌ์˜ํ–‰๋ ฌ์„ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ„์‚ฐ ๊ณผ์ •์„ ๋‘ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ  ์ง„ํ–‰ํ–ˆ๋Š”๋ฐ, ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋กœ ๊ตฌํ•œ ์ขŒํ‘œ๋ฅผ ํด๋ฆฝ์ขŒํ‘œ๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ ์ด๋Š” ํˆฌ์˜ ๋˜๊ธฐ ์ „์˜ ์‚ฌ์˜ ๊ณต๊ฐ„์˜ ์ขŒํ‘œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์›๊ทผ ํˆฌ์˜ ๋ณ€ํ™˜์—์„œ ๋“ฑ์žฅํ•œ ์‚ฌ์˜ ๊ณต๊ฐ„, ํด๋ฆฝ๊ณต๊ฐ„, ๋™์ฐจ๊ณต๊ฐ„์€ ๋ชจ๋‘ ๋™์ผํ•œ ๊ณต๊ฐ„์„ ๊ฐ€๋ฆฌํ‚ค๊ณ , ํด๋ฆฝ์ขŒํ‘œ, ๋™์ฐจ์ขŒํ‘œ, ์—ญ์‹œ ๋™์ผํ•œ ์ขŒํ‘œ๊ณ„๋ฅผ ๊ฐ€๋ฅดํ‚จ๋‹ค.

 

์‚ฌ์˜๊ณต๊ฐ„์˜ ์ ์ด ์นด๋ฉ”๋ผ๋ถ€ํ„ฐ ๋ฉ€์–ด์งˆ์ˆ˜๋ก ํˆฌ์˜๋œ NDC ์ขŒํ‘ฏ๊ฐ’์€ ์›์  (0, 0)์— ๊ฐ€๊นŒ์›Œ์ง„๋‹ค. NDC์˜ ์›์ ์€ ํšŒํ™”์˜ ํˆฌ์‹œ ์›๊ทผ ๊ธฐ๋ฒ•์—์„œ ์ด์•ผ๊ธฐํ•˜๋Š” ์†Œ์‹ค์ ์— ํ•ด๋‹นํ•œ๋‹ค.

 

๊นŠ์ด ๊ฐ’

3์ฐจ์› ๊ณต๊ฐ„์—์„œ ๋‹ค์ˆ˜์˜ ๋ฌผ์ฒด๋ฅผ ๊ทธ๋ฆด ๋•Œ ๊ทธ๋ฆฌ๋Š” ์ˆœ์„œ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋ฆฌ๋ฉด ์–ด๋–ค๋ฌผ์ฒด๊ฐ€ ์•ž์—์žˆ๋Š”์ง€ ๋’ค์—์žˆ๋Š”์ง€ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.

 

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€, ๋ฌผ์ฒด๊ฐ€ ์นด๋ฉ”๋ผ๋กœ๋ถ€ํ„ฐ ์–ผ๋งˆ๋‚˜ ๋–จ์–ด์ ธ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•ด ์•ž์— ์žˆ๋Š” ๋ฌผ์ฒด๋ฅผ ๋‚˜์ค‘์— ๊ทธ๋ฆฌ๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

NDC๊ณต๊ฐ„์„ 3์ฐจ์›์œผ๋กœ ํ™•์žฅํ•ด๋ณด์ž.

 

 

 

์šฐ๋ฆฌ๊ฐ€ ์นด๋ฉ”๋ผ์— ๋ถ€์—ฌํ•œ ์‹œ์•ผ๊ฐ์€ ๊นŠ์ด์™€ ๋ฌด๊ด€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์นด๋ฉ”๋ผ์— ์ถ”๊ฐ€ ์†์„ฑ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ๊ฐ๊ฐ ๊ทผํ‰๋ฉด(near plane) ๊ณผ ์›ํ‰๋ฉด (far plane)์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์นด๋ฉ”๋ผ ์‹œ์•ผ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์‚ฌ์˜๊ณต๊ฐ„์„ ๊ทผํ‰๋ฉด๊ณผ ์›ํ‰๋ฉด์œผ๋กœ ์ž˜๋ผ์ฃผ๋ฉด ์‚ฌ๊ฐ๋ฟ”์—์„œ ๋พฐ์กฑํ•œ ๋ถ€๋ถ„์ด ์ž˜๋ฆฐ ํ˜•ํƒœ๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ ์ด๋ฅผ ์ ˆ๋‘์ฒด๋ผ๊ณ  ํ•œ๋‹ค.

 

 

 

NDC๊นŠ์ด๊ฐ’์€ ๋ฉ€์–ด์งˆ์ˆ˜๋ก ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 3์ฐจ์› NDC๊ณต๊ฐ„์€ ์™ผ์†์ขŒํ‘œ๊ณ„๋ฅผ ํ˜•์„ฑํ•œ๋‹ค.

directX์—์„œ๋Š” 0 ~ 1์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

๊ธฐ์กด ์›๊ทผ ํˆฌ์˜ ํ–‰๋ ฌ์€ ๋‹ค๋ฅธ ํ–‰๋ ฌ๊ณผ ์˜ ๊ณฑ์„ ์œ„ํ•ด 3x3 ํฌ๊ธฐ์˜ ํ–‰๋ ฌ์„ ์ธ์œ„์ ์œผ๋กœ 4x4 ํฌ๊ธฐ๋กœ ๋Š˜๋ ธ๋Š”๋ฐ, ์ด์ œ๋Š” ๊นŠ์ด ๊ฐ’์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋“  ํ–‰๋ ฌ์„ ์•Œ์ฐจ๊ฒŒ ํ™œ์šฉํ• ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

๊ธฐ์กดํ–‰๋ ฌ์—์„œ ์“ธ๋ชจ ์—†๋˜ ํ•œ ํ–‰์„ ์‚ฌ์šฉํ•ด ๊นŠ์ด ๊ฐ’ ๊นŒ์ง€ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์ข… ํ–‰๋ ฌ์„ ๊ตฌํ•ด๋ณด์ž

 

 

 

๊นŠ์ด๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” 3ํ–‰์€ ๋„ค ๊ฐœ์˜ ๋ฏธ์ง€์ˆ˜ I,j,k,l๋กœ ์ง€์ • ํ–ˆ๋‹ค. ๊นŠ์ด ๊ฐ’์€ ๋ทฐ ์ขŒํ‘œ๊ณ„์˜ x์ถ•๊ณผ y์ถ•์— ๊ฐ๊ฐ ์ง๊ต ํ•˜๋ฏ€๋กœ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์•ž์˜ ๋‘ ์š”์†Œ i์™€ j๊ฐ’์€ 0์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.

๋‘๊ฐœ์˜ ๋ฏธ์ง€์ˆ˜ k,l ์ด ๋‚จ๋Š”๋ฐ, ์ด๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘๊ฐœ์˜ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

๋‘ ๋ฏธ์ง€์ˆ˜๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์นด๋ฉ”๋ผ์— ์„ค์ •๋œ ๊ทผํ‰๋งŒ๊ณผ ์›ํ‰๋ฉด์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•ด๋ณด์ž. ์นด๋ฉ”๋กœ๋ถ€ํ„ฐ ๊ทผํ‰๋ฉด๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ n, ์›ํ‰๋ฉด๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ f๋กœ ์„ค์ •ํ•˜์ž.

 

์นด๋ฉ”๋ผ ์ขŒํ‘œ ์ค‘์‹ฌ์œผ๋กœ๋ถ€ํ„ฐ ์‹œ์„ ๋ฐฉํ–ฅ์œผ๋กœ n๋งŒํผ ์ด๋™ํ•œ ๊ทผํ‰๋ฉด ์ƒ์— ์œ„์น˜ํ•œ ์ ์„ ์ƒ๊ฐํ•ด๋ณด์ž. ๋ทฐ ๊ณต๊ฐ„์—์„œ ์นด๋ฉ”๋ผ ์‹œ์„ ๋ฐฉํ–ฅ์€ -z์ถ•์ด๋ฏ€๋กœ ๋ทฐ ๊ณต๊ฐ„์—์„œ ์ด ์ ์˜ ์ขŒํ‘œ๋Š” (0, 0, -n, 1)์ด ๋œ๋‹ค. ์ด๋Š” ๊นŠ์ด๊ฐ’์˜ ์‹œ์ž‘ ์ง€์ ์ด๊ธฐ ๋•Œ๋ฌธ์— NDC์ขŒํ‘œ (0, 0, -1)์— ๋Œ€์‘ํ•œ๋‹ค. ๋™์ผํ•˜๊ฒŒ ๋ทฐ ๊ณต๊ฐ„์˜ ์›ํ‰๋ช…์‚ฐ์˜ ์ขŒํ‘œ๋„ ๋Œ€์‘ํ•œ๋‹ค.

 

์›๊ทผ ํˆฌ์˜ ํ–‰๋ ฌ์— ๋ทฐ ๊ณต๊ฐ„์˜ ์ ์„ ๊ณฑํ•œ ๊ฒฐ๊ณผ๋Š” ํด๋ฆฝ์ขŒํ‘œ๊ฐ€ ๋œ๋‹ค. ๊ทผ ํ‰๋ฉด์˜ ์ ์„ p1, ์›ํ‰๋ฉด์˜ ์ ์„ p2๋ผ๊ณ  ํ• ๋–„ ์ด๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐ๋œ๋‹ค.

 

 

 

์•„์ง ์›๊ทผ ํˆฌ์˜ ํ–‰๋ ฌ k์™€ l์„ ๋ชจ๋ฅด๊ธฐ ๋–„๋ฌธ์— ํด๋ฆฝ์ขŒํ‘œ์˜ ์„ธ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๊ณ„์‚ฐ ํ• ์ˆ˜ ์—†๋‹ค. ํ•˜์ง€๋งŒ ํด๋ฆฝ์ขŒํ‘œ์˜ ๋„ค๋ฒˆ์งธ ์š”์†Œ๋กœ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋‚˜๋ˆˆ ๊ฐ’์€ NDC์ขŒํ‘œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ , NDC์ขŒํ‘œ์˜ z๊ฐ’์€ ๊ฐ๊ฐ -1, 1์ž„์„ ์•Œ๊ณ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ทผํ‰๋ฉด์˜ ํด๋ฆฝ์ขŒํ‘œ๋Š” (0, 0, -n, n)์ด ๋˜๊ณ , ์›ํ‰๋ฉด์˜ ํด๋ฆฝ์ขŒํ‘œ๋Š” (0, 0, f, f)์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค์Œ  ์‹์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

์ด๋กœ ๋ถ€ํ„ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฐ๋ฆฝ๋ฐฉ์ •์‹์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

-kn + l = -n

-kf + l = f

 

๊ฐ๊ฐ์„ ํ’€๋ฉด ๋‹ค์Œ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋ฅผ ์ ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ๊ฐ™์€ ์ตœ์ข… ํˆฌ์˜ ํ–‰๋ ฌ์„ ๊ตฌํ• ์ˆ˜ ์žˆ๋‹ค.

๋Œ“๊ธ€