Microsoft Word - cg08-final-answer.doc

Similar documents
Microsoft Word - cg07-final.doc

Microsoft Word - cg07-midterm.doc

Microsoft Word - cg09-final-answer.doc

단국대학교멀티미디어공학그래픽스프로그래밍기말고사 (2012 년봄학기 ) 2012 년 6 월 12 일학과학번이름 기말고사 담당교수 : 단국대학교멀티미디어공학전공박경신 l 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤

단국대학교멀티미디어공학그래픽스프로그래밍중간고사 (2011 년봄학기 ) 2011 년 4 월 26 일학과학번이름 중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 l 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤

Microsoft PowerPoint - lecture17-ch8.ppt

Microsoft PowerPoint - 13prac.pptx

Open GL

PowerPoint 프레젠테이션

Microsoft PowerPoint - lecture19-ch8.ppt

Microsoft PowerPoint - lecture15-ch6.ppt

Microsoft PowerPoint - lecture11-ch4.ppt

Microsoft PowerPoint - lecture16-ch6

Microsoft PowerPoint - lecture11-ch4

Microsoft PowerPoint - lecture18-ch8

Microsoft PowerPoint - lecture20-ch7.ppt [읽기 전용]

Microsoft PowerPoint - lecture18-ch7.ppt [호환 모드]

Microsoft PowerPoint - lecture17-ch8.ppt [호환 모드]

Microsoft PowerPoint - lecture19-ch7.ppt

Microsoft PowerPoint - lecture18-ch7 [호환 모드]

Microsoft Word - cg12-midterm-answer

Microsoft PowerPoint - lecture16-ch8.ppt [호환 모드]

Microsoft Word - cg09-midterm.doc

PowerPoint 프레젠테이션

Łø·ŸÕ=¤ ¬ ÇX±xÒ¸ 06 - Èpº– 1

<4D F736F F F696E74202D204347C3E2BCAEBCF6BEF D325FC4C4C7BBC5CDB1D7B7A1C7C8BDBA20B1E2BABBBFE4BCD22E >

컴퓨터그래픽스 기본요소

Microsoft PowerPoint - lecture16-ch8 [호환 모드]

Microsoft PowerPoint - lecture11-ch5.ppt [호환 모드]

(Microsoft PowerPoint - CNVZNGWAIYSE.ppt [\310\243\310\257 \270\360\265\345])

슬라이드 1

(Microsoft PowerPoint - JXEUOAACMYBW.ppt [\310\243\310\257 \270\360\265\345])

