๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Graphic

OpenGL๋กœ ๋ฐฐ์šฐ๋Š” 3์ฐจ์› ์ปดํ“จํ„ฐ ๊ทธ๋ž˜ํ”ฝ์Šค::6์žฅ&์—ฐ์Šต๋ฌธ์ œ

by ๋„์บ๋ฆฌ๐Ÿฑ 2020. 7. 26.
๋ฐ˜์‘ํ˜•

โ— 6์žฅ ์—ฐ์Šต๋ฌธ์ œ

1. ๊ทœ์น™์ ์ธ ๊ณก๋ฉด์ผ์ˆ˜๋ก ํ‘œ๋ฉด์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ๋”์šฑ ๋งŽ์€ ์ˆ˜์˜ ๋‹ค๊ฐํ˜•์ด ์‚ฌ์šฉ๋œ๋‹ค. (True/False)

2. 3์ฐจ์› ๊ณต๊ฐ„์—์„œ ์ž„์˜์˜ ๋„ค ์ ์„ ์—ฐ๊ฒฐํ•œ ๋‹ค๊ฐํ˜•์€ ํ•ญ์ƒ ํ‰๋ฉด์ด๋‹ค. (True/False)

    → 3 ์ ์„ ์—ฐ๊ฒฐํ•œ ๋‹ค๊ฐํ˜•์ด ํ•ญ์ƒ ํ‰๋ฉด์ด๊ณ , ๋น› ๊ณ„์‚ฐ๋“ฑ์„ ํ•  ๋…ธ๋ฉ€ ๋ฒกํ„ฐ๊ฐ€ ํ‰๋ฉด์—์„œ ์ •ํ™•ํžˆ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์‚ผ๊ฐํ˜•๋ชจ์–‘์„ ๋งŽ์ด ์“ด๋‹ค.

3. ์˜ค๋ฅธ์† ์ขŒํ‘œ๊ณ„์™€ ์™ผ์† ์ขŒํ‘œ๊ณ„์˜ z์ถ• ๋ฐฉํ–์€ ํ•ญ์ƒ ์„œ๋กœ ๋ฐ˜๋Œ€์ด๋‹ค. (True/False) 

4. ๋ฒกํ„ฐ A,B,C๊ฐ€ ์žˆ์„ ๋•Œ C= 5A+B/3์œผ๋กœ ํ‘œ์‹œ๋œ๋‹ค๋ฉด C๋Š” A,B์™€ ์„ ํ˜•๋…๋ฆฝ์ด๋‹ค. (True/False)

    → ์„ ํ˜•๋…๋ฆฝ์€ ๋ˆˆ์œผ๋กœ ๋ณผ๋•Œ ์ง๊ตํ•˜๋Š” ๊ฒƒ ๊ฐ™์€ ๊ฑธ๋กœ, ์ €๋ ‡๊ฒŒ ํ‘œํ˜„ ๋˜์ง€ ์•Š๋Š”๋‹ค.

5. ๋Œ€๊ฐ์„  ์š”์†Œ๊ฐ€ 1,2,1,1์ธ ํฌ๊ธฐ ์กฐ์ ˆ ํ–‰๋ ฌ์€ ๊ท ๋“ฑ ํฌ๊ธฐ ์กฐ์ ˆ์— ํ•ด๋‹นํ•œ๋‹ค. (True/False)

    → ๊ท ๋“ฑ ํฌ๊ธฐ ์กฐ์ ˆ์€ ์Šค์ผ€์ผ ๊ฐ’์ด ๊ท ๋“ฑํžˆ ๋“ค์–ด๊ฐ€์•ผ๋˜๋Š”๋ฐ y ๋งŒ ์Šค์ผ€์ผ ๊ฐ’์ด 2์ด๋‹ค. 

6. 3์ฐจ์› ํšŒ์ „ ํ–‰๋ ฌ์€ ์ผ๋ฐ˜์ ์œผ๋กœ (x,y,z) ์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ์ •์˜๋œ๋‹ค. (True/False)

    → 3์ฐจ์› ํšŒ์ „ ํ–‰๋ ฌ์€ x,y,z ์ถ• ๊ธฐ์ค€ ๊ทธ ์ ์„ ํ–ฅํ•œ ๋ฒกํ„ฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •์˜๋œ๋‹ค.