서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 (1/7) [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 답 안지 공간이 부족할 경우, 답안지 뒷면에 기술 하고, 해당

Microsoft PowerPoint - lecture16-ch8.ppt [호환 모드]

Microsoft PowerPoint - lecture15-ch8.ppt [호환 모드]

歯Lecture2.PDF

(Microsoft PowerPoint - lecture16-ch8.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - lecture4-ch2.ppt

Microsoft PowerPoint - lecture12-ch5.ppt [호환 모드]

(Microsoft PowerPoint - lecture15-ch8.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - lecture15-ch8.ppt [호환 모드]

Microsoft Word - java19-1-midterm-answer.doc

<4D F736F F F696E74202D20C1A63037B0AD202D20B1A4BFF8B0FA20B1D7B8B2C0DA>

04_오픈지엘API.key

Microsoft PowerPoint - 06-Body Data Class.pptx

서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 (1/8) [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 있는 변환 행렬은 일반적으로 어떤 좌표계 에서 어떤 좌표계로의

기본도형과작도 1 강 - 연습문제 1. 오른쪽그림과같이직선l 위에점,, 가있을때, 옳지않은것은? 1 = 2 = 3 = 직선l 4 = 5 = l 2. 오른쪽그림에서 = = 이다. 다음( ) 안에알맞은수를쓰시오. 1 =( 2 =( 3 =( 4 =( ) ) ) ) 3. 한평

Microsoft PowerPoint - lecture12-ch5.ppt

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Let G = (V, E) be a connected, undirected graph with a real-valued weight function w defined on E. Let A be a set of E, possibly empty, that is includ

Microsoft PowerPoint - lecture11-ch5.ppt [호환 모드]

Open GL

Vector Differential: 벡터 미분 Yonghee Lee October 17, 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표

Microsoft PowerPoint - lecture17-ch8

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

0503중간고사.dvi

Microsoft Word - cg11-midterm-answer.doc

Line (A) å j a k= i k #define max(a, b) (((a) >= (b))? (a) : (b)) long MaxSubseqSum0(int A[], unsigned Left, unsigned Right) { int Center, i; long Max

Chap 6: Graphs

Open GL

중간고사

PowerPoint 프레젠테이션

중간고사

Python과 함께 배우는 신호 해석 제 5 강. 복소수 연산 및 Python을 이용한 복소수 연산 (제 2 장. 복소수 기초)

Microsoft PowerPoint - lecture2-opengl.ppt [호환 모드]

Microsoft PowerPoint - lecture12-ch5

0503중간고사.dvi

Microsoft PowerPoint - chap04-연산자.pptx

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

(Microsoft PowerPoint - \301\24608\260\255 - \261\244\277\370\260\372 \300\347\301\372)

Microsoft PowerPoint - lecture3-ch2.ppt [호환 모드]

서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (2/8) 다음과같이설정되어있는데, cam.pos[0] = 0.0, cam.pos[1] = 0.0, cam.pos[2] = 500.0; 이때의 cam.naxis[] 벡터의세원소값을기술하라. Figure

슬라이드 1

Microsoft PowerPoint D View Class.pptx

Microsoft PowerPoint - Lect17-FromGeoToPixels-1.pptx

PowerPoint Presentation

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

(Microsoft PowerPoint - EDIDFDXLLBYN.ppt [\310\243\310\257 \270\360\265\345])

벡터(0.6)-----.hwp

도형의닮음 1 강 - 닮은도형과닮음중심 사이버스쿨우프선생 닮음도형 : 일정한비율로확대또는축소하였을때닮음모양의도형 기호 : ABCD A'B'C'D' [ 예제 1 ] 그림에서와같이두닮은도형 ABCD 와 A'B'C'D' 에서대응점, 대

Microsoft PowerPoint - lecture3-ch2.ppt

8. 클래스 D는클래스 A, 클래스 B, 클래스 C로부터상속받아맊들고싶다. 아래빈칸을채우시오. ( 대소문자주의하시오 ) class D { ; Student s; 11. 다음프로그램의실행결과는? 9. 다음프로그램의실행결과는? class A{ A(){cout << " 생성

OCW_C언어 기초

윈도우즈프로그래밍(1)

31. 을전개한식에서 의계수는? 를전개한식이 일 때, 의값은? 을전개했을때, 의계수와상수항의합을구하면? 을전개했을때, 의 계수는? 를전개했을때, 상수항을 구하여라. 37

Microsoft PowerPoint - chap02.ppt

LIDAR와 영상 Data Fusion에 의한 건물 자동추출

Microsoft Word - cg09-midterm-answer.doc

서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (1/9) [CSE4170: 기초컴퓨터그래픽스 ] 기말고사 담당교수 : 임인성 답은연습지가아니라답안지에기술할것. 답안지공간이부족할경우, 답안지뒷면에기술하고, 해당답안지칸에그사실을명기할것. 연습지는수거하

PowerPoint Presentation

04 Çмú_±â¼ú±â»ç

Microsoft PowerPoint - hw8.ppt [호환 모드]

PowerPoint Presentation

untitled

Why 3D Max?

chap 5: Trees

Microsoft PowerPoint - LA_ch6_1 [호환 모드]

Transcription:

기말고사 담당교수 : 단국대학교멀티미디어공학전공박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 성적공고시중간고사때제출한암호를사용할것임. 1. 다음문제에답하시오. (50점) 1) 표면의법선벡터 (normal vector) N과표면에서광원으로향하는광원벡터 (light vector) L이주어졌을때, 반사벡터 (reflection vector) R을유도하라. i r R ( N L) N S L ( N L) N S S ( N L) N L R 2( L N) N L 2) OpenGL의 glmatrixmode(glenum mode) 는현재행렬의모드를설정하는함수이다. mode 인자 3가지를간단히설명하시오. glmatrixmode(gl_modelview) 연속되는행렬연산을기하변환행렬 (geometric transformation matrix) 스택에적용한다. 3 차원공간에물체의배치를지정할수있다. glmatrixmode(gl_projection) 연속되는행렬연산을투영행렬 (projection matrix) 스택에적용한다. 3 차원공간에투영함수를적용하는행렬을지정한다. glmatrixmode(gl_texture) 연속되는행렬연산을텍스쳐변환행렬 (texture transformation matrix) 스택에적용한다. 텍스쳐의변환을적용하는행렬을지정한다. 1/10

3) 다음관측함수 glortho(left, right, bottom, top, near, far), glfrustum(left, right, bottom, top, near, far), gluperspective(fovy, aspect, near, far) 함수를간단히설명하고관측공간을그림으로표시하라. glortho(left, right, bottom, top, near, far) 직교투영 (orthogonal projection) 함수로관측공간 (viewing volume) 은직육면체이다. glfrustum(left, right, bottom, top, near, far) 투시투영 (perspective projection) 함수로관측공간 (viewing volume) 은절두체 (frustum 잘려진피라미드형태 ) 이다. gluperspective(fovy, aspect, near, far) 투시투영 (perspective projection) 함수로 fovy 는 y-축방향에서의시야 (field of view) 각도, 종횡비 (aspect ratio), near, far 클리핑면으로이루어져있다. 4) OpenGL 에서제공하는광원 (light source) 의종류 4 가지를간단히설명하시오. 환경광원 (ambient light source) 장면의모든점에균일한광도를제공하는광원 점광원 (point light source) 한점을중심으로주변으로퍼져나가는광원 방향성광원 (directional light source) 빛이물체면을향하여일정한방향으로진행하는광원으로원거리광원또는평행광원이라고불림 점적광원 (spot light source) 점광원의특수한형태로원뿔과같이일정한범위로빛을발하는광원 5) 객체공간기법의은면제거알고리즘을 2 가지를간단히설명하라. 깊이정렬알고리즘 (Depth-sorting algorithm) 폴리곤의각면을깊이에따라정렬한뒤, 먼것부터투영하여그린다. Painter s algorithm라고도불린다. Binary Space Partitioning (BSP) tree BSP tree를사용하여관측방향에따라 front, back을구분하여공간을계속적으로분할한다. 2/10

6) OpenGL 함수 gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_S, mode) 는텍스쳐좌표값이 (0,1) 범위를넘어선값에대해, mode가 GL_CLAMP는 s,t가 1보다크면 1을 s,t가 0보다작으면 1으로값을강제조정하고, GL_REPEAT는 s,t%1을사용하여텍스쳐를반복한다. 화면출력결과를참고하여빈칸을채우시오. gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_S, GL_CLAMP ); gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_T, GL_REPEAT ); gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_S, GL_REPEAT ); gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_T, GL_REPEAT ); 7) 다음은실습예제로제공한텍스쳐환경변수 OpenGL 프로그램의일부를보여주고있다. OpenGL 함수 gltexenvf(gl_texture_env, GL_TEXTURE_ENV_MODE, mode) 는텍스쳐와음영간의상호작용을지정할수있게한다. GL_MODULATE, GL_DECAL, GL_BLEND, GL_REPLACE 모드를사용했을때텍스쳐값이어떻게나타나는지빈칸에간단히설명하시오. C t : 텍스쳐색, C f : 프레임버퍼의색, C b : 블렌딩색 void draw() { //.. 중간생략 initlight(); glenable(gl_texture_2d); glcolor3f(1.0, 1.0, 1.0); glbindtexture(gl_texture_2d, texid); // 1. _GL_MODULATE 텍스쳐색성분과음영색성분이곱함 _C = C t *C f gltexenvf(gl_texture_env, GL_TEXTURE_ENV_MODE, GL_MODULATE); glpushmatrix(); gltranslatef(-1.1, 1.0, 0.0); glrotatef(-90.0, 1.0, 0.0, 0.0); glusphere(quadric, 1.0, 16, 8); glpopmatrix(); 3/10

// 2. _GL_DECAL 텍스쳐색성분이객체의색을완전히결정함 _C = C t gltexenvf(gl_texture_env, GL_TEXTURE_ENV_MODE, GL_DECAL); glpushmatrix(); gltranslatef(1.1, 1.0, 0.0); glrotatef(-90.0, 1.0, 0.0, 0.0); glusphere(quadric, 1.0, 16, 8); glpopmatrix(); // 3. _GL_BLEND 텍스쳐색성분과블렌딩색과합성함 _C = (1 - C t )C f + C t *C b GLfloat blendcolor[] = {0.0, 1.0, 0.0, 0.5; gltexenvf(gl_texture_env, GL_TEXTURE_ENV_MODE, GL_BLEND); gltexenvfv(gl_texture_env, GL_TEXTURE_ENV_COLOR, blendcolor); glpushmatrix(); gltranslatef(-1.1, -1.0, 0.0); glrotatef(-90.0, 1.0, 0.0, 0.0); glusphere(quadric, 1.0, 16, 8); glpopmatrix(); // 4. _GL_REPLACE 텍스쳐색성분이객체의색을완전히결정함 _ C = C t gltexenvf(gl_texture_env, GL_TEXTURE_ENV_MODE, GL_REPLACE); glpushmatrix(); gltranslatef(1.1, -1.0, 0.0); glrotatef(-90.0, 1.0, 0.0, 0.0); glusphere(quadric, 1.0, 16, 8); glpopmatrix(); glbindtexture(gl_texture_2d, 0); gldisable(gl_texture_2d); //.. 중간생략 8) 다음은입방체 (cube) 를그리는 OpenGL 프로그램의일부이다. 빈칸을채우시오. void drawcube() { float vertex[8][3]; vertex[0][0] = -1; vertex[0][1] = -1; vertex[0][2] = -1; vertex[1][0] = 1; vertex[1][1] = -1; vertex[1][2] = -1; vertex[2][0] = 1; vertex[2][1] = 1; vertex[2][2] = -1; vertex[3][0] = -1; vertex[3][1] = 1; vertex[3][2] = -1; vertex[4][0] = -1; vertex[4][1] = -1; vertex[4][2] = 1; vertex[5][0] = 1; vertex[5][1] = -1; vertex[5][2] = 1; vertex[6][0] = 1; vertex[6][1] = 1; vertex[6][2] = 1; vertex[7][0] = -1; vertex[7][1] = 1; vertex[7][2] = 1; p7 p4 p3 p0 p2 p6 p1 p5 float normal[6][3]; normal[0][0] = 1.0; normal[0][1] = 0.0; normal[0][2] = 0.0; normal[1][0] = 0.0; normal[1][1] = 1.0; normal[1][2] = 0.0; normal[2][0] = 0.0; normal[2][1] = 0.0; normal[2][2] = 1.0; normal[3][0] = -1.0; normal[3][1] = 0.0; normal[3][2] = 0.0; normal[4][0] = 0.0; normal[4][1] = -1.0; normal[4][2] = 0.0; normal[5][0] = 0.0; normal[5][1] = 0.0; normal[5][2] = -1.0; 4/10

glbegin( GL_QUADS ); glnormal3fv( normal[0] ); // right ( 오른쪽 ) glvertex3fv( vertex[5] ); glvertex3fv( vertex[1] ); glvertex3fv( vertex[2] ); glvertex3fv( vertex[6] ); glnormal3fv( normal[1] ); // top ( 윗쪽 ) glvertex3fv( vertex[6] ); glvertex3fv( vertex[2] ); glvertex3fv( vertex[3] ); glvertex3fv( vertex[7] );... // 중간생략 glnormal3fv( normal[5] ); //back ( 뒤쪽 ) glvertex3fv( vertex[0] ); glvertex3fv( vertex[3] ); glvertex3fv( vertex[2] ); glvertex3fv( vertex[1] ); 9) 다음은구체 (sphere) 를그리는 OpenGL 프로그램의일부이다. 빈칸을채우시오. void drawsphere(float radius, int stacks, int slices) { float lon, lat, v[3], n[3]; float lonstep = M_PI/stacks; float latstep = M_PI/slices; for (lon = 0.0; lon <= 2*M_PI; lon += (lonstep)) { glbegin(gl_triangle_strip); for (lat = 0.0; lat <= M_PI + latstep; lat += (latstep)) { n[0] = cosf(lon)*sinf(lat); n[1] = sinf(lon)*sinf(lat); n[2] = cosf(lat); v[0] = radius * cosf(lon)*sinf(lat); v[1] = radius * sinf(lon)*sinf(lat); v[2] = radius * cosf(lat); glnormal3fv(n); glvertex3fv(v); n[0] = cosf(lon + lonstep)*sinf(lat); n[1] = sinf(lon + lonstep)*sinf(lat); n[2] = cosf(lat); v[0] = radius * cosf(lon + lonstep)*sinf(lat); v[1] = radius * sinf(lon + lonstep)*sinf(lat); v[2] = radius * cosf(lat); glnormal3fv(n); glvertex3fv(v); 5/10

10) 다음은간단한 OpenGL 프로그램의일부이다. 오른쪽화면출력결과를참고하여빈칸을채우시오. glpolygonmode(gl_front_and_back, GL_FILL); glbegin( GL_TRIANGLES ); for (int i = 0; i<8; i++) glvertex2fv(v[i]); glpolygonmode(gl_front_and_back, GL_FILL); glbegin( GL_TRIANGLE_FAN ); for (int i = 0; i<8; i++) glvertex2fv(v[i]); glpolygonmode(gl_front_and_back, GL_FILL); glbegin( GL_TRIANGLE_STRIP ); glvertex2fv(v[0]); glvertex2fv(v[1]); glvertex2fv(v[7]); glvertex2fv(v[2]); glvertex2fv(v[6]); glvertex2fv(v[3]); glvertex2fv(v[5]); glvertex2fv(v[4]); 2. 래스터화과정에서선분을그리는 Bresenham s Line Drawing 알고리즘을간단히설명하라. 그리고 DDA (Digital Differential Analyzer) 알고리즘과의차이점을비교하라. (10점) DDA: y += (float) dy/dx 로계산하고 round(y) 를이용하여선분의점을그린다. 선분을그리는데일반직선의공식 (y = mx + h) 을사용했을때보다부동소수곱셈을부동소수덧셈으로변환하여계산을향상시켰으나정수연산에비해느린단점이있다. 또한 round 함수를실행하는시간이더걸린다. Bresenham s algorithm: 일명 Midpoint line drawing algorithm 으로불린다. 모든부동소수점 (float) 계산을피하고정수 (int) 계산만을이용한다. 화소 A(x,y) 에서중점 M(x+1, y+½) 이선분의아래에있으면동쪽화소 B (x+1, y) 를선택하고아니면동북쪽화소 C(x+1, y+1) 을선택하는방식이다. 6/10