7. ๊ฐ•์ฒด ๋ณ€ํ™˜์€ ์œ ์‚ฌ ๋ณ€ํ™˜์„ ํฌํ•จํ•œ๋‹ค. (True/False)

    → ์œ ์‚ฌ๋ณ€ํ™˜์ด ๊ฐ•์ฒด ๋ณ€ํ™˜์„ ํฌํ•จ

8. ๋ชจ๋ธ ์ขŒํ‘œ๋กœ ํ‘œํ˜„๋œ ๋ฌผ์ฒด ์ •์ ์— ์ง€์—˜์˜ ๋ชจ๋ธ ๋ทฐ ํ–‰๋ ฌ์„ ๊ณฑํ•˜๋ฉด ์‹œ์  ์ขŒํ‘œ๋กœ ๋ฐ”๋€๋‹ค. (True/False)

9. ์ง€์—˜์˜ ๋ช…๋ น์–ด ์ˆœ์„œ๋Š” ๋ชจ๋ธ ์ขŒํ‘œ๊ณ„๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ์ˆœ์„œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋œ๋‹ค. (True/False)

    → ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ˜๋Œ€์˜ ์ˆœ์„œ๋กœ ์ง€์—˜ ๋ช…๋ น์–ด ์ˆœ์„œ๊ฐ€ ์ง€์ •๋œ๋‹ค. ์œ„์˜ ๊ธฐ์ค€์ด๋ผ๋Š” ๋ง์ด ์• ๋งคํ•˜๋‹ค. ๊ทธ๋ž˜๋„ ํ•ด์„ค์„ ๋ง๋ถ™์ด์ž๋ฉด ๋งŒ์•ฝ ๋ชจ๋ธ ์ขŒํ‘œ๊ณ„์—์„œ, 1) x์ถ•์œผ๋กœ 2 ์ด๋™, 2) z์ถ• 45๋„ ์ด๋™ ์ด๋ ‡๊ฒŒ๋ผ๋ฉด gl ๋ช…๋ น์–ด๋กœ๋Š” rotate → translate ์ด๋‹ค.

10. glPushMatrix( ) ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ˜„์žฌ CTM ์œ„์— ๋ณต์‚ฌ๋œ CTM์ด ์‚ฝ์ž…๋œ๋‹ค. (True/False) 

11. ๊ณ„์ธต ๊ตฌ์กฐ์˜ ์•„๋ž˜๋กœ ๋‚ด๋ ค์˜ค๋ฉด์„œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜๋Š” glPopMatrix( )ํ•จ์ˆ˜๋‹ค. (True/False)

    →push๋‹ค.

12. ์—ญ๋ฐฉํ–ฅ ํ‚ค๋„ค๋งˆํ‹ฑ์Šค์—์„œ๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋‚ด๋ ค์˜ค๋ฉด์„œ ๋ชจ๋“  ๊ด€์ ˆ์˜ ๊ฐ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•ด์•ผํ•œ๋‹ค. (True/False

    → ์ˆœ๋ฐฉํ–ฅ ํ‚ค๋„ค๋งˆํ‹ฑ์Šค๊ฐ€ ๊ฐ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๊ฑฐ๊ณ , ์—ญ๋ฐฉํ–ฅ์€ ์ปดํ“จํ„ฐ๊ฐ€ ์•Œ์•„์„œ ๊ณ„์‚ฐํ•œ๋‹ค.

 

13. ๋ฒกํ„ฐ์— ์œ„์น˜ ์ •๋ณด๋ฅผ ํฌํ•จ์‹œํ‚จ ๊ฒƒ์€ (์–ดํŒŒ์ธ)๊ณต๊ฐ„์ด๋‹ค.

    →๋ฒกํ„ฐ์˜ ๊ฐœ๋…์— ์ ์˜ ๊ฐœ๋…์„ ๋”ํ•œ ๊ฒƒ. 

14. ๋‘ ์  A,B๋ฅผ ์ž‡๋Š” ์„ ๋ถ„ V๋ฅผ ๋ฒกํ„ฐ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ((1-t)A + tB (0 <= t <=1) )๊ฐ€ ๋œ๋‹ค.

        →์ ์˜ ๊ฐœ๋…์ด ๋‚˜์˜ค๊ณ  ์„ ๋ถ„์„ ๋ฒกํ„ฐ๋กœ ํ‘œํ˜„ํ•ด์„œ ์ ๊ณผ ์ ์˜ ๋นผ๊ธฐ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

15. ๋™์ฐจ ์ขŒํ‘œ(4,1,2,4)๋Š” 3์ฐจ์› ๊ณต๊ฐ„ ์ขŒํ‘œ (1,1/4,1/2,1)์— ํ•ด๋‹นํ•œ๋‹ค.

16. 3์ฐจ์› ๊ณต๊ฐ„ ์ขŒํ‘œ(5,3,2)๋Š” ๋™์ฐจ์ขŒํ‘œ(5,3,2,1)์— ํ•ด๋‹นํ•œ๋‹ค.

17. ์  P๋ฅผ(x,y,z) ์ถ• ๋ฐฉํ–ฅ์œผ๋กœ (2,1,5)๋งŒํผ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•œ 4x4๋ณ€ํ™˜ ํ–‰๋ ฌ์€(

)์ด๋‹ค.

18. 2์ฐจ์› ์  P๋ฅผ ์›์  ์ค‘์‹ฌ์œผ๋กœ 30๋„ ๋งŒํผ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•˜๊ธฐ ์œ„ํ•œ 3*3 ๋ณ€ํ™˜ ํ–‰๋ ฌ์€ (

)์ด๋‹ค.

19. 2์ฐจ์› ๊ณต๊ฐ„์ƒ์˜ ํ•œ ์ ์„ x ์ถ•์œผ๋กœ 2, y ์ถ•์œผ๋กœ 3๋งŒํผ ์ด๋™ํ•œ ํ›„, ์ด๋™๋œ ์ ์„ ์›์  ๊ธฐ์ค€์œผ๋กœ x์ถ•์œผ๋กœ 1/2๋ฐฐ, y์ถ•์œผ๋กœ 2๋ฐฐ ํฌ๊ธฐ ์กฐ์ ˆํ•˜๋Š” ์ž‘์—…์€ ๋™์ฐจ ์ขŒํ‘œ๊ณ„์—์„œ์˜ 3*3 ๋ณตํ•ฉ ํ–‰๋ ฌ(

)๋กœ ํ‘œํ˜„๋œ๋‹ค.

20. 2์ฐจ์› ๊ณต๊ฐ„์ƒ์˜ ํ•œ ์ ์„ ์›์  ๊ธฐ์ค€์œผ๋กœ x์ถ•์œผ๋กœ 1/2๋ฐฐ, y์ถ•์œผ๋กœ 2๋ฐฐ ํฌ๊ธฐ ์กฐ์ ˆํ•œ ํ›„, ์ด๋ฅผ x์ถ•์œผ๋กœ 2, ์ถ•์œผ๋กœ 3๋งŒํผ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•œ ๋ณตํ•ฉ ํ–‰๋ ฌ์€(

)์ด๋‹ค.

21. 2์ฐจ์› ๊ณต๊ฐ„์ƒ์˜ ๋ณ€ํ™˜์€ ๋™์ฐจ ์ขŒํ‘œ๊ณ„์—์„œ 3*3 ํ–‰๋ ฌ๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ์ขŒํ‘œ(4,6)์— ์ค‘์‹ฌ์ ์„ ๋‘” ์‚ฌ๊ฐํ˜•์ด ํ•˜๋‚˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ , ์ด ์‚ฌ๊ฐํ˜•์„ ์ค‘์‹ฌ์ ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ 90๋„ ํšŒ์ „์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋ณตํ•ฉ ํ–‰๋ ฌ์€(

)์ด๋‹ค.

22. ๋ณตํ•ฉ ๋ณ€ํ™˜์˜ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•œ ํ•˜๋‚˜์˜ ํ–‰๋ ฌ์„ (๋ณตํ•ฉํ–‰๋ ฌ)์ด๋ผ ํ•œ๋‹ค.

23. ๋ฌผ์ฒด ๋‚ด๋ถ€๋“  ์™ธ๋ถ€๋“ , ํšŒ์ „์˜ ์ค‘์‹ฌ์ด ๋˜๋Š” ์ ์„(ํ”ผ๋ด‡)์ด๋ผ ํ•œ๋‹ค.

24. ๋ฌผ์ฒด ์ •์ ์— ์ด๋™(T),ํฌ๊ธฐ์กฐ์ ˆ(S),ํšŒ์ „(R) ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ€ํ–ˆ์„ ๋•Œ ๊ฒฐ๊ณผ์ ์ธ ๋ณตํ•ฉ ํ–‰๋ ฌ์€ C = (RST)๋กœ ํ‘œ์‹œ๋œ๋‹ค.

25. ์นด๋ฉ”๋ผ ๋˜๋Š” ์‹œ์ ์ด ๋ฐ”๋ผ๋ณด๋Š” ๊ณณ์„ (ํฌ์ปค์Šค)๋ผ๊ณ  ํ•œ๋‹ค.

26. ์‹œ์  ์ขŒํ‘œ๊ณ„์˜ z ์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ์นด๋ฉ”๋ผ๊ฐ€ ๋„๋Š” ๊ฒƒ์„(๋กค๋ง)์ด๋ผ ํ•œ๋‹ค.

27. gluLookAt() ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ eyex, atx, upx๋Š” ๊ฐ๊ฐ(์‹œ์ x),(์ดˆ์ x),(์นด๋ฉ”๋ผ ์ƒํ–ฅ๋ฒกํ„ฐx)์„ ์˜๋ฏธํ•œ๋‹ค.

28. ๋ทฐ ํ–‰๋ ฌ์€ V, ๋ชจ๋ธ ํ–‰๋ ฌ์€ M, ์ •์ ์€P๋ผ ํ•˜๋ฉด ์ง€์—˜์—์„œ ์‹œ์  ์ขŒํ‘œ P' = (VM)P ์ด๋‹ค.

29. ์ธํ„ฐ๋„ท์—์„œ Nate Robins์˜ ์˜คํ”ˆ์ง€์—˜ ์‚ฌ์ดํŠธ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ง€์—˜์˜ ๋ชจ๋ธ ๋ณ€ํ™˜๊ณผ ์‹œ์  ๋ณ€ํ™˜ ๋ฐ๋ชจ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ•ด ์‹œ์—ฐํ•ด ๋ณด๋ผ. https://user.xmission.com/~nate/tutors.html

 

Nate Robins - OpenGL - Tutors

(click on image to enlarge it) The projection tutorial program (shown at right) demonstrates how the many types of projection transformations work. A command panel is included for gluPerspective(), glOrtho() and glFrustum(). In addition, the viewing transf

user.xmission.com

→ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉฐ ํ˜น์‹œ๋ผ๋„ ๊ท€์ฐฎ๋‹ค๊ณ  ๋„˜์–ด๊ฐ€์ง€ ๋ง๊ณ  ๊ฐ€์„œ zip ํŒŒ์ผ ๋‹ค์šด๋ฐ›์•„์„œ ์‹คํ–‰ํŒŒ์ผ ๋ฐ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ์—ฌ๋Ÿฌ ์ˆซ์ž ๋ณ€์ˆ˜๋“ค๋„ ์•„์ง ๊ฐ์ด ์˜ค์ง€ ์•Š์œผ๋‹ˆ ์‰ฝ๊ฒŒ ์กฐ์ ˆํ•˜๋ฉด์„œ ์ด๋Ÿฐ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š”๊ตฌ๋‚˜~ ํ•˜๋ฉด์„œ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๊ณ„์† ์ฐธ๊ณ  ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. 

30. ๋ณธ๋ฌธ์˜ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ๋ณ€ํ˜•ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฐ ๋‹ค์Œ, ๊ทธ์— ๊ด€ํ•ด ์„ค๋ช…ํ•ด ๋ณด๋ผ.

31. glLoadIdentity() ๋ช…๋ น์„ ํ˜ธ์ถœํ•œ ํ›„, ๋ฌผ์ฒด์— S,R๋ณ€ํ™˜์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ€ํ•œ ๊ฒฐ๊ณผ CTM์˜ ๋‚ด์šฉ์€ ์–ด๋–ป๊ฒŒ ํ‘œ์‹œ๋˜๋Š”์ง€ ์„ค๋ช…ํ•ด ๋ณด๋ผ.

CTM = I

CTM= CTMS =IS

CTM=CTMR=ISR

 

32. ๋‹ค์Œ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด์„œ๋Š” glPopMatrix(),glRotatef( , , , ),glTranslatef( , , , ), glScalef( , , , ), glLoadIdentity(),glPushMatrix(),glutSolidSphere()๋“ฑ์˜ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ชจ๋ธ ๋ทฐ ํ–‰๋ ฌ ๊ฐ’์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” glMatrixMode(GL_MODELVIEW) ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, glutSolidSphere() ๋ช…๋ น์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ƒ๋žตํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

    32-1) ํ˜„์žฌ ์ „์—ญ ์ขŒํ‘œ๊ณ„๊ฐ€ ๋กœ๋ด‡ ๋ชธ์ฒด ์ค‘์•™์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋ชธ์ฒด ์›๊ตฌ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ช…๋ น์–ด๋ฅผ ์„ธ     ์ค„๋กœ ์จ๋ณด๋ผ.

    glMatrixMode(GL_MODELVIEW);

    glLoadIdentity();

    glSolidSphere(5);

   

    32-2) ํ˜„์žฌ ๋ชธ์ฒด ์ค‘์‹ฌ ์ขŒํ‘œ๊ณ„๋ฅผ ์Šคํƒ์— ์ €์žฅํ•œ ํ›„, y์ถ• ๋ฐฉํ–ฅ์œผ๋กœ 10๋งŒํผ ์ด๋™ํ•˜์—ฌ ๋จธ๋ฆฌ ์›๊ตฌ๋ฅผ ๊ทธ๋ฆฌ๋Š”     ๋ช…๋ น์„ ์„ธ ์ค„๋กœ ์จ๋ณด๋ผ.

    glPushMatrix();

    glTranlatef(0,10,0);

    glSolidSphere(2);

 

    32-3) ํ˜„์žฌ ๋จธ๋ฆฌ ์ค‘์‹ฌ ์ขŒํ‘œ๊ณ„๋ฅผ ์ €์žฅํ•œ ํ›„, ๋จธ๋ฆฌ ์ค‘์‹ฌ์œผ๋กœ ๋ถ€ํ„ฐ y์ถ•์œผ๋กœ -4๋งŒํผ ์ด๋™ํ•˜๊ณ , ๋‹ค์‹œ z ์ถ•์„         ๊ธฐ์ค€์œผ๋กœ x ์ถ•์„ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ 4๋„ ํšŒ์ „ ์‹œํ‚จ ๋‹ค์Œ ์—ฌ๊ธฐ์— ์›๊ตฌ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ช…๋ น์„ 4์ค„๋กœ ์ž‘์„ฑํ•ด ๋ณด๋ผ.

    glPushMatrix();

    glRotatef(4,0,0,1);

    glTranlstef(0,-4,0);

    glutSolidSphere(1);

 

 

โ— 6์žฅ ๋‚ด์šฉ์ •๋ฆฌ

01. ์ขŒํ‘œ๊ณ„

 

02. ๊ธฐํ•˜ ๋ณ€ํ™˜

03. ์ง€์—˜์˜ ๋ชจ๋ธ ๋ณ€ํ™˜

04. ์ง€์—˜์˜ ์‹œ์  ๋ณ€ํ™˜

์ •๋ฆฌํŒŒ์ผ

6์žฅ ์ •๋ฆฌ.pptx
2.68MB

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€