(x+1,y+1) (x+1,y+½) (x,y) (x+1,y) Puedo code 는아래와같다. 결정변수 D = 2dy dx if (D < 0) D += 2dy else D += 2dy 2dx y++ 3. 다음은초록색배경에빨간색삼각형과그위에파란색사각형을블렌딩하여그리는간단한 OPENGL 프로그램의일부를보여주고있다. 아래와같이여러가지방법으로블렌딩함수를사용했을때그림에서 1( 삼각형부분만 ), 2( 삼각형과사각형이겹치는부분 ), 3( 사각형부분만 ), 4( 나머지배경만 ) 의화면에출력되는최종 RGBA 색을계산하여표의빈칸에넣으시오. (20점) 블렌딩공식 : C = SourceFactor*C s + DestinationFactor*C d void drawobject() { glcolor4f(1, 0, 0, 1); glbegin(gl_triangles); glvertex3f(0.0, 1.0, -3.0); glvertex3f(-1.0, -1.0, -3.0); glvertex3f(1.0, -1.0, -3.0); glcolor4f(0, 0, 1, 0.5); glbegin(gl_quads); glvertex3f(0.0, -1.0, -2.0); glvertex3f(1.0, -1.0, -2.0); glvertex3f(1.0, 0.0, -2.0); glvertex3f(0.0, 0.0, -2.0); 7/10

void draw() { glclearcolor(0, 1, 0, 1); glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); glenable(gl_blend); if (filter == 0) glblendfunc(gl_one, GL_ZERO); else if (filter == 1) glblendfunc(gl_zero, GL_ONE); else if (filter == 2) glblendfunc(gl_one, GL_ONE); else if (filter == 3) glblendfunc(gl_src_alpha, GL_ONE_MINUS_SRC_ALPHA); else if (filter == 4) glblendfunc(gl_src_alpha, GL_ONE); else if (filter == 5) glblendfunc(gl_zero, GL_SRC_COLOR); else if (filter == 6) glblendfunc(gl_one_minus_dst_color, GL_ZERO); drawobject(); gldisable(gl_blend); 4 1 2 3 Blending Func 1 2 3 4 GL_ONE (1,0,0,1) (0,0,1,1) (0,0,1,1) (0,1,0,1) GL_ZERO GL_ZERO (0,1,0,1) (0,1,0,1) (0,1,0,1) (0,1,0,1) GL_ONE GL_ONE (1,1,0,1) (1,1,1,1) (0,1,1,1) (0,1,0,1) GL_ONE GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA (1,0,0,1) (0.5,0,0.5,0.75) (0,0.5,0.5,0.75) (0,1,0,1) 8/10

4. 다음은 Cohen-Sutherland 알고리즘으로 2차원선분을클리핑하려고한다. 아래오른쪽그림은 Cohen-Sutherland 알고리즘의각영역에대한 4-비트외곽부호 (outcode) 를보여주고있다. 아래빈칸을채우시오. (10점). J A F B G I D E H 1001 y = y 1000 max 1010 x = x min 0001 0000 x = x max 0010 C y = y min 0101 0100 0110 선분의각끝점의 4 비트외곽부호 (outcode) 를구하시오. A: 1000 B: 0000 C: 0100 D: 0010 E: 0000 F: 0000 G: 0010 H: 1010 I: 0001 J: 1000 선분클리핑을위해 4 비트외곽부호를이용하여다음 4 가지경우로분류하는판정기준을적으시오. 선분의양끝점이클리핑윈도우내부에있는경우 (accept): E s outcode = F s outcode = 0 선분의양끝점이클리핑윈도우의같은변의외부에있는경우 (reject): G s outcode AND H s outcode 0 선분의한끝점은클리핑윈도우내부에있고, 다른하나는외부에있는경우 (1 개교차점을찾는다 subdivision): A s outcode 0, B s outcode = 0 선분의양끝점이모두외부에있고선분의일부가클리핑윈도우내부에있는경우 (subdivision): C s outcode AND D s outcode = 0 I s outcode AND J s outcode = 0 9/10

5. 아래그림을참고하여 glulookat(1,1,0, 0,0,0, 0,1,0) 함수에서뷰잉행렬 (Viewing Matrix) M 을도출하는계산과정을보여라. 아래빈칸을채우시오. (10점) Eye position (eye): (1, 1, 0) Look-at position (at): (0, 0, 0) Up-vector (up): (0, 1, 0) n (camera frame Z) : n = eye at => n = (0.707107, 0.707107, 0) u (camera frame X): u = n x up => u = (0, 0, -1) v (camera frame Y): v = n x u => v = (-0.707107, 0.707107, 0) M (viewing matrix): u[0] v[0] n[0] 0 M = u[1] v[1] n[1] 0 u[2] v[2] n[2] 0 -u eye -v eye -n eye 1 M (viewing matrix): 0-0.70717 0.707107 0 M = 0 0.707107 0.707107 0-1 0 0 0 0 0-1.414214 1 10/10