0503중간고사.dvi

Size: px
Start display at page:

Download "0503중간고사.dvi"

Transcription

1 서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 1/8 [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 담당교수: 임 인 성 답은 연습지가 아니라 답안지에 기술할 것 있는 변환 행렬은 일반적으로 어떤 좌표계 에서 어떤 좌표계로의 변환을 위하여 사용 하는가? 답안지 공간이 부족할 경우, 답안지 뒷면에 기 술하고, 해당 답안지 칸에 그 사실을 명기할 것 i 투영 참조점이 무한대점 point at infinity 에 위치한 투영 변환의 이름은 무엇인가? 1 다음 단답식 문제에 답하라 j 다음과 같은 gluperspectivefovy, asp, n, f 함수에 대한 변환 행렬 Mpers 를 통하여 원 근 투영을 수행할 때 진행되는 원근 나눗 셈에서 분모로 사용되는 W 좌표 wc 값은 무엇인가? a 3차원 공간의 두 벡터 p = px py pz t 와 q = qx qy qz t 에 대하여 외적 cross product 연산을 통해 구한 벡터 r = p q = rx ry rz t 의 x 좌표 rx 의 값을 기술하라 b 3차원 투영공간의 점 50, 50, 100, 20에 대응하는 아핀공간의 점의 좌표 x, y, z를 기술하라 c RGB 모델로 03, 05, 10로 표현되는 색 깔을 CMY 모델로 나타내면? cot f ovy 2 asp d 2차원 공간에서의 회전 변환에 해당하는 3 행 3열 아핀 변환 행렬 Rθ을 기술하라 e 주어진 4행 4열 행렬이 3차원 공간에서의 아핀 변환에 해당하는지를 알 수 있는 방법 은 무엇인가? f 3차원 공간에서의 이동 변환, 크기 변 환, 그리고 회전 변환에 대한 4행 4 열 행렬 T tx, ty, tz, Ssx, sy, sz, 그리고 Rθ, nx, ny, nz 를 고려하자 다음 행렬 M 의 역행렬 M 1 을 위의 기본 변환 행렬의 곱으로 표현하라 반드시 위의 행렬 기호를 사용할 것 2 22 M = f2nf n 0 k 위 문제에서 wc 값의 직관적인 의미를 설 명하라 2 3행 3열 행렬로 표현되는 2차원 이동 변환 T tx, ty, 크기 변환 Ssx, sy, 그리고 회전 변환 Rθ를 고려하자 그림 1a의 직사각형 영역의 내용을 b의 직사각형 영역으로 매핑해주는 3 행 3열의 기하 변환 행렬 M 을 i 위의 기본 변 환 행렬들의 곱으로 표현한 후, ii 최종 3행 3열 행렬의 내용을 구하라 cot f ovy 0 2 f +n 0 f n 0 1 y y g OpenGL 렌더링 파이프라인에서 카메라 의 위치와 방향을 설정 해주는 과정에 해 당하는 기하 변환의 이름은 무엇인가? h OpenGL fixed-function 파이프라인에서 glvertex3f 함수를 사용하여 설정한 꼭 지점에 곱해지는 첫 번째 행렬 스택의 탑에 1 x a 변환 전 6 b 변환 후 Figure 1: 2차원 윈도우 매핑 년 4월 25일금 오전 11:30 AS 414 c 2014 서강대학교 공과대학 컴퓨터공학과 임인성 x

2 서강대학교 공과대학 컴퓨터공학과 3 아래의 코드는 그림 2에 도시한 원점 주변의 0 번 비행기와 4사분면의 1번 비행기를 그려주는 OpenGL 코드이다 Figure 2: 2차원 기하 변환 draw airplane; // airplane 0 glpushmatrix; gltranslatef1500, -1000, 00; glrotatef900, 00, 00, 10; glscalef20, 20, 10; draw airplane; // airplane 1 glpopmatrix; a 이제 이 그림에서처럼 1번 비행기를 직선 y = x + 100에 대하여 반사시켜 2사분면의 2번 비행기와 같이 그려주려 한다 아래의 코드는 이를 위한 코드인데, A와 B에 들어갈 내용을 각각 한 번의 OpenGL API 함수 호출을 통하여 C/C++ 언어 문법에 맞게 기술하라 glpushmatrix; gltranslatef-1000, 00, 00; A glscalef-10, 10, 10; B gltranslatef2500, -1000, 00; glrotatef900, 00, 00, 10; glscalef20, 20, 10; draw airplane; // airplane 2 glpopmatrix; b 3행 3열 행렬로 표현되는 2차원 이동 변 환 T tx, ty, 크기 변환 Ssx, sy, 그리고 회 CSE4170 기초 컴퓨터 그래픽스 중간고사 2/8 전 변환 Rθ를 고려하자 RθS 1, 1 = S 1, 1Rα 식을 만족시켜주는 α 값은 무 엇인가? c S 1, 1T tx, ty = T β, γs 1, 1 식을 만족시켜주는 β와 γ 값은 무엇인가? d RθT tx, ty = T δ, Rθ 식을 만족시켜 주는 δ와 값은 무엇인가? e 이제 2번 비행기를 그리는 작업은 아래와 같은 방식으로도 구현할 수 있다 이때 C 에 들어갈 내용을 한 번의 OpenGL API 함수 호출을 통하여 C/C++ 언어 문법에 맞게 기술하라 glpushmatrix; gltranslatef-1000, 00, 00; glrotatef-900, 00, 00, 10; C gltranslatef2500, -1000, 00; glrotatef900, 00, 00, 10; glscalef20, 20, 10; draw airplane; // airplane 2 glpopmatrix; f 마찬가지로 아래와 같은 방식으로 2번 비행기를 그리려 한다 이때 공란으로 되어있는 각 OpenGL API 함수의 인자 다섯 개를 순서대로 기술하라 힌트: 1번 문제의 답을 잘 이용할 것 glpushmatrix; gltranslatef,, 00; glrotatef, 00, 00, 10; glscalef,, 10; draw airplane; // airplane 2 glpopmatrix; 4 다음은 프레임간의 변환에 관한 문제이다 a 그림 3의 A 소는 점 4, 4, 1을 원점으로 하는 자신의 프레임을 기준으로 세상 좌표 계에 존재하고 있는데, 이 프레임의 각 축 의 방향이 축 옆에 기술되어 있다 이때 이 프레임을 0, 0, -1 방향과 0, 1, 0 방향 이 각각 세상 좌표계의 xw 축과 yw 방향과 일치하는 방식으로 세상 좌표계와 일치시 켜주려한다 이때 필요한 4행 4열 행렬 M1 의 내용을 기술하라 b 한편 B 소는 점 1, 0, 2을 중심으로 하는 프레임을 기준으로 세상 좌표계에 존재하 고 있는데, A 소의 각 꼭지점들을 B 소의 년 4월 25일금 오전 11:30 AS 414 c 2014 서강대학교 공과대학 컴퓨터공학과 임인성

3 서강대학교 공과대학 컴퓨터공학과 yw 4, 4, -1 CSE4170 기초 컴퓨터 그래픽스 중간고사 y 0, 1, 0 0, 0, -1 p COP: 1, 0, 0-1, 0, 2 p' B 0, 0, -1 A 1, 0, 0 x 9 z PP: x = 9 1, 0, 0 zw 3/8 a 문제 a 그림 xw y 0, -1, 0 p Figure 3: 프레임간의 변환 1 대응되는 점으로 매핑해주는 4행 4열 행렬 M2 를 네 개의 기본 변환 행렬의 곱으로 표 현하라 반드시 네 개의 4행 4열 행렬의 내 용을 곱해지는 순서대로 기술할 것 p' 1 x 5 다음은 원근 투영 변환에 관한 문제이다 a 그림 4a에서와 같이 COPCenter of Projecton가 1, 0, 0이고 PPProjection Plane이 x = 9인 상황에서, 주어진 점 p = x y z 1t 을 p0 = x0 y 0 z 0 1t 로 변환해 주는 4행 4열의 원근 투영 변환 행렬 M1 을 구하라 반드시 유도과정이 있어야 함 b 그림 4b는 임의의 점 p를 이 점과 원점 을 지나는 직선과 세 점 1, 0, 0, 0, 1, 0, 그리고 0, 0, 1을 지나는 평면과의 교점 p0 로 투영해주는 모습을 도시하고 있다 이때 이에 대한 원근 투영 변환 행렬 M2 를 구하 라 반드시 유도과정이 있어야 함 6 다음은 간단한 모델링 변환에 관한 문제이다 a 아래의 코드는 그림 5a에 도시한 그림을 그려주는 OpenGL 프로그램의 일부이다 glmatrixmodegl MODELVIEW; glloadidentity; glulookat200, 150, 200, 00, 00, 00, 00, 10, 00; draw axis; draw floor; draw cow; // Line a for angle = 00; angle < 3600; angle += 450 { z 1 b 문제 b 그림 Figure 4: 원근 투영 변환 glpushmatrix; // Line c gltranslatef40, 00, 00; draw cow; // Line b glpopmatrix; 여기서 Line a의 함수는 원점에 배치되 어 있는 소를 그려주고, Line b의 함수는 원점을 둘레로 반경 4인 원을 따라 회전하 고 있는 소를 그려주는 역할을 하고 있는데, 이 코드에는 회전에 필요한 OpenGL API 함수 호출 문장이 결여되어 있다 위 프로그 램이 제대로 작동하기 위하여 어느 지점에 어떤 문장이 필요한지, 그 내용을 OpenGL 및 C/C++ 언어 문법에 맞게 정확히 기술 하라 답은 어떤 문장 직전 또는 직후에 다음 OpenGL 문장이 필요함 과 같이 기술 하되, 두 개 이상의 OpenGL 문장이 필요할 수 있음 b 다음 프로그램에서 그림 5b와 같은 결과를 얻기 위하여 필요한 회전에 필요한 문장을 위 문제에서와 동일한 방식으로 답하라 년 4월 25일금 오전 11:30 AS 414 c 2014 서강대학교 공과대학 컴퓨터공학과 임인성

4 서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 4/8 y x z a 문제 a 그림 y Figure 6: glulookat* 함수를 통한 뷰잉 변환 8 다음은 뷰잉 변환에 관한 문제이다 x z b 문제 b 그림 Figure 5: 간단한 모델링 변환 for int i = 0; i < 5; i++ { glpushmatrix; // Line d gltranslatef20*i-40, 00, 00; draw cow; // Line e glpopmatrix; 7 다음은 glulookat* 함수를 통한 뷰잉 변환에 관한 문제이다 그림 6의 뷰잉 변환 계산 과정과 그림 7의 함수 구현 코드를 보면서 답하라 a 이 코드에서 이 그림의 VRP와 가장 밀접한 관련이 있는 변수들을 정확히 기술하라 b 이 코드에서 이 그림의 v와 가장 밀접한 관 련이 있는 변수들을 정확히 기술하라 c 문맥 상 이 코드의 A, B, 그리고 C 부 분에 들어갈 내용을 C/C++ 언어 문법에 맞게 정확히 기술하라 d 이 코드에는 분명히 잘못된 부분이 있다 그 부분을 명시한 후 올바르게 바로 잡아라 a 한 점 e와 서로 수직이고 길이가 1인 세 개의 벡터 u 카메라 기준 오른쪽 방향, v 카메라 기준 위쪽 방향, n 카메라에서 세상을 바라보는 방향의 정반대 방향으로 정의되는 카메라 프레임을 생각하자 지금 점 e가 원점에, 그리고 u, v, n 벡터가 각각 세상 좌표계의 xw, yw, zw 축 방향을 향하도록 카메라 프레임이 초기화되어 있다 이 상태서 이 카메라 프레임을 yw 축 둘레로 90도만큼 회전시킨 후, xw 축 방향으로 -10만큼 이동을 시켰다고 하자 이때의 뷰잉 변환을 아래의 코드처럼 구현하려 할때, A 부분에 들어갈 내용을 C/C++ 언어 문법에 맞게 OpenGL API 함수 호출을 통하여 구현하라 GLfloat matrix[16]; glmatrixmodegl MODELVIEW; glloadidentity; A glgetfloatvgl MODELVIEW MATRIX, matrix; b 여기서 glgetfloatv*; 문장은 이 문장 수행 당시의 현재 행렬 스택의 탑의 내용 을 배열 matrix[16]으로 추출해주는 역할 을 한다 이때 이 배열에 저장되는 16개의 원소 값을 순서대로 기술하라 OpenGL 시 스템에서 2차원 배열이 저장되는 순서를 상 기할 것 9 지금 다음처럼 카메라 변수 cam을 정의한 후, typedef struct cam { float pos[3], uaxis[3], vaxis[3], 년 4월 25일금 오전 11:30 AS 414 c 2014 서강대학교 공과대학 컴퓨터공학과 임인성

5 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 5/8 void glulookatgldouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz { GLdouble m[16]; GLdouble x[3], y[3], z[3]; GLdouble mag; z[0] = eyex - centerx; z[1] = eyey - centery; z[2] = eyez - centerz; mag = sqrtz[0]*z[0] + z[1]*z[1] + z[2]*z[2]; if mag { z[0] /= mag; z[1] /= mag; z[2] /= mag; y[0] = upx; y[1] = upy; y[2] = upz; x[0] = y[1]*z[2] - y[2]*z[1]; x[1] = -y[0]*z[2] + y[2]*z[0]; x[2] = y[0]*z[1] - y[1]*z[0]; y[0] = A ; y[1] = B ; y[2] = C ; mag = sqrtx[0]*x[0] + x[1]*x[1] + x[2]*x[2]; if mag { x[0] /= mag; x[1] /= mag; x[2] /= mag; mag = sqrty[0]*y[0] + y[1]*y[1] + y[2]*y[2]; if mag { y[0] /= mag; y[1] /= mag; y[2] /= mag; #define Mrow,col m[col*4+row] M0,0 = x[0]; M0,1 = x[1]; M0,2 = x[2]; M0,3 = 00; M1,0 = y[0]; M1,1 = y[1]; M1,2 = y[2]; M1,3 = 00; M2,0 = z[0]; M2,1 = z[1]; M2,2 = z[2]; M2,3 = 00; M3,0 = 00; M3,1 = 00; M3,2 = 00; M3,3 = 10; #undef M glmultmatrixdm; gltranslatedeyex, eyey, eyez; Figure 7: glulookat* 함수의구현 naxis[3]; GLfloat mat[16]; GLdouble fovy, aspect, near c, far c; Cam; Cam cam; 디스플레이컬백함수에서다음과같이물체를그리려한다 여기서 sfactor 는 float 타입의전역변수임 void display void { glcleargl COLOR BUFFER BIT; glmatrixmodegl MODELVIEW; glloadidentity; // Line a glmultmatrixfcammat; gltranslatef-campos[0], -campos[1], -campos[2]; // Line b glpushmatrix; glscalefsfactor, sfactor, sfactor; // Line c draw teapot; glpopmatrix; glflush; a 보편적인관점에서, Line a 와 Line b 지점에서 glvertex** 함수로꼭지점의좌표를기술하면이꼭지점은각각눈좌표계, 모델링좌표계, 그리고세상좌표계중어느좌표계에서의의미를가질까? b 다음과같은함수를사용하여세상좌표계의좌표축을그려주려한다 void draw axesvoid { gllinewidth20; glbegingl LINES; glcolor3f10, 00, 00; // x 축 glvertex3f00, 00, 00; glvertex3f1500, 00, 00; glend; gllinewidth10; 이함수를 Line a, Line b, 그리고 Line c 중어느시점에서호출을해야 년 4 월 25 일 금 오전 11:30 AS c 2014 서강대학교공과대학컴퓨터공학과임인성

6 서강대학교 공과대학 컴퓨터공학과 할까? c 그림 8은 이 프로그램의 초기 렌더링 결과 를 보여주고 있다 여기서 세상 좌표계의 x축과 y축이 각각 오른쪽과 위쪽 방향으로 그려져 있고, z축은 화면 앞으로 튀어 나오고 있음 초기에 카메라의 위치는 다음과 같이 설정되어 있는데, campos[0] = 00, campos[1] = 00, campos[2] = 5000; CSE4170 기초 컴퓨터 그래픽스 중간고사 6/8 set rotate matcammat; glutpostredisplay; break; e 위 스페셜 컬백 함수를 사용할 경우, 아래 화살표 키를 누를 때마다 화면에서 물주전 자가 어떤 식으로 움직일지를 적절한 수치 를 사용하여 정확히 기술하라 이때의 camuaxis[] 벡터의 세 원소 값을 10 그림 9는 아래에 주어진 디스플레이 컬백 함수를 통하여 세상 좌표계 WC에서 동일한 기술하라 소 모델을 사용하여 렌더링한 모습을 도시하고 있다 yw WC 㞚㰖 zw xw Figure 8: 물주전자 그리기 㠊 d 다음은 스페셜 컬백 함수의 일 부이다 이 코드에서 문맥상 set rotate matcammat; 문장은 cammat[] 배열에 어떤 값들을 어떻게 넣어주는 역할을 할지 정확히 기술하라 case GLUT KEY DOWN: { float c, s, tx, ty; c = cos *450/1800; s = sin *450/1800; tx = c*camnaxis[2] - s*camnaxis[0]; ty = s*camnaxis[2] + c*camnaxis[0]; camnaxis[2] = tx, camnaxis[0] = ty; tx = c*camuaxis[2] - s*camuaxis[0]; ty = s*camuaxis[2] + c*camuaxis[0]; camuaxis[2] = tx, camuaxis[0] = ty; campos[0] = 5000*camnaxis[0]; campos[1] = 5000*camnaxis[1]; campos[2] = 5000*camnaxis[2]; Figure 9: 간단한 계층적 모델링 void rendervoid { glcleargl COLOR BUFFER BIT; glmatrixmodegl MODELVIEW; draw floor0533, 0271, 0075; draw axes30, 15; // WC 좌표축 draw axes10, 50; draw cow0243, 0627, 0333; // 소 glpushmatrix; A glscalef11, 11, 11; draw axes10, 50; glpushmatrix; gltranslatef-01, 088, 00; draw cow10, 10, 10; 년 4월 25일금 오전 11:30 AS 414 c 2014 서강대학교 공과대학 컴퓨터공학과 임인성

7 서강대학교 공과대학 컴퓨터공학과 glpopmatrix; glscalef25, 25, 25; draw cow0914, 0671, 0090; glpopmatrix; glutswapbuffers; a 이 프로그램에서 세 개의 draw cow*; 문 장들은 각각 소, 송아지, 그리고 어미소를 그려주고 있다 여기서 송아지를 그려주는 문장은 어떤 것인지 해당 함수의 세 개의 인자를 통하여 답하라 b 프로그램 문맥상 어미소는 원점 주변의 소 의 몇 배 크기를 가질까? c 지금 타이머 컬백 함수에 의해 변수 angle 의 값이 1씩 증가하면서 0과 359 사이에서 순환 위의 디스플레이 컬백 함수가 호출 되고 있다 어미소와 송아지가 세상 좌표계 의 yw 축 둘레로 반경 4인 원을 따라 같이 회전을 하게 하게 하기 위하여 A 지점에 필요한 내용을 C/C++ 언어 문법에 맞게 OpenGL API 함수 호출을 통하여 구현하 라 어미소와 송아지의 얼굴이 진행 방향을 가리킴 d 위 코드에서 소, 어미소, 송아지 등 각 물 체를 그려주는 문장이 수행되는 시점에는 각 물체 자신만의 좌표계가 설정되어 있 다고 할 수 있다 이때 송아지를 그려주는 문장이 수행되는 시점에서 한 꼭지점에 어 떤 기하 변환을 가하면 어미소를 그려주 는 문장이 수행되는 시점의 좌표계로 변환 할 수 있을까? T tx, ty, tz, Rα, rx, ry, rz, Ssx, sy, sz 행렬과 그것들의 역행렬을 적 절히 사용하여 그 기하 변환을 합성하라 CSE4170 기초 컴퓨터 그래픽스 중간고사 7/8 느 영역인지 자신이 붙인 이름을 사용하 여 밝히고, ii 어떠한 사용자 인터액션 을 통해 메뉴를 화면에 도시하는지, 그리고 iii 각 메뉴 요소 선택을 통하여 어떤 일을 할 수 있는지 명확히 기술하라 c 어떤 특정 영역은 왼쪽 마우스 버튼 클릭에 대하여 반응을 한다 어떤 영역인지 자신 이 붙인 이름을 사용하여 기술하라 d 그 영역에서 왼쪽 마우스 버튼을 눌러다가 뗄 때 어떤 영역의 내용이 어떻게 바뀌는 지 정확히 기술하라 그 어떤 작용에 대하여 필요하다면 마우스 커서의 위치를 정확히 기술할 것 e 만약 9번과 10번 문장 사이에 다음 문장을 삽입하고, glutsetwindowsubwindow0; 20번 문장을 다음 두 문장으로 대치 할 경우에 대하여, glutsetwindowsubwindow0; glclearcolor00, 10, 00, 10; 바로 위 문제에 대하여 답하라 <수고 많았습니다!> 11 그림 10에 주어진 GLUT API 함수를 통한 윈도 우 프로그래밍 코드를 보고 답하라 a 이 프로그램을 처음 수행시키면 가로-세로 1000 픽셀 크기의 윈도우가 화면에 도시된 다 이 윈도우 안에는 두 개의 사각형이 그 려지는데, 전체 윈도우 안에서의 이 두 사 각형의 정확한 크기와 위치를 그리고 이 두 사각형으로 인하여 생성되는 세 영역의 초 기 색깔을 명확히 기술하라 이 세 영역에 대하여 적절히 A, B, 그리고 C로 이름 을 붙이고, 이후 문제에서는 이 영역 이름을 사용하여 답할것 b 이 프로그램에서는 특정 윈도우 영역에서 메뉴를 사용할 수 있는데, i 그 영역이 어 년 4월 25일금 오전 11:30 AS 414 c 2014 서강대학교 공과대학 컴퓨터공학과 임인성

8 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 8/ : int MainWindow, SubWindow0, SubWindow1; 03: void mouseint button, int state, int x, int y { 04: if button == GLUT LEFT BUTTON && state == GLUT DOWN { 05: if y <= 200 { 06: glclearcolor00, 00, 00, 10; 07: glutpostredisplay; 08: 09: else { 10: glclearcolor10, 10, 10, 10; 11: glutpostredisplay; 12: 13: 14: else if button == GLUT LEFT BUTTON && state == GLUT UP { 15: if y <= 200 { 16: glclearcolor00, 00, 10, 10; 17: glutpostredisplay; 18: 19: else { 20: glclearcolor00, 00, 10, 10; 21: glutpostredisplay; 22: 23: 24: 25: void displayvoid { glcleargl COLOR BUFFER BIT; glflush; 26: void helloint value { 27: if value { glclearcolor10, 10, 00, 10; glutpostredisplay; 28: else { glclearcolor10, 00, 00, 10; glutpostredisplay; 29: 30: void main int argc, char **argv { 31: glutinit&argc, argv; glutinitdisplaymodeglut RGBA; glutinitwindowsize1000,1000; 32: MainWindow = glutcreatewindow"2014 CSE3170 Midterm Exam"; 33: glutcreatemenuhello; 34: glutaddmenuentry"boy", 0; glutaddmenuentry"girl", 1; 35: glutattachmenuglut RIGHT BUTTON; 36: glutdisplayfuncdisplay; 37: glclearcolor10, 00, 00, 10; 38: SubWindow0 = glutcreatesubwindowmainwindow, 100, 100, 400, 200; 39: glutdisplayfuncdisplay; 40: glclearcolor00, 10, 00, 10; 41: SubWindow1 = glutcreatesubwindowmainwindow, 600, 500, 200, 400; 42: glutdisplayfuncdisplay; 43: glutmousefuncmouse; 44: glclearcolor00, 00, 10, 10; 45: glutmainloop; 46: Figure 10: GLUT 함수를통한윈도우프로그래밍예 년 4 월 25 일 금 오전 11:30 AS c 2014 서강대학교공과대학컴퓨터공학과임인성

9 서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 1/5 [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 담당교수: 임 인 성 답은 반드시 답안지에 기술할 것 공간이 부족할 경우 반드시 답안지 마지막 공간에 답이 있다고 명 기한 후 기술할 것 그 외에 연습지에 기술한 내용은 답안으로 인정 안함 2 아래의 코드는 그림 2에 도시한 원점 주변의 0 번 비행기와 1사분면의 1번 비행기를 그려주는 OpenGL 코드이다 1 2차원 아핀 변환인 이동 변환 T tx, ty, 크기 변 환 Ssx, sy, 그리고 회전 변환 Rθ에 해당하는 3행 3열 행렬들을 고려하자 a 3행 3열 행렬 Rθ를 기술하라 b RθS1, 1 = S1, 1Rθ 라 할 때, θ 의 값을 유도하라 힌트: 이 문제의 등식에 서 Rθ 행렬을 계산한 후, θ 를 구할 것 c T tx, ty S1, 1 = S1, 1T t x, t y 라 할 때, t x 와 t y 의 값을 유도하라 d RθT tx, ty = T t x, t y Rθ라 할 때, t x 와 t y 의 값을 유도하라 e 임의의 점 x, y를 y, x로 변환해주는 3 행 3열의 기하 변환 행렬 M 을 위의 기본 변환 행렬들의 곱으로 표현한 후, 최종 3행 3열 행렬의 내용을 기술하라 힌트: 위의 b, c, d에서 유도한 사실을 이용할 것 f 그림 1a의 직사각형 영역의 내용을 b의 직사각형 영역으로 매핑해주는 3행 3열의 기하 변환 행렬 M 을 위의 기본 변환 행렬 들의 곱으로 표현한 후, 최종 3행 3열 행렬 의 내용을 기술하라 y a 변환 전 x 10 x' y' Figure 2: 2차원 기하 변환 draw airplane; // airplane 0 glpushmatrix; gltranslatef300, 250, 00; glrotatef900, 00, 00, 10; draw airplane; // airplane 1 glpopmatrix; a 이제 이 그림에서처럼 1번 비행기를 2배 확대하여 직선 y = x + 100에 대하여 반사시켜 3사분면의 2번 비행기와 같이 그려주려 한다 아래의 코드는 이를 위한 코드인데, A에 들어갈 내용을 5개의 OpenGL API 함수 호출을 통하여 C/C++ 언어 문법에 맞게 기술하라 b 변환 후 Figure 1: 2차원 윈도우 매핑 glpushmatrix; A gltranslatef3000, 2500, 00; 년 4월 26일금 오전 11:00 AS 414 c 2013 서강대학교 공과대학 컴퓨터공학과 임인성

10 서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 2/5 glrotatef900, 00, 00, 10; glscalef20, 20, 10; draw airplane; // airplane 2 glpopmatrix; b 위의 문제와 동일한 내용을 아래와 같은 방식으로 구현하려 한다 이때 공란으로 되어있는 각 OpenGL API 함수의 인자를 기술하라 힌트: 1번 문제의 답을 잘 이용할 것 glpushmatrix; gltranslatef,, 00; glrotatef,,, glscalef,, 10; draw airplane; // airplane 2 glpopmatrix; ; Figure 3: 3차원 기하 변환 y c 그림 3은 아래의 코드의 for-loop에서 i가 3일 때까지 그림을 그려준 상태이다 이때 i가 6일 때 이 원뿔이 어느 지점에 어떻게 그려질지 그 모습을 가급적 정확히 그려 라 i가 6일 때만의 물체의 모습을 그릴것 u' Frame 2 3 그림 4에는 원점을 중심으로, 각각 세 개의 벡터 u = ux uy uz t, v = vx vy vz t, n = nx ny nz t 와 u0 = u0x u0y u0z t, v 0 = vx0 vy0 vz0 t, n0 = n0x n0y n0z t 에 의해 정의가 되는 두 개의 프레임 이 도시되어 있다 여기서 각 프레임의 세 벡터 는 서로 수직인 단위 벡터들임 이때 Frame 1을 Frame 2로 맞추어 주는 아핀변환에 해당하는 4 p' v n' n glpushmatrix; glcolor3f10, 00, 00; glrotatef-900, 10, 00, 00; // 원점 주변 원뿔 glutwirecone500, 1000, 10, 10; glpopmatrix; for i = 0; i <= 6; i++ { glpushmatrix; gltranslatef3000, 00, 00; glrotatef300*i, 10, 00, 00; gltranslatef00, 2500, 00; glrotatef300*i, 00, 00, 10; glcolor3f00, 00, 10; glrotatef-900, 10, 00, 00; glutwirecone500, 1000, 10, 10; glpopmatrix; M p z x u v' Frame 1 Figure 4: 프레임간의 좌표 변환 z p COP = 1, 0, 0 p' x -9 y PP : x = -9 Figure 5: 원근 투영 변환 행 4열 행렬 M 을 두 개의 회전 변환의 곱으로 표현하라 최종 변환 행렬이 아니라 곱해지는 각 행렬들의 16개 원소들을 정확히 기술할 것 4 그림 5에서 주어진 점 p = x y z 1t 을 p0 = x0 y 0 z 0 1t 로 변환해주는 4행 4열의 원근 투영 변환 행렬 M 을 기술하라 년 4월 26일금 오전 11:00 AS 414 c 2013 서강대학교 공과대학 컴퓨터공학과 임인성

11 서강대학교 공과대학 컴퓨터공학과 5 다음은 뷰잉 변환에 관한 문제이다 a 그림 6에는 카메라의 위치와 방향을 설정해주는 프레임이 도시되어 있다 이 경우에 해당하는 뷰잉변환을 설정해주 는 OpenGL 코드를 gltranslatefx, y, z, glscalefx, y, z, 그리고 glrotatefa, x, y, z 등의 함수만을 사용하여 가급적 적은 회수의 함수 호출을 통하여 구현하라 yw CSE4170 기초 컴퓨터 그래픽스 중간고사 3/5 라 c 바로 위 문제에서의 뷰잉 변환을 다음과 같이 구현하려한다 GLfloat m[16]; glmatrixmodegl MODELVIEW; glloadidentity; glmultmatrixfm; gltranslatef a, b c ; 이때 a, b, c의 값과 배열 m에 저장되 어야할 16개 원소 값을 순서대로 기술하라 WC 5 6 지금 아래처럼 카메라 변수 cam을 정의한 후, xw 5 ᄗ ᇷ ޗ #ᄬ zw ᰚ #ᄬ ᬧ #ᄬ Figure 6: 카메라의 배치 b 한 점 p와 서로 수직이고 길이가 1인 세 개의 벡터 u 카메라 기준 오른쪽 방향, v 카메라 기준 위쪽 방향, n 카메라에서 세상을 바라보는 정반대 방향으로 정의되 는 카메라 프레임을 생각하자 지금 비행기 물체를 자신의 모델링 좌표계 Modeling Coordinate에서 설계하고 있다 카메라 프레임이 원점에서 u, v, n 벡터가 각각 모델링 좌표계의 x, y, z 축과 일치하여 있는 상태에서 모델링 좌표계의 z축 둘레로 90도 회전한 후 x축 방향으로 10 만큼 이동하여 카메라 프레임을 조종석에 배치하였다고 하자 이제 비행기 물체에 대해 y축 둘레로 90도만큼 회전시킨후, y축으로 -10만큼, 그리고 z축으로 5만큼 이동시켜 세상 좌표계 World Coordinate 로 배치하였다고 하자 이때에 해당하는 뷰잉 변환을 다음과 같이 OpenGL API 함수를 사용하여 구현하려 한다 glmatrixmodegl MODELVIEW; glloadidentity; B 여기서 B에 들어갈 내용을 네 개의 OpenGL API 함수 호출을 통하여 구현하 typedef struct cam { float pos[3], uaxis[3], vaxis[3], naxis[3]; GLfloat mat[16]; GLdouble fovy, aspect, near c, far c; Cam; Cam cam; 디스플레이 컬백 함수에서 다음과 같이 물체를 그리려 한다 여기서 sfactor는 float 타입의 전역 변수임 void display void { glcleargl COLOR BUFFER BIT; glmatrixmodegl MODELVIEW; glloadidentity; // Line a glmultmatrixfcammat; gltranslatef-campos[0], -campos[1], -campos[2]; // Line b glpushmatrix; glscalefsfactor, sfactor, sfactor; // Line c draw teapot; glpopmatrix; glflush; a 보편적인 관점에서 Line a와 Line b 지점 은 각각 눈 좌표계 Eye Coordinate, 모델 년 4월 26일금 오전 11:00 AS 414 c 2013 서강대학교 공과대학 컴퓨터공학과 임인성

12 서강대학교 공과대학 컴퓨터공학과 링 좌표계, 세상 좌표계 중 어느 좌표계에 서의 의미를 가질까? b 다음과 같은 함수를 사용하여 세상 좌표계 의 좌표축을 그려주려 한다 void draw axesvoid { gllinewidth20; glbegingl LINES; glcolor3f10, 00, 00; // x축 glvertex3f00, 00, 00; glvertex3f1500, 00, 00; glend; gllinewidth10; 이 함수를 Line a, Line b, Line c 중 어느 시점에서 호출을 해야할까? c 문맥상 set rotate matcammat; 문장 은 cammat[] 배열에 어떤 값들을 어떻게 넣어주는 역할을 할지 정확히 기술하라 d 그림 7은 이 프로그램의 초기 렌더링 결과 를 보여주고 있다 여기서 세상 좌표계의 x축과 y축이 각각 오른쪽과 위쪽 방향으로 그려져 있고, z축은 화면 앞으로 튀어 나오고 있음 초기에 카메라의 위치는 다음과 같이 설정되어 있는데, campos[0] = 00, campos[1] = 00, campos[2] = 5000; CSE4170 기초 컴퓨터 그래픽스 중간고사 e 다음은 스페셜 컬백 함수의 일부이다 case GLUT KEY DOWN: { float c, s, tx, ty; c = cos *450/1800; s = sin *450/1800; tx = c*camnaxis[2] - s*camnaxis[0]; ty = s*camnaxis[2] + c*camnaxis[0]; camnaxis[2] = tx, camnaxis[0] = ty; tx = c*camuaxis[2] - s*camuaxis[0]; ty = s*camuaxis[2] + c*camuaxis[0]; camuaxis[2] = tx, camuaxis[0] = ty; campos[0] = 5000*camnaxis[0]; campos[1] = 5000*camnaxis[1]; campos[2] = 5000*camnaxis[2]; set rotate matcammat; glutpostredisplay; break; 아래 화살표 키를 누를 때마다 화면에서 물 주전자가 어떤 식으로 움직일지를 적절한 수치를 사용하여 정확히 기술하라 7 그림 8은 아래와 같은 어떤 디스플레이 컬백 함수를 통하여 렌더링한 모습을 도시하고 있다 여기서 세상 좌표계의 x축은 오른쪽 아래로, y 축은 위쪽을 향하고 있음 이때의 camnaxis[] 벡터의 세 원소 값을 기술하라 Figure 7: 물주전자 그리기 4/5 Figure 8: 계층적 모델링 년 4월 26일금 오전 11:00 AS 414 c 2013 서강대학교 공과대학 컴퓨터공학과 임인성

13 서강대학교 공과대학 컴퓨터공학과 glmatrixmodegl MODELVIEW; glloadidentity; glulookat100, 100, 100, 00, 00, 00, 00, 10, 00; draw cow02, 02, 02; // 원점 주변 소 glpushmatrix; // Line a glscalef40, 40, 40; draw cow00, 00, 00; // 어미소 glpushmatrix; glrotatef100*angle, 10, 00, 00; gltranslatef-01, 00, 03; glscalef0025, 0025, 0025; draw box; // 상자 glpopmatrix; glpushmatrix; gltranslatef015, 03, 00; glscalef03, 03, 03; draw cow00, 00, 10; // 송아지 glpopmatrix; glpopmatrix; a 프로그램 문맥상 송아지는 원점 주변 소의 몇 배 크기를 가질까? b 지금 타이머 컬백 함수에 의해 변수 angle 의 값이 1씩 증가하면서 0과 359 사이 순 환 위의 디스플레이 컬백 함수가 호출되고 있다 어미소, 송아지, 상자 물체들이 세상 좌표계의 y축 둘레로 반경 5인 원을 따라 같 이 회전을 하게 하게 하기 위하여 Line a 지점에 필요한 OpenGL 함수를 기술하라 c 이때 상자는 어떤 물체를 기준으로 어떠한 방식으로 어떤 속도로 움직일까? d 위 프로그램에서 제거를 해도 아무런 문제 가 없는 문장을 모두 정확히 기술하라 예를 들어, // 상자 문장 위의 glscalef0025, 0025, 0025; 문장 처럼 기술하고, 주어진 코드 뒤에 다른 물체를 그리는 코드가 올 수 있음 e 위 코드에서 원점 주변 소, 어미소, 송아 지, 상자 등 각 문장이 수행되는 시점에는 자신만의 좌표계가 설정되어 있다고 할 수 있다 이때 송아지 문장이 수행되는 시점에 서 한 꼭지점에 어떤 기하 변환을 가하면 상 자 문장이 수행되는 시점의 좌표계로 변환 할 수 있을까? T tx, ty, tz, Rα, rx, ry, rz, CSE4170 기초 컴퓨터 그래픽스 중간고사 5/5 Ssx, sy, sz 행렬과 그것들의 역행렬을 적 절히 사용하여 그 기하 변환을 합성하라 8 다음 단답식 문제에 답하라 a 3차원 투영공간의 점 60, 60, 90, 30에 해당하는 아핀공간의 점의 좌표 x, y, z를 기술하라 b RGB 모델로 값이 03, 05, 10인 색깔을 CMY 모델로 나타내면? c 다음 행렬의 역행렬 M 1 의 내용을 기술하 라 M = d 어떤 4행 4열 행렬이 아핀 변환 행렬이 되 기위한 조건을 기술하라 e OpenGL의 뷰잉 파이프라인에서 카메라 의 위치와 방향을 설정 해주는 변환은 정 확히 어느 좌표계에서 어느 좌표계로 보내 주는 변환인가? f 3차원 공간의 두 벡터 p = px py pz t 와 q = qx qy qz t 에 대하여 외적 cross product 연산을 가한 벡터 r = p q = rx ry rz t 의 y 좌표 ry 의 값을 기술하라 g glulookat-10, 00, 00, 20, 00, 00, 00, 09, 00; 문장 수행 시 계산이 되는 뷰잉 변환 행렬 MV = mij, i, j = 1, 2, 3, 4의 세 번째 행의 원소들 m31, m32, m33, m34 의 내용을 기술하라 h 3차원 아핀 변환을 나타내는 4행 4열 행렬 이 변환 후에도 물체의 크기와 모양을 보존 해주기 위한 조건을 정확히 기술하라 i 주어진 회전 변환 R과 크기 변환 S간에 교 환 법칙이 성립하기 위한 조건은 무엇일까? j 만약 여러분이 gltranslatefx, y, z 함수를 가장 적은 회수의 산술 연산만 사용 하여 구현한다고 할 때, 덧셈/뺄셈, 곱셈, 그리고 나눗셈 연산이 각각 몇 번씩 필요 할까? 여기서 스택에 있는 행렬은 임의의 값을 가질 수 있다고 가정함 k 두 직선 3x + 2y + 5 = 0과 6x + 4y + 5 = 0의 교점에 대한 투영 공간에서의 동차 좌표를 상수만 사용하여 기술하라 l 사진 촬영시 피사체를 배치하는 과정을 OpenGL 렌더링에서는 어떤 변환을 통하 여 구현하는가? <수고 많았습니다!> 년 4월 26일금 오전 11:00 AS 414 c 2013 서강대학교 공과대학 컴퓨터공학과 임인성

14 서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 1/9 [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 담당교수: 임 인 성 답은 반드시 답안지에 기술할 것 공간이 부족할 경우 반드시 답안지 몇 쪽의 뒤에 있다고 명기한 후 기술할 것 그 외의 경우의 답안지 뒤쪽이나 연습지 에 기술한 내용은 답안으로 인정 안함 1 2차원 기하 변환 중 이동 변환 T tx, ty, 크기 변 환 Ssx, sy, 그리고 회전 변환 Rθ에 해당하는 3행 3열 행렬들을 고려하자 a 임의의 점 x, y를 y, x로 변환해주는 3행 3열의 기하 변환 행렬 M1 을 위의 기 본 변환 행렬들의 합성을 통하여 표현하라 최종 행렬의 내용도 정확히 기술할 것 2 그림 2에서 오른쪽에 있는 비행기는 세상 좌 표계 공간에서 8자 모양의 궤적을 따라 회전 을 하고 있다 아래의 프로그램에서 Line B 의 draw airplane 함수를 호출할 때 그려짐 또한 원점 근처에 있는 비행기는 이 비행기가 자신의 모델링 좌표계 있는 즉 아래의 프로그 램에서 아무런 모델링 변환 없이 Line A의 draw airplane 함수를 호출할 때 그려지는 모습에 해당한다 참고로 angle2와 phase 변수 는 정수 타입의 변수로 0으로 초기화되어 있고, 각 원의 반지름은 02*win height임 b 임의의 점 x, y를 y, x로 변환해주는 3 행 3열의 기하 변환 행렬 M2 를 위의 기본 변환 행렬들의 합성을 통하여 표현하라 최 종 행렬의 내용도 정확히 기술할 것 c T tx, ty S1, 1 = S1, 1T α, β라 할 때, α와 β의 값은? d RθS1, 1 = S1, 1Rγ라 할 때, γ의 값은? e 그림 1a의 직사각형 영역의 내용을 b의 직사각형 영역으로 매핑해주는 3행 3열의 기하 변환 행렬 M3 를 위의 기본 변환 행 렬들을 사용하여 합성하라 최종 행렬 값도 정확히 기술할 것 y a 변환 전 x 10 x' y' b 변환 후 Figure 1: 2차원 윈도우 매핑 Figure 2: 비행기 애니메이션 #define TO RAD /1800 void timerint value { gluttimerfunc15, timer, 2; angle2 = angle2 + 1 % 180; if angle2 == 0 phase = phase + 1 % 4; trans2 x = 02*win height *cosdouble TO RAD*angle2 + 10; trans2 y = 02*win height *sindouble TO RAD*angle2; glutpostredisplay; void display void { glcleargl COLOR BUFFER BIT; 년 4월 26일목 오후 7:00 AS 414 c 2012 서강대학교 공과대학 컴퓨터공학과 임인성

15 서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 yw draw axes; draw path; draw airplane; // Line A glpushmatrix; switchphase { case 1: gltranslatef-04*win height, 00, 00; glscalef10, -10, 10; break; case 2: glscalef B, 10; break; case 3: gltranslatef02*win height, 00, 00; glscalef-10, 10, 10; gltranslatef-02*win height, 00, 00; glscalef10, -10, 10; gltranslateftrans2 x, trans2 y, 00; glrotatef A ; draw airplane; // Line B glpopmatrix; glutswapbuffers; a 프로그램 문맥 상 이 그림이 그려진 순간의 변수 phase의 값은 얼마일까? b 프로그램 문맥 상 A에 들어갈 내용을 C 언어 문법에 맞게 정확히 기술하라 WC 4 그림 4에는 점 q = qx qy qz t 을 중심으로, 각각 세 개의 벡터 u = ux uy uz t, v = vx vy vz t, n = nx ny nz t 와 u0 = u0x u0y u0z t, v 0 = vx0 vy0 vz0 t, n0 = n0x n0y n0z t 에 의해 정의가 되는 두 개의 프레임이 도시되어 있다 여기서 각 프레임의 세 벡터는 서로 수직인 단위 벡터 들임 a 지금 Frame 1을 Frame 2로 맞추어 주는 아 핀변환에 해당하는 4행 4열 행렬 M 을 이동 변환과 회전 변환을 적절히 합성하여 구하 려 한다 이때 회전 변환을 두 번 적용할 5 xw 5 ᄗ ᇷ ޗ #ᄬ zw ᰚ #ᄬ ᬧ #ᄬ Figure 3: 간단한 뷰잉 변환 경우의 M 을 4행 4열 기하 변환 행렬들의 곱으로 표현하라 최종 변환 행렬이 아니라 곱해지는 각 요소 행렬들의 16개 원소를 정 확히 기술할 것 b 위의 문제에서 회전 변환을 한 번 적용할 경우의 M 을 4행 4열 행렬의 곱으로 표현 하라 마찬가지로 곱해지는 각 행렬의 16 개 원소를 정확히 기술하고, 특히 회전 변 환 행렬의 내용은 여섯 개의 벡터 u, v, n, u0, v 0, n0 들의 곱 을 사용하여 간결하게 표현하라 각 벡터는 3행 1열의 벡터임을 명심하고, 예를 들어, u v t 와 같은 방식의 곱셈 사용 y c 프로그램 문맥 상 B에 들어갈 두 개의 값 을 기술하라 3 그림 3에는 카메라의 위치와 방향을 설정해주 는 프레임이 도시되어 있다 이 경우에 해당 하는 뷰잉변환을 설정해주는 OpenGL 코드를 gltranslatefx, y, z, glscalefx, y, z, 그리고 glrotatefa, x, y, z 등의 함수만을 사용하여 가급적 적은 회수의 함수 호출을 통 하여 구현하라 2/9 M p u' Frame 2 n' n z p' v q v' x u Frame 1 Figure 4: 프레임 변환 문제 5 다음은 어떤 프로그램의 일부이다 typedef struct cam { float pos[3]; float uaxis[3], vaxis[3], naxis[3]; GLfloat mat[16]; int move; GLdouble fovy, aspect, near c, far c; Cam; Cam cam; 년 4월 26일목 오후 7:00 AS 414 c 2012 서강대학교 공과대학 컴퓨터공학과 임인성

16 서강대학교 공과대학 컴퓨터공학과 #define Mrow,col m[col*4+row] void set rotate matglfloat *m { M0,0 = ; M0,1 = ; M0,2 = ; M1,0 = ; M1,1 = ; M1,2 = ; M2,0 = ; M2,1 = ; M2,2 = ; M0,3 = M1,3 = M2,3 = 00; M3,0 = M3,1 = M3,2 = 00; M3,3 = 10; void rendervoid { glcleargl COLOR BUFFER BIT; glmatrixmodegl MODELVIEW; glloadidentity; glmultmatrixfcammat; gltranslatef,, ; draw axis; draw world; // Modeling Transform here glutswapbuffers; #define CAM TSPEED 005 void renew cam pos xint del { campos[0] += CAM TSPEED*del* A ; campos[1] += CAM TSPEED*del* B ; campos[2] += CAM TSPEED*del* C ; void renew cam pos yint del { void renew cam pos zint del { #define TO RADIAN void get rotation matfloat x, float y, float z, float angle, float m[3][3] { void renew cam ori xint angle { float m[3][3], tmpx, tmpy, tmpz; get rotation matcamuaxis[0], camuaxis[1], camuaxis[2], CAM RSPEED*angle, m; camvaxis[0] = m[0][0]*tmpx=camvaxis[0] + m[0][1]*tmpy=camvaxis[1] + m[0][2]*tmpz=camvaxis[2]; camvaxis[1] = m[1][0]*tmpx + m[1][1]*tmpy + m[1][2]*tmpz; camvaxis[2] = m[2][0]*tmpx + m[2][1]*tmpy + m[2][2]*tmpz; camnaxis[0] = ; camnaxis[1] = ; camnaxis[2] = ; set rotate matcammat; void renew cam ori yint angle { CSE4170 기초 컴퓨터 그래픽스 중간고사 3/9 void renew cam ori zint angle { a 프로그램 문맥 상 투영 변환과 직접적인 관 련이 있는 변수들을 모두 나열하라 b set rotate mat*은 뷰잉 변환과 관련된 행렬에 대한 함수이다 프로그램 문맥 상 M0,0 = ;, M1,0 = ;, M2,0 = ; 문장에는 어떤 내용이 들어가야 할지 C언어 문법에 맞게 기술하라 c 프로그램 문맥 상 get rotation mat* 함 수는 정확히 어떤 수학적인 내용을 어떤 인 자를 통하여 받아들여, 어떤 수학적인 내용 을 어떤 인자로 통하여 돌려주는지를 정확 히 기술하라 d 디스플레이 컬백 함수인 render 함수 내 부에서 gltranslatef* 함수 호출 시 필 요한 세 인자를 C언어 문법에 맞게 기술하 라 e renew cam pos x* 함수는 점 campos와 세 벡터 camuaxis, camvaxis, camnaxis 로 정의된 카메라 프레임을 camuaxis 방 향을 따라 del 값이 양수일 때 오른쪽으로, 음수일 때는 왼쪽으로 이동시켜주는 작업 을 한다 이러한 목적을 달성하도록 A, B, 그리고 C에 들어갈 내용을 C언어 문 법에 맞게 정확히 기술하라 f renew cam ori x* 함수도 카메라에 프 레임에 대하여 어떤 조작을 가하고 있는데 그것이 무엇인지 정확히 기술하라 6 다음은 void gluperspectivefovy, asp, n, f; 함수에 관한 문제이다 a 그림 5는 이 함수가 정의하는 뷰 볼륨을 도 시하고 있다 눈 좌표계 EC 상에서 투 영 참조점이 원점인 상황에서 임의의 점 xe ye ze t 인 점을 ze = n 평면, 즉 ze 축 에 수직이고 음의 방향으로 n만큼 떨어진 평면에 원근 투영한 점을 x e ye nt 이라 할 때, x e 와 ye 값을 기술하라 b 위 함수에 의해 정의되는 뷰 볼륨의 앞면에 해당하는 직사각형 영역 0번 점과 1번 점을 포함하는 직사각형의 네 개의 모서리 중 0번 점과 1번 점의 좌표를 기술하라 당연히 ze 좌표는 n이며, 위 함수의 인자 f ovy, asp, n, f 등과 tan, cot 등의 삼각 함 수를 사용하여 표현하라 년 4월 26일목 오후 7:00 AS 414 c 2012 서강대학교 공과대학 컴퓨터공학과 임인성

17 서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 4/9 ye w ze 옆모습 3 2 ye h 0 -f asp = w/h 1 ze xe -n fovy Figure 5: 투영 변환 c 뷰 볼륨 안에 존재하는 점을 ze = n 평면 에 투영한 점 x e ye nt 은 바로 위 문제의 직사각형 영역 안에 들어오게 되는데, 이 영 역을 x와 y축 각각에 대해 -1에서 1까지의 구간이 정의하는 정사각형 영역으로 매핑 을 해주면, 정규 디바이스 좌표계 NDC 상에서의 좌표를 구할 수 있게 된다 위 두 문제의 결과를 바탕으로 하여, EC 상의 점 xe ye ze t 을 위 함수에 의해 NDC로 변환 해준 점의 x, y 좌표 xnd ynd t 를 xe, ye, ze, 그리고 위 함수의 인자 f ovy, asp, n, f 값과 tan, cot 등의 삼각 함수를 사용하여 표현하 라 간단히 유도 과정을 기술할 것 int iii = 0; void displayvoid { glcleargl COLOR BUFFER BIT; glmatrixmodegl MODELVIEW; glpushmatrix; glrotatefiii*900, 00, 00, 10; glbegingl TRIANGLES; glvertex2f10, 00; glvertex2f10, 10; glvertex2f00, 10; glend; glpopmatrix; glflush; d znd 의 경우 다음과 같이 됨을 보일 수 있는 데, void mousepressint button, int state, int x, int y { if button == GLUT RIGHT BUTTON && state == GLUT DOWN && glutgetmodifiers == GLUT ACTIVE SHIFT iii = iii+1%4; glutpostredisplay; znd = +n ff n ze f2nf n ze 지금까지 구한 모든 값을 사용하여 위 함수 가 계산을 해주는 4행 4열 투영 변환 행렬 MP 를 정확히 기술하라 e 이제 위의 행렬 MP 에 xe ye ze 1t 을 곱하 면 절단 좌표계 CC 상의 점 xc yc zc wc t 로 변환이 되는데 이때 wc 값은 기하적으로 어떤 정보를 제공할까? f 투영 공간 projective space인 CC에서 다 시 유클리드 공간인 NDC로 돌아오기 위해 수학적으로 xc, yc, zc 값을 wc 로 나누어주 는데, 이때 기하적으로 어떤 현상이 발생하 는가? 7 아래 주어진 2차원 기하 변환에 관한 프로그램 을 보고 답하라 void reshapeint width, int height { glviewport0, 0, width, height; glmatrixmodegl PROJECTION; glloadidentity; glmatrixmodegl MODELVIEW; glloadidentity; glutpostredisplay; void OpenGLInitandRegisterCallbackvoid { glclearcolor10, 10, 10, 10; glpolygonmodegl FRONT AND BACK, GL FILL; glcolor3f10, 00, 00; glutdisplayfuncdisplay; glutreshapefuncreshape; 년 4월 26일목 오후 7:00 AS 414 c 2012 서강대학교 공과대학 컴퓨터공학과 임인성

18 서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 5/9 Figure 6: OpenGL을 사용한 2차원 기하 변환 glutmousefuncmousepress; void main int argc, char **argv { glutinit&argc, argv; glutinitdisplaymodeglut RGBA; glutinitwindowsize500, 500; glutcreatewindow"midterm Problem"; OpenGLInitandRegisterCallback; glutmainloop; a 이 프로그램은 사용자가 어떤 행동 action 을 취할 때마다, 네 번을 주기로 화면의 내 용이 반복된다 과연 어떤 행동인지 정확히 기술하라 b 사용자가 위 문제의 행동을 취할 때 화면의 그림이 어떤 식으로 순환하는지, 그림 6과 같은 방식으로 그려라 가장 처음 상태를 가 장 왼쪽에 도시하고, 도형의 모양과 위치를 가급적 정확히 표시하며, 어떤 부분이 적색 영역인지 분명히 밝힐 것 c 원래의 프로그램 상태에서 dispaly 함 수의 glrotatef*; 문장 바로 다음에 다 음 문장을 삽입하면 화면의 내용이 어떻게 반복될지, 그림 6과 같은 방식으로 그려라 gltranslatef-10, -10, 00; d 바로 위 문제의 프로그램 상태에서, 즉 이 동 변환 관련 문장이 삽입된 상태에서 reshape 함수의 glutpostredispaly; 문장 바로 직전에 아래와 같은 문장을 삽입 할 경우 화면의 내용이 어떻게 반복될지, 그림 6과 같은 방식으로 그려라 glortho00, 10, 00, 10, -10, 10; 8 다음 단답식 문제에 답하라 필요할 경우 OC Object Coordinate, CC, EC, MC, NDC, WC, WdC Window Coordinate 등의 OpenGL 좌표계 이름을 적절히 사용하라 a 3차원 투영공간의 점 60, 60, 90, 30에 해당하는 아핀공간의 점의 좌표 x, y, z를 기술하라 b RGB 모델로 값이 03, 05, 10인 색깔을 CMY 모델로 나타내면? c 3차원 아핀변환을 나타내는 4행 4열 행렬 M = mij, i, j = 1, 2, 3, 4이 변환 후에 도 물체의 크기와 모양을 보존해주기 위하 여 M 의 어느 부분이 어떤 성질을 가져야 하는지 행렬이나 벡터의 성질을 사용하여 기술하라 d 다음 행렬의 역행렬 M 1 의 내용을 기술하 라 M = e 어떤 4행 4열 행렬 M = mij, i, j = 1, 2, 3, 4이 아핀 변환 행렬이 되기위한 조 건을 mij 의 값을 통하여 기술하라 f 3차원 공간의 [ 1, 1] [ 1, 1] [ 1, 1]의 영 역만 고려하는 좌표계는 어느 좌표계일까? g 카메라의 뷰 방향에 대해 꼭지점이 나열된 순서를 통하여 불필요한 삼각형 예를 들 어, 안보이는 뒷면에 해당하는을 제거할 수 있는데, OpenGL에서는 이러한 과정이 어느 좌표계에서 수행이 될까? h 정상적인 렌더링 상황에서 3차원 좌표점 을 동차좌표 x, y, z, w로 표현할 때 순간 적으로 w가 1이 아닌 값이 나타날 수 있는 OpenGL 좌표계 이름은? i 원근 투영을 사용하여 렌더링을 할 경우, OpenGL 뷰잉 파이프라인에서 정확히 어 느 좌표계에서 어느 좌표계로 넘어갈 때, 원근감이 생성이 되는가? 년 4월 26일목 오후 7:00 AS 414 c 2012 서강대학교 공과대학 컴퓨터공학과 임인성

19 서강대학교 공과대학 컴퓨터공학과 j OpenGL의 뷰잉 파이프라인에서 카메라 의 위치와 방향을 설정 해주는 변환은 정 확히 어느 좌표계에서 어느 좌표계로 보내 주는 변환인가? k OpenGL의 뷰잉 파이프라인에서촬영한 필 름을 현상한 후 인화지에 확대/인화하는 과 정은 정확히 어느 좌표계에서 어느 좌표계 로 보내주는 과정에 해당하는가? l 만약 여러분이 glscalefx, y, z 함수를 가장 적은 회수의 덧셈/뺄셈, 곱셈, 그리고 나눗셈 연산을 사용하여 구현한다고 할 때 각각 몇 번씩 수행해야 할까? 여기서 스택 에 있는 4행 4열 행렬은 임의의 값을 가질 수 있다고 가정하고, 답은 +/-= 번, *= 번, /= 번과 같이 기술하라 m 정상적인 렌더링 상황에서 Projection Matrix Stack의 탑에 있는 행렬에 곱해지는 꼭 지점 좌표가 존재하는 OpenGL 좌표계 이 름은? n 3차원 공간의 두 벡터 p = px py pz t 와 q = qx qy qz t 에 대하여 외적 cross product 연산을 가한 벡터 r = p q = rx ry rz t 의 y 좌표 ry 의 값을 기술하라 CSE4170 기초 컴퓨터 그래픽스 중간고사 6/9 f 59번의 이동 변환 관련 문장이 수행되기 직전의 모델뷰 행렬 스택의 내용을 정확 하게 그려라 MV MP, MV P 와 그림 7 의 행렬 기호등을 적절히 사용하라 현재 draw wheel and nutangle 함수는 100번 문 장에서 호출한 상태임 g 52번 문장의 draw wheel and nutangle 함 수에서 이상한 부분을 지적하고 수정하라 이유를 설명할 것 h 이 프로그램에서 사용하는 변수들을 사용 하여 정규 디바이스 좌표계 NDC의 좌표 xnd, ynd 를 윈도우 좌표계 WdC의 좌표 xwd, ywd 로 어떻게 변환 시켜주는지 뷰폿 변환x와 y 좌표에 대해서만을 유도하라 i 이 프로그램에서 뷰 매핑과 가장 관련이 많 은 문장의 번호를 기술하라 j 이 프로그램에서 자동차를 세상 좌표계로 배치해주는 모델링 변환이 강체 변환인지 아닌지 답하고 그 이유를 간략히 설명하라 o glulookat-10, 00, 00, 20, 00, 00, 00, 09, 00; 문장 수행 시 계산이 되는 뷰잉 변환 행렬 MV = mij, i, j = 1, 2, 3, 4의 세 번째 행의 원소들 m31, m32, m33, m34 의 내용을 기술하라 9 시험지 뒤에 첨부한 프로그램은 적절한 모델링 변환을 통하여 자동차를 그려주는 OpenGL 프 로그램이다 이 프로그램을 보면서 답하라 a 이 프로그램은 그림 7에 주어진 자동차에 대한 트리 구조를 어떤한 방식으로 탐색을 하고 있는가? 자료 구조 시간에 배운 용어 를 사용할 것 b 이 프로그램에서 원근 나눗셈과 가장 관련 이 있는 문장의 번호는? c 이 프로그램에서는 사용자가 어떠한 방식 으로 자동차를 앞으로 움직이게 할수 있을 까? 정확하게 기술할 것 d 세상 좌표계 WC를 기준으로 할 때 카메 라가 세상을 바라보는 방향 벡터를 필요 시 이 프로그램에서 사용하는 변수들을 사 용하여 표현하라 e 눈 좌표계 EC를 기준으로 할 때 카메라 가 세상을 바라보는 방향 벡터를 필요 시 이 프로그램에서 사용하는 변수들을 사용 하여 표현하라 년 4월 26일목 오후 7:00 AS 414 c 2012 서강대학교 공과대학 컴퓨터공학과 임인성

20 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 7/9 Figure 7: 자동차의계층적표현 년 4 월 26 일 목 오후 7:00 AS c 2012 서강대학교공과대학컴퓨터공학과임인성

21 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 8/9 filename mvcarcpp page 1 1 #include <stdioh> 2 #include <mathh> 3 #include <GL/gluth> #define MAX_POLY #define MAX_VERT 20 7 #define MAX_PATH #define DRAW_CAR_DUMMY #define DRAW_CAR_CORRECT typedef struct { 13 int nvertex; 14 float poly[max_vert][3]; 15 mypolygon; mypolygon body[max_poly], wheel[max_poly], nut[max_poly]; 18 int npolyb, npolyw, npolyn; float path[max_path][3]; 21 int npath, path_exist, drawing_state = DRAW_CAR_CORRECT; double dist; int prev_i, cur_i = 0; 26 int rightbuttonpressed = 0; void read_objectchar *file, mypolygon *object, int *npoly; 29 void read_pathchar *file; 30 void read_objectsvoid; 31 void draw_axesvoid; 32 void draw_pathvoid; 33 void draw_groundvoid; void draw_bodyvoid { 36 // Draw the body void draw_wheelfloat angle { 41 // Draw the wheel void draw_nutvoid { 46 // Draw the nut #define rad #define ww void draw_wheel_and_nutfloat angle { 53 int i; draw_wheelangle; // draw wheel object 56 for i = 0; i < 5; i++ { 57 // nut i 58 glpushmatrix; 59 gltranslatefrad-05, 0, ww; // rad = 17, ww = glrotatef720*i, 00, 00, 10; 61 draw_nut; // draw nut object 62 glpopmatrix; #define TO_DEG void normalize_vec3float *v { float dot_prod_vec3float *u, float *v { float compute_length_mul_two_vec3float *u, float *v { float angle_between_two_vec3float *u, float *v { void cross_prod_vec3float *u, float *v, float *n { 84 //??? float wheel_rot_angle_in_yvoid { float wheel_rot_angle_in_zvoid { void draw_car_dummyvoid { 97 draw_body; // draw body object 98 glpushmatrix; 99 gltranslatef-39, -35, 45; 100 draw_wheel_and_nut00; // wheel glpopmatrix; glpushmatrix; 104 gltranslatef39, -35, 45; 105 draw_wheel_and_nut00; // wheel glpopmatrix; glpushmatrix; 109 gltranslatef-39, -35, -45; 110 glscalef10, 10, -10; 111 draw_wheel_and_nut00; // wheel glpopmatrix; glpushmatrix; 115 gltranslatef39, -35, -45; 116 glscalef10, 10, -10; 117 draw_wheel_and_nut00; // wheel glpopmatrix; void set_up_rot_matfloat *m, int i { void draw_fenceglfloat r, GLfloat g, GLfloat b { 126 printed at 4/20/103, 23: 년 4 월 26 일 목 오후 7:00 AS c 2012 서강대학교공과대학컴퓨터공학과임인성

22 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 9/9 filename mvcarcpp page void draw_fencesvoid { void draw_world void { 134 GLfloat m[16]; glmatrixmodegl_modelview; // Modeling Transformation 137 glloadidentity; 138 glulookat-150, 200, 400, path[cur_i][0], 489, path[cur_i][2], 00, 10, 00; draw_ground; 141 draw_fences; 142 draw_axes; 143 if path_exist draw_path; set_up_rot_matm, cur_i; glpushmatrix; 148 gltranslatefpath[cur_i][0], 489, path[cur_i][2]; 149 glmultmatrixfm; draw_car_dummy; 152 glpopmatrix; void rendervoid { 156 glcleargl_color_buffer_bit; 157 draw_world; 158 glutswapbuffers; void keyboard unsigned char key, int x, int y { int prevx_mouse; 166 void mousepressint button, int state, int x, int y { 167 if button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN { 168 prevx_mouse = x; 169 rightbuttonpressed = 1; else if button == GLUT_RIGHT_BUTTON && state == GLUT_UP 172 rightbuttonpressed = 0; void mousemoveint x, int y { 176 double deltax; if rightbuttonpressed { 179 deltax = x - prevx_mouse; 180 prevx_mouse = x; 181 if cur_i + deltax > 0 && cur_i + deltax < npath-1 { 182 prev_i = cur_i; cur_i += deltax; 183 dist = sqrtpath[cur_i][0]-path[prev_i][0]*path[cur_i][0]-path[prev_i][ 0] path[cur_i][1]-path[prev_i][1]*path[cur_i][1]-path[prev_i][1] path[cur_i][2]-path[prev_i][2]*path[cur_i][2]-path[prev_i][2] ; 186 if deltax < 00 dist *= -10; 187 glutpostredisplay; void reshapeint width, int height { 193 glviewport0, 0, width, height; glmatrixmodegl_projection; 196 glloadidentity; 197 gluperspective300, width/double height, 10, 1500; void init_openglvoid { void init_windowsvoid { 205 glutinitdisplaymodeglut_rgb GLUT_DOUBLE; 206 glutinitwindowsize1280, 1024; 207 glutcreatewindow"car in Hierarchy 2"; 208 glutdisplayfuncrender; 209 glutkeyboardfunckeyboard; 210 glutmousefuncmousepress; 211 glutmotionfuncmousemove; 212 glutreshapefuncreshape; void mainint argc, char **argv { 216 read_objects; 217 glutinit&argc, argv; 218 init_windows; 219 init_opengl; 220 glutmainloop ; printed at 4/20/103, 23: 년 4 월 26 일 목 오후 7:00 AS c 2012 서강대학교공과대학컴퓨터공학과임인성

23 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 1/8 [CSE4170: 기초컴퓨터그래픽스 ] 중간고사 담당교수 : 임인성 답은반드시답안지에기술할것 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함 1 다음은 2 차원기하변환에관한문제이다 a 점 4, 5 를중심으로물체의크기를두배확대해주는 3 행 3 열의기하변환행렬 M 을이동변환 T t x, t y, 크기변환 Ss x, s y, 회전변환 Rθ 등의기본변환행렬을사용하여합성하려한다 i M 을세개의기본변환행렬의곱으로표현하라 ii M 을두개의기본변환행렬의곱으로표현하라 b 임의의점 x, y 를 y, x 로변환해주는 3 행 3 열의기하변환행렬 M 을위문제에주어진기본변환행렬을사용하여표현하라 c T t x, t y S1, 1 = S1, 1T α, β 라할때, α 와 β 의값은? d RθS1, 1 = S1, 1Rγ 라할때, γ 의값은? e 임의의각도 θ 에대해 c = cosθ 와 s = sinθ 라하자 RθT t x, t y = T δ, ϵrθ 이라할때, δ 와 ϵ 의값을 t x, t y, c, s 등을사용하여표현하라 2 그림 1 과아래코드를고려하자 void display void { glcleargl COLOR BUFFER BIT; draw axes text line; draw airplane; // Draw A glpushmatrix; // Transforms for B draw airplane; // Draw B B A D Figure 1: 2 차원기하변환 glpopmatrix; glpushmatrix; draw airplane; // Draw C glpopmatrix; glpushmatrix; gltranslatefh/40, 00, 00; glrotatef450, 00, 00, 10; glscalefsx, sy, 10; glrotatef-450, 00, 00, 10; gltranslateftx, ty, 00; glrotatef2700, 00, 00, 10; glscalef20, 20, 10; draw airplane; // Draw D glpopmatrix; 아래문제에서요구하는 2 차원기하변환을다음 OpenGL 함수들을적절히사용하여 C 언어문법에맞게정확히기술하라 함수호출순서는 OpenGL 프로그래밍관례에따르고, 이동 C 년 4 월 27 일 수 오후 3:00 AS c 2011 서강대학교공과대학컴퓨터공학과임인성

24 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 2/8 변환이필요하다면 z 값은 0 으로, 크기변환이필요하다면 z 값은 1 로설정할것 void gltranslatefglfloat x, GLfloat y, GLfloat z; void glscalefglfloat x, GLfloat y, GLfloat z; void glrotatefglfloat angle, GLfloat x, GLfloat y, GLfloat z; a // Draw X 라인의 draw airplane; 문장은각각이그림에서 X 로표시된비행기를그려주고있다 B 비행기는 A 비행기를세배확대하여원점둘레로시계방향으로 270 도회전한후, 그중심을 W/40, H/40 지점으로이동시켜그린상태를보여주고있다 이러한그림이그려지도록 // Transforms for B 부분의내용을 OpenGL 함수를사용하여기술하라 b 비행기 C는비행기 A를시계방향으로 90 도회전한후, 그중심을 W/25, H/80 지점으로이동시켜그린상태를보여주고있다 지금그러한비행기 C를두배확대한후 y = x H 40 둘레로반사시켜비행기 D를그려주려한다 이때필요한 sx, sy 와 tx, ty의내용을정확히기술하라 c 비행기 D 를그려주는코드는아래와같이단순화시킬수있다 glpushmatrix; gltranslatefttx, tty, 00; glrotatefra, rx, ry, rz; glscalefssx, ssy, 10; draw airplane; // Draw D glpopmatrix; 이때필요한 ttx, tty, ra, rx, ry, rz, ssx, ssy 의내용을정확히기술하라 b 이행렬의왼쪽 - 위쪽의 3 행 3 열부행렬의세개의열벡터를각각 r 1, r 2, r 3 라할때, 이세개의벡터가만족하는수학적인성질을정확히기술하라 c n 에회전변환을가하려면 M 1 t 에 n 을곱하면된다 이때 M 1 t 의내용을정확히기술하라 4 DOP Direction of Projection 가 2, 2, 2 이고 PP Projection Plane 가 2x + 2y + 2z = 1 인평행투영의변환행렬이다음과같다고하자 M = e f g h i j k l m n o p q r s t a 네번째행의 q, r, s, t 값을기술하라 b 첫번째행의 e, f, g, h 값을유도하라 유도과정을기술할것 5 다음은 OpenGL 을사용한 3 차원뷰잉에관련된문제이다 아래그림과코드를보고답하라 a 프로그램초기수행모습 소가여러분을향해있음 3 3 차원공간에주어진법선벡터 normal vector n = nx, ny, nz t 에대하여회전변환을가하는문제를고려하자 a 회전변환행렬 M을아래와같이정의한다면, r 11 r 12 r 13 v 1 r M = 21 r 22 r 23 v 2 r 31 r 32 r 33 v 3, 이때 v 1, v 2, v 3 의값은어떤값을가질까? b r 키를 16 번누른후의모습 즉 90 도회전한모습 Figure 2: 간단한 3 차원뷰잉 빨강, 초록, 파랑색깔의세직선은각각세상좌표계에서의 x w, y w, z w 축을나타냄 년 4 월 27 일 수 오후 3:00 AS c 2011 서강대학교공과대학컴퓨터공학과임인성

25 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 3/8 void displayvoid { glcleargl COLOR BUFFER BIT; glmatrixmodegl MODELVIEW; glloadidentity; glulookat,,,,,,,, ; // ModelView matrix draw axes; glcolor3f02, 05, 02; glpushmatrix; // We need a modeling transform here draw cow; glpopmatrix; glflush; a 위의코드에서 draw cow 함수는자신의모델링좌표계 Modeling Coordinate, MC 에서정의된소를구성하는삼각형을그려주는함수이다 그림 2a 는이소를각축방향으로 5 배확대하여, x 축둘레로 90 도회전한후, 50, 50, 15 만큼이동시켜그려준상태를보여주고있다 이때 // We need a modeling transform here 에들어갈내용을 OpenGL 함수를적절히사용하여기술하라 2 번문제에기술된 OpenGL 함수정의를참고할것 b r 키를누를때마다 int rotangle = 0; 과같이정의된전역변수 global variable rotangle 에대해다음과같은내용의코드가수행된다고가정하자 case r : rotangle = rotangle+5%360; glutpostredisplay; break; 이에반응하여 r 키를한번씩누를때마다, 위의문제에서와같이세상좌표계 World Coordinate, WC 에배치된소가이좌표계에서 50, 50, 15 점을지나고 z w 축 그림에서수직방향의축 에평행한직선둘레로 5 도씩회전하도록하려한다 그림 2b 참조 위문제에서기술한여러분의코드를어떻게확장하면될지정확히기술하라 c 이문제에서는카메라가세상좌표계의 150, 50, 15 지점에서 50, 50, 15 지점을바라보고있으며, 양의 z w 방향이위쪽방향으로설정되어있다 이에필요한 glulookat 함수의 9 개인자를정확히기술하라 d 이프로그램이정상적으로수행될때 // ModelView matrix 시점에서모델뷰행렬스택의탑에있는 4 행 4 의뷰잉변환행렬 M V 의내용을정확히기술하라 e 이뷰잉변환행렬 M V 는세상좌표계의벡터 50, 50, 15 t 를눈좌표계 Eye Coordinate, EC 의어떤점으로변환해줄까? f M V 는 M V = RT 와같이회전변환과이동변환을나타내는두개의 4 행 4 열행렬 R 과 T 의곱으로표현이가능한데, 이때 R 과 T 의내용을정확히기술하라 g M V 의역행렬을 MV 1 = T 1 R 1 과같이이동변환행렬 T 1 과회전변환행렬 R 1 의곱으로표현할때 4행 4열행렬인 R 1 의내용을기술하라 h M V 의역행렬을 MV 1 = R 2 T 2 와같이회전변환행렬 R 2 와이동변환행렬 T 2 의곱으로표현할때 4행 4열행렬인 T 2 의내용을기술하라 6 OpenGL 에서는그림 3 에도시한바와같이눈좌표계 EC 상에서 glortho* 함수를사용하여직교투영을위한뷰잉볼륨을설정하면, 이안의내용이정규디바이스좌표계 NDC 의정규화된정육면체영역으로뷰매핑된다 a 이때절단좌표계 Clip Coordinate, CC 상에서의절단 clipping 과정후정규디바이스좌표계 Normalized Device Coordinate, NDC 로투영된꼭지점의 x nd 와 y nd 의좌표값은각각어떤범위의값을가질수있을까? Figure 3: glorthol, r, b, t, n, f 함수 b 이함수가호출될때생성되는투영변환행렬 M ortho 를기본변환행렬 T x, y, z 이동변환, Sx, y, z 크기변환, Rangle, x, y, z 회전변환 등의곱 년 4 월 27 일 수 오후 3:00 AS c 2011 서강대학교공과대학컴퓨터공학과임인성

26 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 4/8 으로표현하라 뷰매핑과정에서투영방향이반대로바뀌게되는것을유념할것 c M ortho 는다음과같이하나의행렬로나타낼수있는데, 이때 α, β, 그리고 γ 값이무엇인지기술하라 M ortho = 2 r l 0 0 r+l r l 0 α 0 t+b t b 0 0 β γ 다음은색깔혼합에관한문제이다 c S α S 와 c D α D 를각각 S 와 D 이미지의대응되는화소의미리곱한색깔 pre-multiplied color 이라할때, 두색깔의합성을통하여생성한결과색깔 c O α O 는다음과같이표현할수있다 co α O = F S cs α S + F D cd α D a 만약값이 03, 03, 03, 03 인미리곱한색깔로어떤화소를칠한다고할때, 이는그화소를어떻게칠한다는것인지정확히기술하라 b 그림 4 에도시하는합성연산의경우 F S 와 F D 의값은각각얼마인가? Figure 4: 합성예 1 c 만약 S over D 연산을적용한다면, 합성후 α O 는어떤값을가질지그식을 S 와 D 의관련값을사용하여정확히기술하라 d 그림 5 와같은상황을생각해보자 지금관찰자가세개의물체 M 0, M 1, M 2 를바라보고있는데, M 0 는실제색깔이 C 0 인유리로서뒤에서들어오는빛을 1 α 0 의비율로통과시킨다 한편 M 1 은색깔이 C 1 이고빛을 1 α 1 의비율만큼만통과시키고, 제일오른쪽에있는 M 2 는완전히불투명한벽으로서 C 2 의색깔을가진다 이때 M 0 와 M 1 을앞에서뒤로가면서 frontto-back order 합성한다고할때의불투명도 α 01 값이무엇일지정확히기술하라 α 0 C 0 α 1 C 1 Figure 5: 합성예 2 α 2 =10 2 C e 바로위문제에서와같이 M 0 와 M 1 을앞에서뒤로가면서합성한다고할때의결과색깔 C 01 값이무엇일지, 위문제의인자를사용하여정확히기술하라 여기서 C 0, C 1, 그리고 C 01 은미리곱한색깔이아닌원래의 RGB 색깔을의미함 f 위문제에서모든합성이끝난후결과적으로눈에보이는색깔 C 012 는무엇일지위문제의인자를사용하여정확히기술하라 g 아래의프로그램에서함수 test0 을수행시킬경우그림 6a 와같이서로다른색깔로칠해지는여러영역을볼수있는데, 이때 1 번영역과 2 번영역의 RGB 색깔을정확히기술하라 주의 : RGB 각채널값은 0 과 1 사이의값을가짐 void rectglfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat R, GLfloat G, GLfloat B, GLfloat A { glcolor4fr, G, B, A; glbegingl QUADS; glvertex2fl, b; glvertex2fr, b; glvertex2fr, t; glvertex2fl, t; glend; void test0void { glclearcolor00, 00, 00, 00; glcleargl COLOR BUFFER BIT; glenablegl BLEND; glblendfuncgl ONE, GL ZERO; rect-20, 40, -20, 40, 00, 10, 00, 10; glblendfuncgl SRC ALPHA, GL DST ALPHA; rect-35, 30, -35, 30, 10, 00, 00, 10; rect00, 48, -48, 20, 00, 00, 10, 10; gldisablegl BLEND; void test1void { 년 4 월 27 일 수 오후 3:00 AS c 2011 서강대학교공과대학컴퓨터공학과임인성

27 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 5/ x 8 다음은계층적모델링을통하여자동차를그려주는 OpenGL 프로그램으로서, 사용자가마우스를사용하여자동차를경로를따라대화식으로 interactively 움직일때, 네바퀴가적절한속도로진행방향으로회전하며, 특히두앞바퀴는자동차의진행방향에따라적절히좌우로도회전을하도록코딩이되어있다 그림 7 참조 이프로그램과그림 8 을보면서답하라 a test0 수행결과 x b test1 수행결과 Figure 6: 색깔의혼합 glclearcolor00, 00, 00, 00; glcleargl COLOR BUFFER BIT; glenablegl BLEND; glblendfuncgl ONE, GL ZERO; rect-20, 40, -20, 40, 00, 10, 00, 10; glblendfunca, B; rect-35, 30, -35, 30, 10, 00, 00, 10; gldisablegl BLEND; h 다음함수 test1 을수행시켰을때그림 6b 와같은결과를얻으려면, A 와 B 에어떤인자값이설정되어야할까? 여기서 1, 2, 3 번영역의색깔은각각 0, 0, 0, 1, 0, 0, 0, 1, 0 임 다음값들중적절한인자를선택하라 GL ZERO, GL ONE, GL SRC ALPHA, GL DST ALPHA, GL ONE MINUS SRC ALPHA, GL ONE MINUS DST ALPHA Figure 7: 자동차그리기 void draw wheel and nutvoid { int i; draw wheel; // draw wheel object for i = 0; i < 5; i++ { glpushmatrix; glrotatef720*i, 00, 00, 10; gltranslatef12, 0, 10; draw nut; // draw nut object glpopmatrix; void draw car correctvoid { float angle 1, angle 2; angle 1 = wheel rot angle in 1; angle 2 = wheel rot angle in 2; draw body; // draw body object glpushmatrix; gltranslatef-39, -35, 45; glrotatefangle 1, 00, 10, 00; glrotatefangle 2, 00, 00, 10; draw wheel and nut; // wheel 0 glpopmatrix; glpushmatrix; gltranslatef-39, -35, -45; glrotatefangle 1, 00, 10, 00; glrotatefangle 2, 00, 00, 10; 년 4 월 27 일 수 오후 3:00 AS c 2011 서강대학교공과대학컴퓨터공학과임인성

28 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 6/8 glscalef10, 10, -10; draw wheel and nut; // wheel 1 glpopmatrix; glpushmatrix; gltranslatef39, -35, 45; // Need a transform draw wheel and nut; // wheel 2 glpopmatrix; glpushmatrix; gltranslatef39, -35, -45; // Need a transform glscalef10, 10, -10; draw wheel and nut; // wheel 3 glpopmatrix; void draw worldvoid { GLfloat m[16]; set up rot matm, cur i; glmatrixmodegl MODELVIEW; glloadidentity; glulookat-150, 200, 400, path[cur i][0]+3, 489, path[cur i][2]+3, 00, 10, 00; gltranslatefpath[cur i][0], 489, path[cur i][2]; glmultmatrixfm; draw car correct; a 이프로그램에서자동차를세상좌표계로배치해주는모델링변환이강체변환인지아닌지 예 / 아니오 로답하고그이유를간략히설명하라 b 문제삭제 c 눈좌표계를기준으로할때카메라가세상을바라보는방향을벡터로표현하라 d 문맥상이코드에서그림 8 의 M b 행렬의내용을결정하는기하변환관련문장을모두정확히기술하라 e 문맥상이코드에서그림 8 의 M 4 n 행렬의내용을결정하는기하변환관련문장을모두정확히기술하라 f 이프로그램에서는 // wheel 0 과 // wheel 1 문장에서각각앞바퀴를그려주고있다 문맥상이문장들의바로앞 glrotatefangle 1, 00, 10, 00; 문장은어떤기하변환을목적으로하는지정확히기술하라 그림 8 을잘보고답할것 g 앞문제에이어 문맥상이두문장의바로앞 glrotatefangle 2, 00, 00, 10; 문장은어떤기하변환을목적으로하는지정확히기술하라 h 위의두문제를생각할때, 문맥상 // wheel 2 과 // wheel 3 문장앞의 // Need a transform 부분에공통적으로들어갈내용을기술하라 9 다음은 OpenGL 시스템의 fixed-function 파이프라인에관한단답식문제이다 그림 9 를보면서, OC Object Coordinate, CC, EC, MC, NDC, WC, WdC Window Coordinate 등의좌표계이름을참고하여적절히답하라 a 원근투영을사용하여렌더링을할경우, 원근감이생성되는시점과가장관련이많은 box 의기호를기술하라 b OpenGL 에서는꼭지점이나열된순서정보를통하여불필요한삼각형을제거할수있는데, 이와가장관련이많은 box 의기호를기술하라 c G box 와 H box 사이의지점에해당하는 OpenGL 좌표계의이름은? d 정상적인렌더링상황에서좌표점을동차좌표 x, y, z, w 로표현할때순간적으로 w 가 1 이아닌값이나타날수있는데, 이러한좌표값을기반으로수행되는어떤제거계산과가장관련이높은 box 의기호를기술하라 e 정상적인기하변환을할경우전체파이프라인과정에서항상강체변환이사용되는부분은어느좌표계에서어느좌표계로의변환에해당하는가? f OpenGL 렌더링파이프라인에서 정규화된필름 에해당하는좌표계는이그림에서어느 box 와어느 box 사이일까? g 촬영한사진을현상한후, 인화지에확대하는과정과가장밀접한관련이있는 box 의기호를기술하라 h 정상적인기하변환을할경우주어진물체의꼭지점에대해실제로모델링변환이적용되는 box 의기호를기술하라 년 4 월 27 일 수 오후 3:00 AS c 2011 서강대학교공과대학컴퓨터공학과임인성

29 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 7/8 y x z Figure 8: 자동차의계층적표현 년 4 월 27 일 수 오후 3:00 AS c 2011 서강대학교공과대학컴퓨터공학과임인성

30 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 8/8 A B C D E F F G G E E F G H I J K Figure 9: OpenGL fixed-function 렌더링파이프라인 년 4 월 27 일 수 오후 3:00 AS c 2011 서강대학교공과대학컴퓨터공학과임인성

31 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 1/7 [CSE4170: 기초컴퓨터그래픽스 ] 중간고사 담당교수 : 임인성 답은반드시답안지에기술할것 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함 1 다음물음에답하라 2 다음행렬 M 2 를보고답하라 M 2 = a 동차좌표점 20, 00, 80, 05 에해당하는유클리드공간에서의점의좌표는? b RGB 색깔모델로표현된색깔 07, 06, 01 을 CMY 색깔모델을사용하여표현했을때의값은? c 3차원기하변환을나타내는 4행 4열행렬이아핀변환인지아닌지를어떻게구별할수있을까? d 투영참조점이무한대점 point at infinity 에위치한투영변환에관련된 OpenGL 함수의이름은? e gluperspectivefovy, asp, n, f 함수에대한변환행렬 M pers 는다음과같다 이행렬을이용하여원근투영시 EC의점 x e,y e,z e 가 NDC의점 x nd,y nd,z nd 로변환되는과정에서원근감이생성되는수학적인과정을설명하라 cot fovy 2 asp cot fovy f+n f n 2nf f n a 3차원공간에서동일한직선상에존재하는세점 p 0, p 1, 그리고 p 2 에대하여 p 0 p 2 : p 0 p 1 = 3 : 1이라하자 p 0, p 1, 그리고 p 2 를각각위의세점을 M 2를사용하여변환한점이라할경우비율 p 0 p 2 : p 0 p 1 은얼마가될까? b M 2 는강체변환에해당하는행렬일까? 예 / 아니오 로답하고그이유를수학적으로밝혀라 c M 2 를두개의기본변환행렬의곱으로표현하라 d M 2 의역행렬 M2 1 을하나의 4행 4열행렬로표현하라 어떤식으로계산하였는지밝힐것 3 그림 1에서와같이 2차원공간의점 p를직선 L에대하여반사시켜 p 으로변환시켜주는 2차원기하변환을다음 OpenGL 함수들을적절히사용하여 C언어문법에맞게정확히기술하라 함수호출순서는 OpenGL 프로그래밍관례에따르고, 이동변환이필요하다면 z값은 0으로, 크기변환이필요하다면 z값은 1로설정할것 년 4 월 28 일 수 오후 7:00 -

32 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 2/7 y 매핑이된다 p' L a 이때절단좌표계 CC 상에서의절단 clipping 과정후 NDC로투영된꼭지점의 x nd 와 y nd 의좌표값은각각어떤범 p 위의값을가질수있을까? 1 45 x 0 3 y e 2 그림 1: 직선에대한반사 void gltranslatefglfloat x, GLfloat y, GLfloat z; void glscalefglfloat x, GLfloat y, GLfloat z; void glrotatefglfloat angle, GLfloat x, GLfloat y, GLfloat z; 4 그림 2에서와같이왼편의윈도우의내용을오른쪽윈도우로매핑해주는 2차원변환에대한 3행 3열행렬 M 4 를기본변환행렬 T x, y 이동변환, Sx, y 크기변환, Rangle 회전변환 등의합성을통하여표현하고, 전체곱행렬을구하라 그림 2: 윈도우매핑 ze l, b, 0 x e r, t, 0 그림 3: glorthol, r, b, t, n, f 함수 b 이함수가호출될때생성되는투영변환행렬 M ortho 를기본변환행렬 T x, y, z 이동변환, Sx, y, z 크기변환, Rangle, x, y, z 회전변환 등의곱으로표현하라 뷰매핑과정에서투영방향이반대로바뀌게되는것을상기할것 c M ortho 는다음과같이하나의행렬로나타낼수있는데, 이때 α, β, 그리고 γ 값이무엇인지기술하라 2 r l 0 0 r+l r l 0 α 0 M ortho = t+b t b 0 0 β γ 다음의 2차원기하변환에관한프로그램을보고답하라 -n 1 -f 5 OpenGL에서는그림 3에도시한바와같이눈좌표계 EC 상에서 glortho* 함수를사용하여직교투영을위한뷰잉볼륨을설정하면, 이안의내용이정규디바이스좌표계 NDC 의정규화된정육면체영역으로뷰 int iii = 0; void displayvoid { glcleargl COLOR BUFFER BIT; glmatrixmodegl MODELVIEW; glpushmatrix; glrotatefiii*900, 00, 00, 10; 년 4 월 28 일 수 오후 7:00 -

33 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 3/7 그림 4: OpenGL 을사용한 2 차원기하변환 gltranslatef-2500, -2500, 00; glbegingl TRIANGLES; glvertex2f5000, 00; glvertex2f5000, 5000; glvertex2f00, 5000; glend; glpopmatrix; glflush; void sogangint button, int state, int x, int y { if button == GLUT LEFT BUTTON && state == GLUT DOWN iii = iii+1%4; glutpostredisplay; void universityint width, int height { glviewport0, 0, width, height; glmatrixmodegl PROJECTION; glloadidentity; glortho00, double width, 00, double height, -10, 10; glutpostredisplay; void OpenGLInitandRegisterCallbackvoid { glclearcolor10, 10, 10, 10; glpolygonmodegl FRONT AND BACK, GL FILL; glcolor3f10, 00, 00; glutdisplayfuncdisplay; glutreshapefuncuniversity; glutmousefuncsogang; void main int argc, char **argv { glutinit&argc, argv; glutinitdisplaymodeglut RGBA; glutinitwindowsize500, 500; glutcreatewindow"midterm Problem"; OpenGLInitandRegisterCallback; glutmainloop; a 이프로그램은사용자가어떤행동 action 을취할때마다, 네번을주기로화면의내용이반복된다 과연어떤행동인지정확히기술하라 b 사용자가위문제의행동을취할때화면의그림이어떤식으로순환하는지, 그림 4와같은방식으로그려라 도형의모양과위치를가급적정확히표시하고어떤부분이적색영역인지분명히밝힐것 c 만약그림 4에도시한방식으로화면이바뀌도록하려면이프로그램을어떻게수정해야하는가? 어느함수의어떤문장과어떤문장사이에어떤문장 들 을삽입함 과같이표시하고, 삽입할문장 들 을 OpenGL 함수들을적절히사용하여 C언어문법에맞게정확히기술하라 년 4 월 28 일 수 오후 7:00 -

34 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 4/7 d 원래의프로그램상태에서 university 함수의 glortho 함수문장을아래와같이수정할경우화면의내용이어떻게반복될지, 그림 4와같은방식으로그려라 glortho00, width/20, 00, height/20, -10, 10; e 원래의프로그램상태에서 university 함수의 glortho 함수문장직전에아래와같은문장을삽입할경우화면의내용이어떻게반복될지, 그림 4와같은방식으로그려라 glscalef05, 05, 10; 힌트 : 앞문제의직교투영변환을잘생각해보고, 이크기변환이직교투영에어떤영향을미치는지를생각해볼것 7 그림 5에서주어진점 p =xyz1 t 을 p = x y z 1 t 로변환해주는 4행 4열의원근투영변환행렬 M 7 을기술하라 x v[0] = ; // Line A if i == 0 { u[0] = p[0][0] - p[1][0]; u[1] = p[0][1] - p[1][1]; u[2] = p[0][2] - p[1][2]; else { u[0] = p[i-1][0] - p[i][0]; u[1] = p[i-1][1] - p[i][1]; u[2] = p[i-1][2] - p[i][2]; normalize vec3u; cross prod vec3u, v, n; m[0] = ; m[15] = 10; minv[0] = ; minv[15] = 10; void dispalyvoid { GLfloat m[16], minv[16]; glcleargl COLOR BUFFER BIT; set up rot matm, minv, cur i; glmatrixmodegl MODELVIEW; y COP = 0, -1, 0 d p' p glloadidentity; B draw axes; draw path; z PP : y = d 그림 5: 원근투영변환예 8 다음은주어진경로 p[c i][0], 00, p[c i][2] 를따라움직이는자동차에서바라본세상을렌더링해주는코드의일부이다 그림 6 참조 void set up rot matfloat *m, float *minv, int i { GLfloat u[3], v[3], n[3]; glpushmatrix; gltranslatefp[c i][0], 489, p[c i][2]; glmultmatrixfm; draw car; glpopmatrix; glutswapbuffers; a 지금 glmultmatrixfm; 에해당하는기하변환후, gltranslatefp[c i][0], 489, p[c i][2]; 에해당하는기하변환을통하여자동차의 body를세상좌표계로보내주고있다 문맥상행렬 m이나 년 4 월 28 일 수 오후 7:00 -

35 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 5/7 y R90, 0, 1, 0 T-3, 05, 25 x z a 운전석카메라프레임 b 세상에서본모습 c 운전석에서바라본세상 그림 6: 자동차그리기 타내는기하변환은이동변환, 크기변환, 회전변환중어떤변환에해당할까? b Line A 에서는 v 벡터의값 v[0], v[1], v[2] 의값을설정하고있는데, 각원소값은문맥상어떤값으로설정되어야할까? 세상좌표계와 body의모델링좌표계모두위쪽이 y축방향에해당함 c 문맥상 set up rot mat 함수안에서배열 m과 minv의값을설정하고있는데, m[4] 와 minv[4] 에저장되어야하는각값을 C 언어문법에맞게기술하라 OpenGL에서의기하변환행렬원소의저장순서를고려할것 d 다음은 set up rot mat 함수안에서호출하는 cross prod vec3 함수의정의이다 n[1] 변수에설정되는값이무엇인지그식을 C 언어문법에맞게기술하라 void cross prod vec3float *u, float *v, float *n { n[0] = ; n[1] = ; n[2] = ; e 그림 6a 는 body의모델링좌표계상에서운전석에카메라를배치하는과정을보여주고있다 만약자동차를세상에배치한후, 이카메라에서세상을바라보는장면을렌더링할때의뷰잉변환행렬 M V 를기본변환행렬 T x, y, z 이동변환, Sx, y, z 크기변환, Rangle, x, y, z 회전변환 이나이프로그램의변수 m과 minv가나타내는 M m 과 M minv 등의곱으로표현하라 f 지금운전석에배치한카메라를사용하여렌더링한다고가정할때, display 함수의 B 에들어갈뷰잉변환코드를 OpenGL 함수들을적절히사용하여 C언어문법에맞게정확히기술하라 9 다음은 OpenGL 프로그램에서뷰잉변환을설정하고있는예를보여주고있다 glmatrixmodegl MODELVIEW; glloadidentity; 년 4 월 28 일 수 오후 7:00 -

36 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 6/7 glulookat00, 00, 100, 100, 00, 100, 00, 10, 00; a 이코드를수행할때적용되는뷰잉변환행렬 M V 의내용을하나의 4행 4열행렬로표현하라 b 원래의코드에서 glulookat*; 문장을아래와같은두문장으로대치하려하는데, 같은내용의그림이그려지도록하기위해서는각문장의인자가무엇이되어야하는지정확히기술하라 glrotatef*, *, *, *; gltranslatef*, *, *; 10 다음 OpenGL 코드를보고 draw object 함수가그려주는네개의물체 OBJ1, OBJ2, OBJ3, 그리고 OBJ4 간에존재하는계층성을이진트리로표현하라 glpushmatrix; glrotatefangle, 00, 10, 00; gltranslatef00, 00, 50; glscalef65, 65, 65; draw objectobj1; glpushmatrix; glrotatef100*angle, 10, 00, 00; gltranslatef-01, 00, 03; glscalef0025, 0025, 0025; draw objectobj2; glrotatef400*angle, 10, 00, 00; gltranslatef00, 40, 00; glscalef04, 04, 04; draw objectobj3; glpopmatrix; gltranslatef015, 03, 00; glscalef03, 03, 03; draw objectobj4; glpopmatrix; 11 다음은 OpenGL 시스템의 fixed-function 파이프라인에관한단답식문제이다 그림 7을보고, OC, CC, EC, MC, NDC, WC, WdC 등의좌표계이름을참고하여적절히답하라 a 원근투영을사용하여렌더링을할경우, 원근감이생성되는시점과가장관련이많은 box의기호를기술하라 b OpenGL에서는꼭지점이나열된순서정보를통하여불필요한삼각형을제거할수있는데, 이와가장관련이많은 box의기호를기술하라 c G box와 H box 사이의지점에해당하는 OpenGL 좌표계의이름은? d 정상적인렌더링상황에서좌표점을동차좌표 x, y, z, w 로표현할때순간적으로 w가 1이아닌값이나타날수있는데, 이러한좌표값을기반으로수행되는어떤제거계산과가장관련이높은 box의기호를기술하라 e 정상적인기하변환을할경우전체파이프라인과정에서항상강체변환이사용되는부분은어느좌표계에서어느좌표계로의변환에해당하는가? f OpenGL 렌더링파이프라인에서 정규화된필름 에해당하는좌표계는이그림에서어느 box와어느 box 사이일까? g 촬영한사진을현상한후, 인화지에확대하는과정과가장밀접한관련이있는 box의기호를기술하라 h EE box에서수행되는기하변환은항상아핀변환이라고할수있는가? 예또는아니오로답하고그이유를기술하라 i 정상적인기하변환을할경우주어진물체의꼭지점에대해실제로모델링변환이적용되는 box의기호를기술하라 년 4 월 28 일 수 오후 7:00 -

37 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 7/7 A B C D E F F G G E E F G H I J K 그림 7: OpenGL fixed-function 렌더링파이프라인 년 4 월 28 일 수 오후 7:00 -

38 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 1/8 [CSE4170: 기초컴퓨터그래픽스 ] 중간고사문제 담당교수 : 임인성 b 그림 2의 B 로표시된지점에해당하는 OpenGL 좌표계의이름은? c 그림 2의 C 로표시된지점에해당하는 OpenGL 좌표계의이름은? 그림 1: 2차원윈도우매핑변환 답은반드시답안지에기술할것 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함 1 그림 1에서와같이왼쪽의윈도우의내용을오른쪽윈도우안으로매핑을해주는 2차원아핀변환에대한 3행 3열행렬 M을기본아핀변환의합성을통하여구하라 M을기본변환행렬의곱으로표현한후, 최종결과행렬을반드시기술할것 2 다음은 OpenGL에서사용하는기하파이프라인에대한단답식문제이다 CC, EC, MC, NDC, WC, WdC 등의좌표계이름과그림 2에표시된기호를사용하거나, 또는 어떤어떤 box의왼쪽 과같은방식으로적절히그리고정확히답하라 a 그림 2의 A 로표시된지점에해당하는 OpenGL 좌표계의이름은? d 기하변환과정중다각형의꼭지점이나열된순서정보를통하여안보이는뒷면에해당하는다각형을제거할수있는데, OpenGL에서는정확히어떤지점에서이계산이수행되는가? e 정상적인기하변환을할경우전체파이프라인과정에서항상강체변환이사용되는부분은어느좌표계에서어느좌표계로의변환에해당하는가? f OpenGL 렌더링파이프라인에서 정규화된필름 에해당하는좌표계가존재하는위치를그림 2에서찾는다면정확히어디인가? g 정상적으로렌더링할경우, 카메라를배치하기위하여적절한 OpenGL 함수를호출할경우, 가장직접적으로영향을미치는 box는어떤것일까? h 정상적으로렌더링을할경우, glortho 함수가가장직접적으로영향을미치는위치는? i 촬영한사진을현상한후, 인화지에확대하는과정과가장밀접한관련이있는곳은? 년 4 월 25 일 토 오후 1:00 -

39 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 2/8 3 다음에주어진간단한 3D 뷰잉관련 OpenGL 코드를보고답하라 void displayvoid { glclearcolor0, 0, 0, 1; glcleargl COLOR BUFFER BIT; glcolor3f10, 10, 10; glpolygonmodegl FRONT AND BACK, GL FILL; // LINE A glbegingl TRIANGLES; glvertex2f-20, -20; glvertex2f00, -20; glvertex2f00, 00; glvertex2f-20, 00; glend; glflush; void reshapeint W, int H { glviewport0, 0, W, H; void RegisterCallbackvoid{ glutdisplayfuncdisplay; glutreshapefuncreshape; void main int argc, char **argv { glutinit&argc, argv; glutinitdisplaymodeglut RGBA; glutinitwindowsize500, 500; glutcreatewindow"sogang CSE"; RegisterCallback; glutmainloop; a 위코드를수행할경우 크기의윈도우에어떤그림이그려질지, 가급적정확한척도 화면에눈금을표시한다거나하는등의 를사용하여윈도우의내용을도시하라 b 만약이코드의 LINE A 부분에아래의두문장을삽입한후, 프로그램을수행시키면윈도우에어떤그림이그려질까? 위문제와마찬가지로가급적정확한척도를사용하여그내용을도시하라 glmatrixmodegl PROJECTION; glortho-2, 2, -2, 2, -1, 1; c 바로위문제에서와같이코드의내용을수행할경우, 어떤심각한문제가발생하는데그것이무엇인지기술하라 d 위두문장이삽입된상태에서그문제를해결하려면코드를어떻게수정해야할까? e 이번에는원래의코드의 LINE A 부분에아래의네문장을삽입한후, 프로그램을수행시키면윈도우에어떤그림이그려질까? 위문제와마찬가지로가급적정확한척도를사용하여그내용을도시하라 glmatrixmodegl MODELVIEW; glloadidentity; gltranslatef1, 1, 0; glscalef05, 05, 05; 4 다음은 OpenGL의뷰잉변환에관한문제이다 아래에주어진어떤 display callback 함수의내용을보고답하라 여기서 glutwireteapot20; 문장은원점을중심으로적절한크기의주전자를그려주는역할을한다 void displayvoid { glclearcolor10, 10, 10, 10; glcleargl COLOR BUFFER BIT; glcolor3f10, 00, 00; glpolygonmodegl FRONT AND BACK, GL FILL; glmatrixmodegl PROJECTION; glloadidentity; gluperspective340, 10, 05, 10000; 년 4 월 25 일 토 오후 1:00 -

40 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 3/8 glmatrixmodegl MODELVIEW; glloadidentity; glulookat00, 00, 100, 100, 00, 100, 00, 10, 00; gltranslatef100, 00, 100; glutwireteapot20; glflush; e 원래의코드를수행시키면그림 3과같은그림이그려진다 이코드의 glulookat*; 문장의마지막세인자 00, 10, 00을 00, 00, 10로대치하면어떻게그림이그려질까? a 위코드를수행할때적용되는뷰잉변환행렬 M V 의내용을기술하라 b 원래의코드에서 glulookat*; 문장을아래와같은두문장으로대치하려하는데, 같은내용의그림이그려지도록하기위해서는각문장의인자가무엇이되어야하는지정확히기술하라 glrotatef*, *, *; gltranslatef*, *, *; c 뷰잉변환은세상좌표계에서카메라의프레임을위치시키는것에대응된다 만약바로위의문제에서와같은상태에서카메라프레임을하나의물체라가정한후, 세상좌표계에서이물체를 x w 축방향으로 30만큼이동을시켰다면, 이때의뷰잉변환은 gltranslatef30, 00, 00; 또는 gltranslatef-30, 00, 00; 문장중하나를바로위문제의두문장의적절한위치에삽입하면된다 과연어떻게하면되는가? 이문제는위문제의정답을기술한사람만풀것 d 원래의코드에서 glulookat*; 문장을아래와같은두문장으로대치하려하는데, 같은내용의그림이그려지도록하기위해서는각문장의인자가무엇이되어야할지정확히기술하라 gltranslatef*, *, *; glrotatef*, *, *; 그림 3: 주전자도시 5 그림 4에는모델링좌표계 MC 에설계되어있는자동차모델을세상좌표계 WC 로배치해주는과정이도시되어있다 이그림에서 z m 과 z w 축은각각오른손좌표계방향으로되어있음 그림 4: 모델링변환과뷰잉변환 a 자동차의위치와방향에관련된정보가세상좌표계에서한점 e = e x,e y,e z 와길이가 1이고서로수직인세벡터 u = u x,u y,u z, v = 0, 0, 1, n = n x,n y,n z 로주어져있다 이때적용되는모델링변환에해당하는 4행 4열행렬 M M 을이동변환, 크기변환, 회전변환등의기본변환행렬의곱으로적절히표현 xm u n ym 년 4 월 25 일 토 오후 1:00 -

41 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 4/8 하라 예를들어, M M = T 1 R 1 T 2 S 1 와같은방식으로표현하고, 각기본변환행렬의내용을정확히기술하되, 전체곱행렬은계산할필요가없음 b C = e, u, v, n 정보를사용하여카메라를배치하려할때적용되는뷰잉변환 M V 를위의문제에서사용한기본변환의행렬또는그의역행렬을가급적많이사용하여표현하라 6 그림 5는다음문제와관련한투영변환에대한그림이다 a OpenGL에서 gluperspective600, 10, 50, 100; 과같은문장을수행할경우계산되는투영변환행렬 M P 는 OpenGL에서규정한방식대로눈좌표계 EC 의점 x e,y e,z e 를정규디바이스좌표계 NDC 점 x nd,y nd,z nd 로변환을해준다 z nd 의경우 z nd = α + β z e 와같은형태의변환을사용하여유도할수있는데, 이때 α와 β 값이무엇인지상세히유도하라 위함수의인자값을사용하여문제를풀것 b y nd 를 x e, y e, z e 로표현하라 tan 45 = 1, tan 60 = 3= 1 tan 30 c M P 행렬의두번째행과네번째행의내용을정확히기술하라 7 시험지뒤에첨부한프로그램은적절한모델링변환을통하여자동차를그려주는 OpenGL 프로그램이다 이프로그램을보면서답하라 a 이프로그램은그림 6에주어진자동차에대한트리구조를어떤한방식으로탐색을하고있는가? 자료구조시간에배운용어를사용할것 b 이프로그램에서원근나눗셈 perspective division 과가장관련이있는문장의번호는? c 이프로그램에서는사용자가어떠한방식으로자동차를앞으로움직이게할수있을까? 정확하게기술할것 d 세상좌표계 WC 를기준으로할때카메라가세상을바라보는방향을벡터로표현하라 e 눈좌표계 EC 를기준으로할때카메라가세상을바라보는방향을벡터로표현하라 f 59번의이동변환관련문장이수행되기직전의모델뷰행렬스택의내용을정확하게그려라 M V M P, M VP 와그림 6의행렬기호등을적절히사용하라 현재 draw wheel and nutangle 함수는 100번문장에서호출한상태임 g 52번문장의 draw wheel and nutangle 함수에서이상한부분을지적하고수정하라 이유를설명할것 h 83번문장의 void cross prod vec3float *u, float *v, float *n 함수는 3차원벡터에대한외적, 즉 n = u v을계산하기위한함수이다 내용을메꾸어라 i 이프로그램에서사용하는인자들을사용하여정규디바이스좌표계 NDC 의좌표 x nd,y nd 를윈도우좌표계 WdC 의좌표 x wd,y wd 로어떻게변환시켜주는지뷰폿변환 x와 y 좌표에대해서만 을유도하라 j 이프로그램에서뷰매핑과가장관련이많은문장의번호를기술하라 k 이프로그램에서자동차를세상좌표계로배치해주는모델링변환이강체변환인지아닌지답하고그이유를간략히설명하라 년 4 월 25 일 토 오후 1:00 -

42 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 5/8 그림 2: OpenGL 파이프라인 z e EC y e y e z e, fovy/2 c y e a y' y * * z e -n -f d b M P y nd y nd, z nd c 1 a -1 1 NDC d -1 b z nd 그림 5: 투영변환 년 4 월 25 일 토 오후 1:00 -

43 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스중간고사 6/8 WC M b M w M w M w M w M M n0 M 1 n M 4 n0 M 1 n M 4 n n M n0 M 1 n M 4 n M n0 M 1 n M 4 n 그림 6: 자동차의계층적표현 년 4 월 25 일 토 오후 1:00 -

44 filename mvcarcpp page 1 1 #include <stdioh> 2 #include <mathh> 3 #include <GL/gluth> #define MAX_POLY #define MAX_VERT 20 7 #define MAX_PATH #define DRAW_CAR_DUMMY #define DRAW_CAR_CORRECT typedef struct { 13 int nvertex; 14 float poly[max_vert][3]; 15 mypolygon; mypolygon body[max_poly], wheel[max_poly], nut[max_poly]; 18 int npolyb, npolyw, npolyn; float path[max_path][3]; 21 int npath, path_exist, drawing_state = DRAW_CAR_CORRECT; double dist; int prev_i, cur_i = 0; 26 int rightbuttonpressed = 0; void read_objectchar *file, mypolygon *object, int *npoly; 29 void read_pathchar *file; 30 void read_objectsvoid; 31 void draw_axesvoid; 32 void draw_pathvoid; 33 void draw_groundvoid; void draw_bodyvoid { 36 // Draw the body void draw_wheelfloat angle { 41 // Draw the wheel void draw_nutvoid { 46 // Draw the nut #define rad #define ww void draw_wheel_and_nutfloat angle { 53 int i; draw_wheelangle; // draw wheel object 56 for i = 0; i < 5; i++ { 57 // nut i 58 glpushmatrix; 59 gltranslatefrad-05, 0, ww; // rad = 17, ww = glrotatef720*i, 00, 00, 10; 61 draw_nut; // draw nut object 62 glpopmatrix; #define TO_DEG void normalize_vec3float *v { float dot_prod_vec3float *u, float *v { float compute_length_mul_two_vec3float *u, float *v { float angle_between_two_vec3float *u, float *v { void cross_prod_vec3float *u, float *v, float *n { 84 //??? float wheel_rot_angle_in_yvoid { float wheel_rot_angle_in_zvoid { void draw_car_dummyvoid { 97 draw_body; // draw body object 98 glpushmatrix; 99 gltranslatef-39, -35, 45; 100 draw_wheel_and_nut00; // wheel glpopmatrix; glpushmatrix; 104 gltranslatef39, -35, 45; 105 draw_wheel_and_nut00; // wheel glpopmatrix; glpushmatrix; 109 gltranslatef-39, -35, -45; 110 glscalef10, 10, -10; 111 draw_wheel_and_nut00; // wheel glpopmatrix; glpushmatrix; 115 gltranslatef39, -35, -45; 116 glscalef10, 10, -10; 117 draw_wheel_and_nut00; // wheel glpopmatrix; void set_up_rot_matfloat *m, int i { void draw_fenceglfloat r, GLfloat g, GLfloat b { 126 HPSCAT 13 printed at 4/20/103, 23:01

45 filename mvcarcpp page void draw_fencesvoid { void draw_world void { 134 GLfloat m[16]; glmatrixmodegl_modelview; // Modeling Transformation 137 glloadidentity; 138 glulookat-150, 200, 400, path[cur_i][0], 489, path[cur_i][2], 00, 10, 00; draw_ground; 141 draw_fences; 142 draw_axes; 143 if path_exist draw_path; set_up_rot_matm, cur_i; glpushmatrix; 148 gltranslatefpath[cur_i][0], 489, path[cur_i][2]; 149 glmultmatrixfm; draw_car_dummy; 152 glpopmatrix; void rendervoid { 156 glcleargl_color_buffer_bit; 157 draw_world; 158 glutswapbuffers; void keyboard unsigned char key, int x, int y { int prevx_mouse; 166 void mousepressint button, int state, int x, int y { 167 if button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN { 168 prevx_mouse = x; 169 rightbuttonpressed = 1; else if button == GLUT_RIGHT_BUTTON && state == GLUT_UP 172 rightbuttonpressed = 0; void mousemoveint x, int y { 176 double deltax; if rightbuttonpressed { 179 deltax = x - prevx_mouse; 180 prevx_mouse = x; 181 if cur_i + deltax > 0 && cur_i + deltax < npath-1 { 182 prev_i = cur_i; cur_i += deltax; 183 dist = sqrtpath[cur_i][0]-path[prev_i][0]*path[cur_i][0]-path[prev_i][ 0] path[cur_i][1]-path[prev_i][1]*path[cur_i][1]-path[prev_i][1] path[cur_i][2]-path[prev_i][2]*path[cur_i][2]-path[prev_i][2] ; 186 if deltax < 00 dist *= -10; 187 glutpostredisplay; void reshapeint width, int height { 193 glviewport0, 0, width, height; glmatrixmodegl_projection; 196 glloadidentity; 197 gluperspective300, width/double height, 10, 1500; void init_openglvoid { void init_windowsvoid { 205 glutinitdisplaymodeglut_rgb GLUT_DOUBLE; 206 glutinitwindowsize1280, 1024; 207 glutcreatewindow"car in Hierarchy 2"; 208 glutdisplayfuncrender; 209 glutkeyboardfunckeyboard; 210 glutmousefuncmousepress; 211 glutmotionfuncmousemove; 212 glutreshapefuncreshape; void mainint argc, char **argv { 216 read_objects; 217 glutinit&argc, argv; 218 init_windows; 219 init_opengl; 220 glutmainloop ; HPSCAT 13 printed at 4/20/103, 23:01

46 CSE4170 כ 1/6 [CSE4170: ] : כ כ 1 כ OC, CC, EC, MC, NDC, WC, WdC OpenGL a 30, 60, 90, 20 3 x, y, z? b M c R S? d,? e OpenGL glvertex3f? f OpenGL NDC M 2,, כ 1: OpenGL glorthol,r,b,t,n,f,, [ 1, 1] [ 1, 1] [ 1, 1] M ortho OpenGL כ כ α, β, γ כ כ כ 2 r l 0 0 α 2 0 M ortho = t b 0 β f n γ z e l, b, 0 y e 0 x e r, t, 0 2: glortho 2 -n 1 -f :45 -

47 CSE4170 כ 2/6 4 normal vector n 4 4 M כ 3 n p ØŒ M p p' 0 p' 0 3: a n =M 1 t n 3 p = xyz1 t n =n x n y n z 0 t p p 0 =x 0 y 0 z 0 1 t n t p 0 p =0 p, p 0, n M p = x y z 1 t, p 0 = x 0 y 0 z 0 1t, n =n x n y n z 0 t, p = M p p 0 = M p 0 p p 0 b n, M, M = a 11 a 12 a 13 v 1 a 21 a 22 a 23 v 2 a 31 a 32 a 33 v n', v 1, v 2, v 3 כ כ? c a 1, a 2, a 3, d b, M M 1 t b כ 5 a 4 OpenGL gluperspectivefovy, aspec, n, f x e,y e,z e EC NDC x nd,y nd,z nd z nd z nd = α + β z e, α β כ כ כ b x y x nd = cot fovy cot fovy 2 x asp e z e y 2 y nd = e z e, M pers 6 5a,, x, y, z y 90, x, y, z -30, 05, 25, 5b m x, y, z x0, y0, z0 5c OpenGL API A B C OpenGL API minv m glmatrixmodegl MODELVIEW; glloadidentity; A glmultmatrixfminv; B :45 -

48 CSE4170 כ 3/6 z e EC y e y e z e, fovy/2 c y e a y' y * * z e -n d -f b M P y nd y nd, z nd c 1 a -1 1 NDC d -1 b z nd 4: a 1 u = u x u y u z t, v = v x v y v z t, n = n x n y n z t p =e x e y e z t, x, y, z 4 4 M V R T R T b a, b, c LEGS, ARM, CAR d c angle = -450 r angle = 00, 16 ARM, A C c r angle? d M V e glulookat f e d B C, e void draw world { int i; draw axes; glpushmatrix; draw floor; draw LEGS; // r angle = 00 glrotatefr angle,0,0,1; fori = 0; i < 16; i++ { glpushmatrix; glrotatefa, 00, 00, 10; draw ARM; glpushmatrix; gltranslatef00, 60, 00; // B glrotatefr angle, 00, 00, 10; glrotatef-225*i,00, 00, 10; // C glscalef012, 012, 012; draw CAR; glpopmatrix; glpopmatrix; glpopmatrix; void render3void { glcleargl COLOR BUFFER BIT; glmatrixmodegl MODELVIEW; glloadidentity; // c angle = -450 glrotatefc angle, 00, 10, 00; gltranslatef-250, 10, -250; draw world; glutswapbuffers; :45 -

49 CSE4170 כ 4/6 a MC b c 5: 8 OpenGL 7, OC, CC, EC, MC, NDC, WC, WdC a, OpenGL box b, OpenGL, box c OpenGL GL CCW box d G box H box OpenGL? e OpenGL NDC p y nd כ? f OpenGL, box g, glortho, box h x, y, z, w w 1 כ box :45 -

50 CSE4170 כ 5/6 a LEGS in MC b ARM in MC c CAR in MC d e 6: :45 -

51 CSE4170 כ 6/6 A B C D E F F G G E E F G H I J K 7: OpenGL :45 -

52 /7 [43-170: ] : כ כ 1 normal vector n 4 4 M כ 1 n p ØŒ M p p' 0 p' 0 1: a n =M 1 t n 1 p = xyz1 t n =n x n y n z 0 t p p 0 =x 0 y 0 z 0 1 t n t p 0 p =0 p, p 0, n M p = x y z 1 t, p 0 = x 0 y 0 z 0 1t, n =n x n y n z 0 t, p = M p p 0 = M p 0 p p 0 b n, M n', M = a 11 a 12 a 13 v 1 a 21 a 22 a 23 v 2 a 31 a 32 a 33 v , v 1, v 2, v 3 כ כ? c a 1, a 2, a 3, d b, M M 1 t b כ 2 2 a OpenGL API gluperspectivefovy, asp, n, f x e,y e,z e EC NDC x nd,y nd,z nd, y nd x e, y e, z e כ b z nd z nd = α + β z e α β כ 3 OpenGL API 2 2D viewing 3a p = 50, 50 50, 10 p y a :00 -

53 /7 z e EC y e y e z e, fovy/2 c y e a y' y * * z e -n d -f b M P y nd y nd, z nd c 1 a -1 1 NDC d -1 b z nd 2: a b 3:, A,,, OpenGL API b p b, B,, OpenGL API c, B glortho-500, 500, -500, 500, -10, 10; d A B glmatrixmodegl MODELVIEW;,?? e 4 4 M VP 0 1 0, כ 4 3 a 10, 0, 0,,, 0, 0, 1, 0, 1, 0, 1, 0, 0,, OpenGL API b glulookat * :00 -

54 /7 void draw boxvoid { glbegingl QUADS; glvertex2f05, 05; glvertex2f-05, 05; glvertex2f-05, -05; glvertex2f05, -05; glend; void draw crossvoid { glbegingl LINES; glvertex2f-05, 00; glvertex2f05, 00; glvertex2f00, -05; glvertex2f00, 05; glend; void displayvoid { int i; glcleargl COLOR BUFFER BIT; glviewport0, 0, 500, 500; glmatrixmodegl PROJECTION; glloadidentity; B glmatrixmodegl MODELVIEW; glloadidentity; for i = 3; i < 8; i++ { glpushmatrix; A draw box; glpopmatrix; glpushmatrix; gltranslatef500, 500, 00; glscalef500, 500, 10; draw cross; glpopmatrix; glflush; 4: OpenGL c 6 glulookat*, כ z[0], z[1], z[2] d 5 OpenGL a 7,? b OpenGL view mapping, OC, EC, NDC, WdC, CC, MC, WC c d, CC כ 1 e WC f MS WM PAINT כ? g h i 59 M V M P, M VP 7 draw wheel and nutangle :00 -

55 /7 j 52 draw wheel and nutangle כ k z angle z 7? l כ כ f, W כ 1 כ? g pixel shader? A D B C E 5: NVIDIA GeForce 6 Series GPU 6 5 NVIDIA GeForce 6 Series GPU A, B, C, D, E a? b? c depth buffer? d? e? :00 -

56 /7 void glulookat GLdouble ax, GLdouble ay, GLdouble az, GLdouble bx, GLdouble by, GLdouble bz, GLdouble cx, GLdouble cy, GLdouble cz { GLdouble m[16]; GLdouble x[3], y[3], z[3]; GLdouble mag; z[0] = ax - bx; z[1] = ay - by; z[2] = az - bz; mag = sqrt z[0]*z[0] + z[1]*z[1] + z[2]*z[2] ; if mag { z[0] /= mag; z[1] /= mag; z[2] /= mag; y[0] = cx; y[1] = cy; y[2] = cz; x[0] = y[1]*z[2] - y[2]*z[1]; x[1] = -y[0]*z[2] + y[2]*z[0]; x[2] = y[0]*z[1] - y[1]*z[0]; y[0] = z[1]*x[2] - z[2]*x[1]; y[1] = -z[0]*x[2] + z[2]*x[0]; y[2] = z[0]*x[1] - z[1]*x[0]; mag = sqrt x[0]*x[0] + x[1]*x[1] + x[2]*x[2] ; if mag { x[0] /= mag; x[1] /= mag; x[2] /= mag; mag = sqrt y[0]*y[0] + y[1]*y[1] + y[2]*y[2] ; if mag { y[0] /= mag; y[1] /= mag; y[2] /= mag; #define Mrow,col m[row*4+col] M0,0 = x[0]; M0,1 = x[1]; M0,2 = x[2]; M0,3 = 00; M1,0 = y[0]; M1,1 = y[1]; M1,2 = y[2]; M1,3 = 00; M2,0 = z[0]; M2,1 = z[1]; M2,2 = z[2]; M2,3 = 00; M3,0 = 00; M3,1 = 00; M3,2 = 00; M3,3 = 10; #undef M glmultmatrixd m ; gltranslated -ax, -ay, -az ; 6: glulookat* WC M b M w M w M w M w M M n0 M 1 n M 4 n0 M 1 n M M 4 n n n0 M 1 n M M 4 n n0 M 1 n M 4 n : :00 -

57 filename mvcarcpp page 1 1 #include <stdioh> 2 #include <mathh> 3 #include <GL/gluth> #define MAX_POLY #define MAX_VERT 20 7 #define MAX_PATH #define DRAW_CAR_DUMMY #define DRAW_CAR_CORRECT typedef struct { 13 int nvertex; 14 float poly[max_vert][3]; 15 mypolygon; mypolygon body[max_poly], wheel[max_poly], nut[max_poly]; 18 int npolyb, npolyw, npolyn; float path[max_path][3]; 21 int npath, path_exist, drawing_state = DRAW_CAR_CORRECT; double dist; int prev_i, cur_i = 0; 26 int rightbuttonpressed = 0; void read_objectchar *file, mypolygon *object, int *npoly; 29 void read_pathchar *file; 30 void read_objectsvoid; 31 void draw_axesvoid; 32 void draw_pathvoid; 33 void draw_groundvoid; void draw_bodyvoid { 36 // Draw the body void draw_wheelfloat angle { 41 // Draw the wheel void draw_nutvoid { 46 // Draw the nut #define rad #define ww void draw_wheel_and_nutfloat angle { 53 int i; draw_wheelangle; // draw wheel object 56 for i = 0; i < 5; i++ { 57 // nut i 58 glpushmatrix; 59 gltranslatefrad-05, 0, ww; // rad = 17, ww = glrotatef720*i, 00, 00, 10; 61 draw_nut; // draw nut object 62 glpopmatrix; #define TO_DEG void normalize_vec3float *v { float dot_prod_vec3float *u, float *v { float compute_length_mul_two_vec3float *u, float *v { float angle_between_two_vec3float *u, float *v { void cross_prod_vec3float *u, float *v, float *n { 84 //??? float wheel_rot_angle_in_yvoid { float wheel_rot_angle_in_zvoid { void draw_car_dummyvoid { 97 draw_body; // draw body object 98 glpushmatrix; 99 gltranslatef-39, -35, 45; 100 draw_wheel_and_nut00; // wheel glpopmatrix; glpushmatrix; 104 gltranslatef39, -35, 45; 105 draw_wheel_and_nut00; // wheel glpopmatrix; glpushmatrix; 109 gltranslatef-39, -35, -45; 110 glscalef10, 10, -10; 111 draw_wheel_and_nut00; // wheel glpopmatrix; glpushmatrix; 115 gltranslatef39, -35, -45; 116 glscalef10, 10, -10; 117 draw_wheel_and_nut00; // wheel glpopmatrix; void set_up_rot_matfloat *m, int i { void draw_fenceglfloat r, GLfloat g, GLfloat b { 126 HPSCAT 13 printed at 4/20/103, 23:01

58 filename mvcarcpp page void draw_fencesvoid { void draw_world void { 134 GLfloat m[16]; glmatrixmodegl_modelview; // Modeling Transformation 137 glloadidentity; 138 glulookat-150, 200, 400, path[cur_i][0], 489, path[cur_i][2], 00, 10, 00; draw_ground; 141 draw_fences; 142 draw_axes; 143 if path_exist draw_path; set_up_rot_matm, cur_i; glpushmatrix; 148 gltranslatefpath[cur_i][0], 489, path[cur_i][2]; 149 glmultmatrixfm; draw_car_dummy; 152 glpopmatrix; void rendervoid { 156 glcleargl_color_buffer_bit; 157 draw_world; 158 glutswapbuffers; void keyboard unsigned char key, int x, int y { int prevx_mouse; 166 void mousepressint button, int state, int x, int y { 167 if button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN { 168 prevx_mouse = x; 169 rightbuttonpressed = 1; else if button == GLUT_RIGHT_BUTTON && state == GLUT_UP 172 rightbuttonpressed = 0; void mousemoveint x, int y { 176 double deltax; if rightbuttonpressed { 179 deltax = x - prevx_mouse; 180 prevx_mouse = x; 181 if cur_i + deltax > 0 && cur_i + deltax < npath-1 { 182 prev_i = cur_i; cur_i += deltax; 183 dist = sqrtpath[cur_i][0]-path[prev_i][0]*path[cur_i][0]-path[prev_i][ 0] path[cur_i][1]-path[prev_i][1]*path[cur_i][1]-path[prev_i][1] path[cur_i][2]-path[prev_i][2]*path[cur_i][2]-path[prev_i][2] ; 186 if deltax < 00 dist *= -10; 187 glutpostredisplay; void reshapeint width, int height { 193 glviewport0, 0, width, height; glmatrixmodegl_projection; 196 glloadidentity; 197 gluperspective300, width/double height, 10, 1500; void init_openglvoid { void init_windowsvoid { 205 glutinitdisplaymodeglut_rgb GLUT_DOUBLE; 206 glutinitwindowsize1280, 1024; 207 glutcreatewindow"car in Hierarchy 2"; 208 glutdisplayfuncrender; 209 glutkeyboardfunckeyboard; 210 glutmousefuncmousepress; 211 glutmotionfuncmousemove; 212 glutreshapefuncreshape; void mainint argc, char **argv { 216 read_objects; 217 glutinit&argc, argv; 218 init_windows; 219 init_opengl; 220 glutmainloop ; HPSCAT 13 printed at 4/20/103, 23:01

59 / : : : : כ כ p q α L r q' p' M, n 0, 0, 0 p' n q q' α q p 1 x 6 y 3: 1 y M 1: 2 2 MC 2 WC WC e =e x e y 1 u =u x u y v =v x v y, כ 3 3 M 3 3, כ y m MC x m M y w 1 WC e xm 2: 2 5 v u x w x ym n = n x n y n z t L p =xyz t α p =x y z t L, L r, r p p q q a q q n, α b p p = A +p n p ncosα+ n psinα, A c p p n psinα {sin α Sp 3 3 S p, S 4 a e =ex ey ez t 1 u =ux uy uz t, v =vx vy vz t, n =nx ny nz t :00 -

60 /4 u v, n M V 4 4, 16 כ b OpenGL, 1 m1[16] m1[0], m1[1], m2[2],, m1[15] GLfloat m1[16], m2[16]; glmatrixmodegl MODELVIEW; glloadidentity; glmultmatrixfm1; glmultmatrixfm2; c כ, a0, a1, a2,, a5 כ GLfloat m1[16], m2[16]; glmatrixmodegl MODELVIEW; glloadidentity; glulookatex, ey, ez, a0, a1, a2, a3, a4, a5; 5 4 Pixar RenderMan API כ a? b? c, OpenGL? d OpenGL glulookat*? 6 OpenGL CC, EC, MC, NDC, WC, WdC a 5 A OpenGL? b 5 B OpenGL? c 5 C OpenGL? d OpenGL? e? f OpenGL NDC p z כ? 7 6 a A, B, C, D b 7 c B,? d, e B C M M i M 1 i M i M 1 i i כ :00 -

61 /4 01 void mainvoid { RtFloat fov = 45, intensity1 = 008, intensity2 = 08; 02 RtColor opacity1 = {03, 03, 03; 03 char *txtname = "redchecker"; 04 RiBeginRI NULL; 05 RiFormat480, 360, 1; 06 RiPixelSamples2, 2; 07 RiFrameBegin1; 08 RiDisplay"3spherestif", "file", "rgba", RI NULL; 09 RiProjection"perspective", "fov", &fov, RI NULL; 10 RiRotate-1100, 1, 0, 0; 11 RiTranslate00, -20, 80; 12 RiWorldBegin; 13 RiLightSource"ambientlight", "intensity", &intensity1, RI NULL; 14 RiAttributeBegin; 15 RiTranslate-225, 00, 20; 16 RiColorsphcolor1; 17 RiSphere10, -10, 10, 3600, RI NULL; 18 RiAttributeEnd; 19 RiAttributeBegin; 20 RiTranslate00, 00, 20; 21 RiColorsphcolor2; 22 RiShadingRate025; 23 RiShadingInterpolation"constant"; 24 RiSurface"screen", "Ka", &Ka2, "Kd", &Kd2; 25 RiSphere10, -10, 10, 3600, RI NULL; 26 RiAttributeEnd; 27 RiWorldEnd; 28 RiFrameEnd; 29 RiEnd; 30 4: RenderMan :00 -

62 /4 5: OpenGL 01 glpushmatrix; 02 glrotatefangle, 00, 10, 00; 03 gltranslatef00, 00, 50; 04 glscalef65, 65, 65; 05 draw cow; // draw object A 06 glpushmatrix; 07 glrotatef100*angle, 10, 00, 00; 08 gltranslatef-01, 00, 03; 09 glscalef0025, 0025, 0025; 10 draw box; // draw object C 11 glpushmatrix; 12 glrotatef400*angle, 10, 00, 00; 13 gltranslatef00, 40, 00; 14 glscalef04, 04, 04; 15 draw box; // draw object D 16 glpopmatrix; 17 glpopmatrix; 18 gltranslatef015, 03, 00; 19 glscalef03, 03, 03; 20 draw cow; // draw object B 21 glpopmatrix; 6: :00 -

63 / : : : כ כ 1 Win32 event message ID כ a OpenGL pixel format b glutpostredisplay c 2 M M 2 = a 3 p 0, p 1, p 2 p 0 p 2 : p 0 p 1 =3:1 p 0, p 1, p 2 M 2 p 0 p 2 : p 0 p 1? b M 2? c M 2 d OpenGL CC, EC, MC, NDC, WC, WdC, M 2? 3 1 p =xyz1 t p = x y z 1 t 4 4 M 3 y z x COP = 0, -1, 0 d PP : y = d 1: 4 2 Frame 1 Frame 2 u =u x u y u z t, v = v x v y v z t, n = n x n y n z t u = u x u y u z t, v = v x v y v z t, n = n x n y n z t Frame 1 Frame M 4 M 4 = R 1 R R 1 R 2 M u, v, n, u, v, n 5 OpenGL CC, EC, MC, NDC, WC, WdC a 3 [ 1, 1] [ 1, 1] [ 1, 1]? b? p' p :00 -

64 /5 Frame 2 u' z n v' y p v M 4 n' p' u Frame 1 2: c? d OpenGL? e? f,? g Fixed-function pipeline OpenGL Gouraud? h OpenGL vertex shader line a? struct output { float4 position: POSITION; float4 p: TEXCOORD0; float3 n: TEXCOORD1; ; output main float4 position: POSITION, float4 normal: NORMAL, uniform float4x4 ModelViewProj, uniform float4x4 ModelView, uniform float4x4 ModelViewIT { x output OUT; OUTposition= mulmodelviewproj, position; // line a OUTp = mulmodelview, position; OUTn = mulmodelviewit, normalxyz; return OUT; i,? j,? k MS Direct3D? D3DXMATRIX out; D3DXVECTOR3 eye2, 3, 3; D3DXVECTOR3 at2, 3, 3; D3DXVECTOR3 up2, 3, 3; D3DXMatrixLookAtLH&out, &eye, &at, &up; 6 3 OpenGL glortho* M 6, α, β, γ כ כ 2 r l M 6 = t b f n α β γ OpenGL typedef struct scene { int nobject; char *fname[256]; Object *objects; int nlight; Light *lights; Scene; :00 -

65 /5 #undef M y e f 3 printf"[field of Veiw in y]: scanf"%f", &cam->fovy; \n"; ze l, b, 0 x e r, t, 0 3: glorthol, r, b, t, n, f typedef struct cam { float pos[3]; float uaxis[3], vaxis[3], naxis[3]; GLfloat mat[16]; A GLfloat mat inv[16]; int move, upanddown; GLdouble fovy, aspect, near c, far c; Camera; -n void draw axis void { glbegingl LINES; glcolor3f10, 00, 00; glvertex3f-50, 00, 00; glvertex3f50, 00, 00; glcolor3f00, 10, 00; glvertex3f00, -50, 00; glvertex3f00, 50, 00; glcolor3f00, 00, 10; glvertex3f00, 00, -50; glvertex3f00, 00, 50; glend; void reset cameracamera *cam { float prp[3], vrp[3], vup[3]; float x[3], y[3], z[3], mag; printf"[proj Ref Pt]: \n"; scanf"%f %f %f", prp, prp+1, prp+2; printf"[view Ref Pt]: \n"; scanf"%f %f %f", vrp, vrp+1, vrp+2; printf"[view-up Vec]: \n"; scanf"%f %f %f", vup, vup+1, vup+2; B cam->pos[0] = prp[0]; cam->pos[1] = prp[1]; cam->pos[2] = prp[2]; cam->uaxis[0] = x[0]; cam->uaxis[1] = x[1]; cam->uaxis[2] = x[2]; cam->vaxis[0] = y[0]; cam->vaxis[1] = y[1]; cam->vaxis[2] = y[2]; cam->naxis[0] = z[0]; cam->naxis[1] = z[1]; cam->naxis[2] = z[2]; #define Mrow,col cam->mat[ C ] M0,0 = x[0]; M0,1 = x[1]; M0,2 = x[2]; M0,3 = 00; M1,0 = y[0]; M1,1 = y[1]; M1,2 = y[2]; M1,3 = 00; M2,0 = z[0]; M2,1 = z[1]; M2,2 = z[2]; M2,3 = 00; M3,0 = 00; M3,1 = 00; M3,2 = 00; M3,3 = 10; void cam object to ECScene *scene { glpushmatrix; gltranslatef D ; draw object&scene->objects[6]; glpopmatrix; void cam object to therescene *scene, Camera *cam { glpushmatrix; gltranslatefcam->pos[x], cam->pos[y], cam->pos[z]; glmultmatrixfcam->mat inv; cam object to ECscene; glpopmatrix; void draw scenescene *scene, Camera *cam { int i, j; glviewport530, 0, 750, 750; glmatrixmodegl PROJECTION; glloadidentity; gluperspectivecam->fovy, cam->aspect, cam->near c, cam->far c; glmatrixmodegl MODELVIEW; glloadidentity; glmultmatrixfcam->mat; gltranslatef-cam->pos[x], -cam->pos[y], :00 -

66 /5 draw axis; -cam->pos[z]; for i = 0; i < scene->nobject; i++ { glpushmatrix; glmultmatrixfglfloat * &scene->objects[i]xform; draw object&scene->objects[i]; glpopmatrix; a A mat, mat inv? mat = b reset camera* Camera B EC prp = 10, 5, 5, vrp = 13, 5, 9, vup = 0, 1, 0 B, z[0], z[1], z[2] כ כ? c, x[0], x[1], x[2] כ כ? d C C e draw axis* glvertex3f* draw scene* draw axis; CC, EC, MC, NDC, WC, WdC OpenGL כ? f draw scene* glviewport530, 0, 750, 750; glmatrixmodegl MODELVIEW;? g 6 scene->object[6] 3, 4, 10 ENG כ cam object to EC*, D C h cam object to ECscene; draw scene* כ? i cam object to therescene, cam; draw scene* draw axis; cam object to there* cam object to ECscene; OpenGL 4 4? j g-h כ cam object to there*; glpushmatrix; glpopmatrix;? 8 Direct3D protected void Render { float angle = EnvironmentTickCount /5000F; deviceclearclearflagstarget, ColorBisque, 10F, 0; devicebeginscene; devicetransformworld = MatrixRotationYangle; devicetransformview = MatrixLookAtLHnew Vector30, 05F, -3, new Vector30, 05F, :00 -

67 /5 0, new Vector30, 1, 0; devicetransformprojection = MatrixPerspectiveFovLHfloat MathPI/40F, 10F, 10F, 50F; devicesetstreamsource0, vertices, 0; devicedrawprimitives PrimitiveTypeTriangleList, 0, 1; deviceendscene; devicepresent; a? b OpenGL x, y, z w? c OpenGL d MC WC? e OpenGL glvertex3f*? f? 3 כ :00 -

68 / : : : : כ כ 1 a Win32 message ID A This message is sent when the window is first produced, and gives you a chance to do any setup, initialization, or resource allocation B This message is sent whenever your window s contents need repainting This can occur for a number of reasons: the window was moved or resized by the user, another application popped up and obscured yours, and so on C This message is sent to your window when the window is about to be killed Usually, this is a direct result of the user clicking on the window s close icon or closing from the window s system menu Either way, b complementary color? RGB כ כ A pair of colors which can be additively combined to produce white light are called complementary colors, because together they complete the spectrum c The vectors v i are if α 1 v 1 + α 2 v α m v m = 0 for constants α i only if v 1 = v 2 = = v m = 0 d 3 1, 0, 3, 2 e 4 4? f glscalefx, y, z /,,? כ, +/-=, *=, /= g R S כ? h 3? 4 4 i? j / /? A, B, C D k OpenGL? l OpenGL? m OpenGL? :00 -

69 /4 2 int angle e = 0, angle r = 0, angle l = 0; void keyboardunsigned char key, int x, int y { switch key { case e : angle e = angle e + 1%360; glutpostredisplay; break; case r : angle r = angle r + 1%360; glutpostredisplay; break; case l : angle l = angle l + 1%360; glutpostredisplay; break; case m : void draw boxvoid { glbegingl POLYGON; glvertex2f05, 05; glvertex2f05, -05; glvertex2f-05, -05; glvertex2f-05, 05; glend; void practice modevoid { glpushmatrix; gltranslatef2500, 2500, 00; glscalef1000, 1000, 10; glrotatefangle e, 00, 00, 10; glpushmatrix; /* A */ glscalef10, 01, 10; glcolor3f00, 10, 00; draw box glpopmatrix; glpushmatrix; gltranslatef-05, 00, 00; glrotatefangle l, 00, 00, 10; gltranslatef-02, 00, 00; glscalef05, 015, 10; glcolor3f10, 00, 00; draw box; glpopmatrix; glpushmatrix; /* B */ gltranslatef05, 00, 00; glrotatefangle r, 00, 00, 10; gltranslatef02, 00, 00; glscalef05, 015, 10; glcolor3f00, 00, 10; draw box; glpopmatrix; /* C */ glpopmatrix; practice mode practice angle e, angle r, angle l 0 keyboard כ MS, a b l r 45, e 90 c practice mode A d B C :00 -

70 /4 3 a 1 u = u x u y u z t, v = v x v y v z t, n = n x n y n z t p = e x e y e z t x, y, z 4 4 M V b R T R T c glmatrixmodegl MODELVIEW; glloadidentity; glrotatef900, 10, 00, 00; gltranslatef-100, 00, 00; glulookat 9 כ 4 3 1, 1, 1 6, 6, 11 1, 1, 1 1, 1, M ortho 1 z 5 2 PEXlib 3 API a PEXlib OpenGL? b OpenGL PEXlib API 6 Direct3D protected void SetupMatrices { float angle = EnvironmentTickCount /5000F; devicetransformworld = MatrixRotationYangle; devicetransformview = MatrixLookAtLHnew Vector30, 05F, -3, new Vector30, 05F, 0, new Vector30, 1, 0; devicetransformprojection = MatrixPerspectiveFovLHfloat MathPI/40F, 10F, 10F, 50F; protected void Render { deviceclearclearflagstarget, ColorBisque, 10F, 0; devicebeginscene; SetupMatrices; devicesetstreamsource0, vertices, 0; devicedrawprimitives PrimitiveTypeTriangleList, 0, 1; deviceendscene; devicepresent; a? b? c OpenGL d? e OpenGL glvertex3f*? f? 2 3 כ :00 -

71 /4 $! "#" " 1: 2: PEXlib :00 -

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

서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 (1/8) [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 있는 변환 행렬은 일반적으로 어떤 좌표계 에서 어떤 좌표계로의 (/8) [CSE47: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것 있는 변환 행렬은 일반적으로 어떤 좌표계 에서 어떤 좌표계로의 변환을 위하여 사용 하는가? 답안지 공간이 부족할 경우, 답안지 뒷면에 기 술하고, 해당 답안지 칸에 그 사실을 명기할 것 (i) 투영 참조점이 무한대점 (point at infinit)

More information

0503중간고사.dvi

0503중간고사.dvi 서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 1/9 [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 담당교수: 임 인 성 답은 반드시 답안지에 기술할 것. 공간이 부족할 경우 반드시 답안지 몇 쪽의 뒤에 있다고 명기한 후 기술할 것. 그 외의 경우의 답안지 뒤쪽이나 연습지 에 기술한 내용은 답안으로 인정 안함. 1. 2차원

More information

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

서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 (1/7) [CSE4170: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 답 안지 공간이 부족할 경우, 답안지 뒷면에 기술 하고, 해당 (/7) [CSE47: 기초 컴퓨터 그래픽스] 중간고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 답 안지 공간이 부족할 경우, 답안지 뒷면에 기술 하고, 해당 답안지 칸에 그 사실을 명기할 것.. 2차원 아핀변환인 이동변환 T (t, t ), 크기변환 S(s, s ), 그리고 회전변환 R(θ)에 대한 3행 3열 행렬들을 고려하자.

More information

Microsoft Word - cg07-midterm.doc

Microsoft Word - cg07-midterm.doc 중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 답안지에학과, 학번, 이름외에본인의암호를기입하면성적공고시학번대신암호를사용할것임. 1. 맞으면 true, 틀리면 false를적으시오.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 03 모델변환과시점변환 01 기하변환 02 계층구조 Modeling 03 Camera 시점변환 기하변환 (Geometric Transformation) 1. 이동 (Translation) 2. 회전 (Rotation) 3. 크기조절 (Scale) 4. 전단 (Shear) 5. 복합변환 6. 반사변환 7. 구조변형변환 2 기하변환 (Geometric Transformation)

More information

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

서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (2/8) 다음과같이설정되어있는데, cam.pos[0] = 0.0, cam.pos[1] = 0.0, cam.pos[2] = 500.0; 이때의 cam.naxis[] 벡터의세원소값을기술하라. Figure 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (1/8) [CSE4170: 기초컴퓨터그래픽스 ] 기말고사 ( 담당교수 : 임인성 ) 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. OpenGL 시스템의각좌표계에대한약어는다음과같으며, 답을기술할때필요할경우적절히약어를사용하라.

More information

Open GL

Open GL Graphics Basic Windows & OpenGL Programming 컴퓨터그래픽스연구실 OpenGL 관련참고사이트 OpenGL 공식사이트 http://www.opengl.org/ Khronos Group http://www.khronos.org/ Nehe Productions http://nehe.gamedev.net/ OpenGL 파일설정 압축을푼후다음경로로파일을복사

More information

Microsoft PowerPoint - 13prac.pptx

Microsoft PowerPoint - 13prac.pptx Viewing 1 th Week, 29 OpenGL Viewing Functions glulookat() Defining a viewing matrix glortho() Creating a matrix for an orthographic parallel viewing i volume glfrustum() Creating a matrix for a perspective-view

More information

Microsoft PowerPoint - lecture11-ch4

Microsoft PowerPoint - lecture11-ch4 Geometric Objects and Transformation 321190 2007 년봄학기 4/17/2007 박경신 OpenGL Transformation OpenGL 은기본적인변환을수행하는함수를제공한다. Translation: 이동변환은 3 차원이동변위벡터 (dx, dy, dz) 를넣는다. Rotation: 회전변환은 axis( 회전축 ) 와 angle(

More information

Microsoft PowerPoint - lecture11-ch4.ppt

Microsoft PowerPoint - lecture11-ch4.ppt Geometric Objects and Transformation 321190 2007 년봄학기 4/17/2007 박경신 OpenGL Transformation OpenGL 은기본적인변환을수행하는함수를제공한다. Translation: 이동변환은 3 차원이동변위벡터 (dx, dy, dz) 를넣는다. Rotation: 회전변환은 axis( 회전축 ) 와 angle(

More information

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

단국대학교멀티미디어공학그래픽스프로그래밍중간고사 (2011 년봄학기 ) 2011 년 4 월 26 일학과학번이름 중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 l 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤 중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 l 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. l 답안지에학과, 학번, 이름외에본인의암호를기입하면성적공고시학번대신암호를사용할것임. 1. 맞으면 true, 틀리면 false를적으시오.

More information

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

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

More information

Microsoft Word - cg09-final-answer.doc

Microsoft Word - cg09-final-answer.doc 기말고사 담당교수 : 단국대학교멀티미디어공학전공박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 성적공고시중간고사때제출한암호를사용할것임. 1. 다음문제에답하시오. (50점) 1) 직교투영 (orthographic projection),

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 01 OpenGL 과 Modeling 01 OpenGL API 02 Rendering Pipeline 03 Modeling 01 OpenGL API 1. OpenGL API 설치및환경설정 2. OpenGL API 구조 2 01 1. OpenGL API 설치및환경설정 OpenGL API 의상대적위치 System Memory Graphics Application

More information

Microsoft Word - cg09-midterm.doc

Microsoft Word - cg09-midterm.doc 중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 답안지에학과, 학번, 이름외에본인의암호를기입하면성적공고시학번대신암호를사용할것임. 1. 맞으면 true, 틀리면 false를적으시오.

More information

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

Vector Differential: 벡터 미분 Yonghee Lee October 17, 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표 Vector Differential: 벡터 미분 Yonhee Lee October 7, 08 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표기법을 정의하는 방법이다 보통 스칼라(scalar)에 대한 미분은 일분수 함수 f : < < 또는 다변수 함수(function

More information

Microsoft PowerPoint - lecture4-ch2.ppt

Microsoft PowerPoint - lecture4-ch2.ppt Graphics Programming OpenGL Camera OpenGL 에서는카메라가물체의공간 (drawing coordinates) 의원점 (origin) 에위치하며 z- 방향으로향하고있다. 관측공간을지정하지않는다면, 디폴트로 2x2x2 입방체의 viewing volume을사용한다. (1, 1, 1) 321190 2007년봄학기 3/16/2007 박경신

More information

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

Łø·ŸÕ=¤ ¬ ÇX±xÒ¸ 06 - Èpº– 1 그래픽스강의노트 06 - 조명 1 강영민 동명대학교 2015 년 2 학기 강영민 ( 동명대학교 ) 3D 그래픽스프로그래밍 2015 년 2 학기 1 / 25 음영 계산의 필요성 음영(陰影) 계산, 혹은 셰이딩(shading)은 어떤 물체의 표면에서 어두운 부분과 밝은 부분을 서로 다른 밝기로 그려내는 것 모든 면을 동일한 색으로 그리면 입체감이 없다. 2 /

More information

Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오.

Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오. Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, 2018 1 George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오. 실행후 Problem 1.3에 대한 Display결과가 나와야 함) George 그림은 다음과

More information

0503기말고사.dvi

0503기말고사.dvi 서강대학교 공과대학 컴퓨터공학과 CSE4170 기초 컴퓨터 그래픽스 중간고사 (1/6) [CSE4170: 기초 컴퓨터 그래픽스] 기말고사 (담당교수: 임 인 성) 답은 연습지가 아니라 답안지에 기술할 것. 답안지 공간이 부족할 경우, 답안지 뒷면에 기 술하고, 해당 답안지 칸에 그 사실을 명기할 것. 1. 다음은 OpenGL fixed-function 렌더링

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

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

(Microsoft PowerPoint - CNVZNGWAIYSE.ppt [\310\243\310\257 \270\360\265\345]) Viewing Viewing Process first part : model-view in Chapter 4 second part : projection in Chapter 5 world frame glmatrimode(gl_modelveiw) glmatrimode(gl_projection) camera frame camera 방향 object frame 5.

More information

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

(Microsoft PowerPoint - JXQEUPXIEBNZ.ppt [\310\243\310\257 \270\360\265\345]) Input and Interaction 3.1 Interaction Input 기능의처리 input : 사용자와의대화 O/S 와밀접한관계 문제점 : portability 에심각한장애 MS Windows 용으로작성하면, 거기서만작동 OpenGL approach OpenGL 은 portability 를중시 input 은 OpenGL 기능에서되도록제거 GLUT :

More information

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

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

0503기말고사.dvi

0503기말고사.dvi 서강대학교공과대학컴퓨터공학과 [CSE4170] 기초컴퓨터그래픽스기말고사 (1/8) [CSE4170] 기초컴퓨터그래픽스 기말고사 담당교수 : 임인성 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. OpenGL 시스템의각좌표계에대한약어는다음과같으며, 답을기술할때필요할경우적절히약어를사용하라.

More information

<B4EBC7D0BCF6C7D02DBBEFB0A2C7D4BCF62E687770>

<B4EBC7D0BCF6C7D02DBBEFB0A2C7D4BCF62E687770> 삼각함수. 삼각함수의덧셈정리 삼각함수의덧셈정리 삼각함수 sin (α + β ), cos (α + β ), tan (α + β ) 등을 α 또는 β 의삼각함수로나 타낼수있다. 각 α 와각 β 에대하여 α >0, β >0이고 0 α - β < β 를만족한다고가정하 자. 다른경우에도같은방법으로증명할수있다. 각 α 와각 β 에대하여 θ = α - β 라고놓자. 위의그림에서원점에서거리가

More information

Microsoft Word - cg07-final.doc

Microsoft Word - cg07-final.doc 기말고사 담당교수 : 단국대학교멀티미디어공학전공박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 성적공고시중간고사때제출한암호를사용할것임. 1. 맞으면 true, 틀리면 false를적으시오. (20점) 1) 은면제거알고리즘중페인터알고리즘

More information

; 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

; 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 ; struct point p; printf("0이아닌점의좌표를입력하시오 : "); scanf("%d %d", &p.x, &p.y); if (p.x > 0 && p.y > 0) printf("1사분면에있다.\n"); if (p.x < 0 && p.y > 0) printf("2사분면에있다.\n"); if (p.x < 0 && p.y < 0) printf("3사분면에있다.\n");

More information

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

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 알고리즘설계와분석 (CSE3081-2반 ) 중간고사 (2013년 10월24일 ( 목 ) 오전 10시30분 ) 담당교수 : 서강대학교컴퓨터공학과임인성수강학년 : 2학년문제 : 총 8쪽 12문제 ========================================= < 주의 > 답안지에답을쓴후제출할것. 만약공간이부족하면답안지의뒷면을이용하고반드시답을쓰는칸에답안지의어느쪽의뒷면에답을기술하였는지명시할것.

More information

Microsoft Word - cg08-final-answer.doc

Microsoft Word - cg08-final-answer.doc 기말고사 담당교수 : 단국대학교멀티미디어공학전공박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 성적공고시중간고사때제출한암호를사용할것임. 1. 다음문제에답하시오. (50점) 1) 표면의법선벡터 (normal vector) N과표면에서광원으로향하는광원벡터

More information

Microsoft Word - cg12-midterm-answer

Microsoft Word - cg12-midterm-answer 중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 답안지에학과, 학번, 이름외에본인의암호를기입하면성적공고시학번대신암호를사용할것임.. 맞으면 true, 틀리면 false를적으시오.

More information

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

서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (1/10) [CSE4170: 기초컴퓨터그래픽스 ] 기말고사 담당교수 : 임인성 답은연습지가아니라답안지에기술할것. 답안지공간이부족할경우, 답안지뒷면에기술하고, 해당답안지칸에그사실을명기할것. 연습지는수거 서강대학교공과대학컴퓨터공학과 CSE4170 기초컴퓨터그래픽스기말고사 (1/10) [CSE4170: 기초컴퓨터그래픽스 ] 기말고사 담당교수 : 임인성 답은연습지가아니라답안지에기술할것. 답안지공간이부족할경우, 답안지뒷면에기술하고, 해당답안지칸에그사실을명기할것. 연습지는수거하지않음. b 1 a c texel 4 e 3 2 d pixel preimage (a) 텍셀색깔의계산

More information

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

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 알고리즘설계와분석 (CSE3081(2 반 )) 기말고사 (2016년 12월15일 ( 목 ) 오전 9시40분 ~) 담당교수 : 서강대학교컴퓨터공학과임인성 < 주의 > 답안지에답을쓴후제출할것. 만약공간이부족하면답안지의뒷면을이용하고, 반드시답을쓰는칸에어느쪽의뒷면에답을기술하였는지명시할것. 연습지는수거하지않음. function MakeSet(x) { x.parent

More information

KNK_C_05_Pointers_Arrays_structures_summary_v02

KNK_C_05_Pointers_Arrays_structures_summary_v02 Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

Open GL

Open GL Graphics OpenGL 컴퓨터그래픽스연구실 GLUT 모델링 정 6 면체 void glutsolidcube(gldouble size); 물체겉면이칠해진형태 void glutwirecube(gldouble size); 물체뼈대만선으로표시 size : 정육면체모서리의길이 GLUT 모델링 원구 void glutsolidsphere(gldouble radius,

More information

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

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

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

단국대학교멀티미디어공학그래픽스프로그래밍기말고사 (2012 년봄학기 ) 2012 년 6 월 12 일학과학번이름 기말고사 담당교수 : 단국대학교멀티미디어공학전공박경신 l 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤 기말고사 담당교수 : 단국대학교멀티미디어공학전공박경신 l 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. l 답안지에학과, 학번, 이름외에본인의암호를기입하면성적공고시학번대신암호를사용할것임. 1. 다음은 oglclass 에서제공하는

More information

1 경영학을 위한 수학 Final Exam 2015/12/12(토) 13:00-15:00 풀이과정을 모두 명시하시오. 정리를 사용할 경우 명시하시오. 1. (각 6점) 다음 적분을 구하시오 Z 1 4 Z 1 (x + 1) dx (a) 1 (x 1)4 dx 1 Solut

1 경영학을 위한 수학 Final Exam 2015/12/12(토) 13:00-15:00 풀이과정을 모두 명시하시오. 정리를 사용할 경우 명시하시오. 1. (각 6점) 다음 적분을 구하시오 Z 1 4 Z 1 (x + 1) dx (a) 1 (x 1)4 dx 1 Solut 경영학을 위한 수학 Fial Eam 5//(토) :-5: 풀이과정을 모두 명시하시오. 정리를 사용할 경우 명시하시오.. (각 6점) 다음 적분을 구하시오 4 ( ) (a) ( )4 8 8 (b) d이 성립한다. d C C log log (c) 이다. 양변에 적분을 취하면 log C (d) 라 하자. 그러면 d 4이다. 9 9 4 / si (e) cos si

More information

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

Microsoft PowerPoint - lecture2-opengl.ppt [호환 모드] OpenGL & GLUT OpenGL & GLUT 321190 2011 년봄학기 3/15/2011 박경신 OpenGL http://www.opengl.org/ http://www.sgi.com/software/opengl Windows95 이후 OpenGL 이표준으로들어가있음. ftp://ftp.microsfot.com/softlib/mslfiles/opengl95.exe

More information

Microsoft PowerPoint - 06-Body Data Class.pptx

Microsoft PowerPoint - 06-Body Data Class.pptx Digital 3D Anthropometry 6. Body Data Class Sungmin Kim SEOUL NATIONAL UNIVERSITY Body Data Class 의설계 Body Model 의관리 인체데이터입출력 데이터불러오기 인체모델그리기 TOpenGL의확장 프로젝트관리 프로젝트저장 / 불러오기 추가기능구현 좌표축정렬 Face, Wireframe,

More information

문제지 제시문 2 보이지 않는 영역에 대한 정보를 얻기 위하여 관측된 다른 정보를 분석하여 역으로 미 관측 영역 에 대한 정보를 얻을 수 있다. 가령 주어진 영역에 장애물이 있는 경우 한 끝 점에서 출발하여 다른 끝 점에 도달하는 최단 경로의 개수를 분석하여 장애물의

문제지 제시문 2 보이지 않는 영역에 대한 정보를 얻기 위하여 관측된 다른 정보를 분석하여 역으로 미 관측 영역 에 대한 정보를 얻을 수 있다. 가령 주어진 영역에 장애물이 있는 경우 한 끝 점에서 출발하여 다른 끝 점에 도달하는 최단 경로의 개수를 분석하여 장애물의 제시문 문제지 2015학년도 대학 신입학생 수시모집 일반전형 면접 및 구술고사 수학 제시문 1 하나의 동전을 던질 때, 앞면이나 뒷면이 나온다. 번째 던지기 전까지 뒷면이 나온 횟수를 라 하자( ). 처음 던지기 전 가진 점수를 점이라 하고, 번째 던졌을 때, 동전의 뒷면이 나오면 가지고 있던 점수를 그대로 두고, 동전의 앞면이 나오면 가지고 있던 점수를 배

More information

슬라이드 1

슬라이드 1 프로세싱 광운대학교로봇학부박광현 프로세싱실행 2 C:\processing-3.2.1 폴더 창나타내기 실행 정지 3 폭 높이 600 400 도형그리기 배경칠하기 5 background(255, 255, 255); R G B background(255, 0, 0); background(255, 122, 0); 선그리기 6 background(255, 122, 0);

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

완벽한개념정립 _ 행렬의참, 거짓 수학전문가 NAMU 선생 1. 행렬의참, 거짓개념정리 1. 교환법칙과관련한내용, 는항상성립하지만 는항상성립하지는않는다. < 참인명제 > (1),, (2) ( ) 인경우에는 가성립한다.,,, (3) 다음과같은관계식을만족하는두행렬 A,B에

완벽한개념정립 _ 행렬의참, 거짓 수학전문가 NAMU 선생 1. 행렬의참, 거짓개념정리 1. 교환법칙과관련한내용, 는항상성립하지만 는항상성립하지는않는다. < 참인명제 > (1),, (2) ( ) 인경우에는 가성립한다.,,, (3) 다음과같은관계식을만족하는두행렬 A,B에 1. 행렬의참, 거짓개념정리 1. 교환법칙과관련한내용, 는항상성립하지만 는항상성립하지는않는다. < 참인명제 > (1),, (2) ( ) 인경우에는 가성립한다.,,, (3) 다음과같은관계식을만족하는두행렬 A,B에대하여 AB=BA 1 가성립한다 2 3 (4) 이면 1 곱셈공식및변형공식성립 ± ± ( 복호동순 ), 2 지수법칙성립 (은자연수 ) < 거짓인명제 >

More information

Microsoft PowerPoint - ch02-1.ppt

Microsoft PowerPoint - ch02-1.ppt 2. Coodinte Sstems nd Tnsfomtion 20 20 2.2 Ctesin Coodintes (,, ) () (b) Figue 1.1 () Unit vectos,, nd, (b) components of long,, nd. 직각좌표계에서각변수 (,, ) 들의범위 < < < < < < (2.1) 직각좌표계에서임의의벡터 는,, 가그림 1.1 에서와같이,,

More information

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

벡터(0.6)-----.hwp 만점을위한 수학전문가남언우 - 벡터 1강 _ 분점의위치벡터 2강 _ 벡터의일차결합 3강 _ 벡터의연산 4강 _ 내적의도형적의미 5강 _ 좌표를잡아라 6강 _ 내적의활용 7강 _ 공간도형의방정식 8강 _ 구의방정식 9강 _2014년수능최고난도문제 좌표공간에 orbi.kr 1 강 _ 분점의위치벡터 01. 1) 두점 A B 이있다. 평면 에있는점 P 에대하여 PA

More information

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

Python과 함께 배우는 신호 해석 제 5 강. 복소수 연산 및 Python을 이용한 복소수 연산      (제 2 장. 복소수 기초) 제 5 강. 복소수연산및 을이용한복소수연산 ( 제 2 장. 복소수기초 ) 한림대학교전자공학과 한림대학교 제 5 강. 복소수연산및 을이용한복소수연산 1 배울내용 복소수의기본개념복소수의표현오일러 (Euler) 공식복소수의대수연산 1의 N 승근 한림대학교 제 5 강. 복소수연산및 을이용한복소수연산 2 복소수의 4 칙연산 복소수의덧셈과뺄셈에는직각좌표계표현을사용하고,

More information

chapter2.hwp

chapter2.hwp 2. 그래픽스프로그래밍의소개 2.1 OpenGL 이란? 2.1.1 OpenGL 의정의 2차원또는 3차원드로잉을위한표준그래픽스라이브러리 - 그래픽스하드웨어에대한소프트웨어인터페이스 - C나 C++ 과같은프로그래밍언어는아님 - 그래픽스하드웨어에잘구현될수있음 -C언어기반라이브러리 - 상태기반아키텍쳐 - 즉시모드 (Immediate mode) 기반 그래픽스라이브러리

More information

04_오픈지엘API.key

04_오픈지엘API.key 4. API. API. API..,.. 1 ,, ISO/IEC JTC1/SC24, Working Group ISO " (Architecture) " (API, Application Program Interface) " (Metafile and Interface) " (Language Binding) " (Validation Testing and Registration)"

More information

Open GL

Open GL Graphics OpenGL 컴퓨터그래픽스연구실 OpenGL 관련참고사이트 OpenGL 공식사이트 http://www.opengl.org/ Khronos Group http://www.khronos.org/ Nehe Productions http://nehe.gamedev.net/ OpenGL 파일셋팅 압축을푼후다음경로로파일을복사 헤더파일 (glut.h) Microsoft

More information

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

Microsoft PowerPoint - lecture11-ch5.ppt [호환 모드] Viewing Viewing 329 24 년봄학기 5//24 박경신 관측의기본요소 객체 (Objects) 관측자 (Viewer) 투영선 (Projector) 투영면 (Projection plane) 투영중심 (Center of Projection: COP) COP가유한한경우 투시관측 (Perspectie iews) COP가무한한경우 평행관측 (Parallel

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

회원번호 대표자 공동자 KR000****1 권 * 영 KR000****1 박 * 순 KR000****1 박 * 애 이 * 홍 KR000****2 김 * 근 하 * 희 KR000****2 박 * 순 KR000****3 최 * 정 KR000****4 박 * 희 조 * 제

회원번호 대표자 공동자 KR000****1 권 * 영 KR000****1 박 * 순 KR000****1 박 * 애 이 * 홍 KR000****2 김 * 근 하 * 희 KR000****2 박 * 순 KR000****3 최 * 정 KR000****4 박 * 희 조 * 제 회원번호 대표자 공동자 KR000****1 권 * 영 KR000****1 박 * 순 KR000****1 박 * 애 이 * 홍 KR000****2 김 * 근 하 * 희 KR000****2 박 * 순 KR000****3 최 * 정 KR000****4 박 * 희 조 * 제 KR000****4 설 * 환 KR000****4 송 * 애 김 * 수 KR000****4

More information

<B1B9BEEE412E687770>

<B1B9BEEE412E687770> 201 학년도대학수학능력시험 6 월모의평가문제및정답 2016 학년도대학수학능력시험 6 월모의평가문제지 1 제 2 교시 5 지선다형 1. 두행렬 성분은? [2 점 ] 에대하여행렬 의 3. lim 의값은? [2점] 1 2 3 4 5 1 2 3 4 5 2. 의값은? [2점] 1 2 3 4 5 4. 공차가 인등차수열 에대하여 의값은? [3 점 ] 1 2 3 4 5

More information

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

More information

Microsoft PowerPoint - lecture15-ch6.ppt

Microsoft PowerPoint - lecture15-ch6.ppt Lighting OpenGL Lighting OpenGL의조명에는 3가지요소가필요 광원 (Lights) 재질 (Materials) 면의법선벡터 (Normals) 321190 2008년봄학기 5/26/2007 박경신 OpenGL Lighting OpenGL Lighting OpenGL에서제공하는조명모델 환경광 / 주변광 (ambient lights) 점광원 (point

More information

Microsoft PowerPoint 다변수 방정식과 함수(1).ppt

Microsoft PowerPoint 다변수 방정식과 함수(1).ppt 수치해석 () 다변수방정식과함수 (Part 1) (Multi-Variable Equations and Functions Part 1) 2005 년가을학기 문양세컴퓨터과학과강원대학교자연과학대학 In this chapter 다변수방정식과함수 변수가두개이상인함수, 예를들어, f ( x, y, z) = log( x+ y) + sin( x+ z) 의해 (f(x,y,z)=0

More information

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

LIDAR와 영상 Data Fusion에 의한 건물 자동추출 i ii iii iv v vi vii 1 2 3 4 Image Processing Image Pyramid Edge Detection Epipolar Image Image Matching LIDAR + Photo Cross correlation Least Squares Epipolar Line Matching Low Level High Level Space

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

1 peaieslvfp3 1. 두점사이의거리 수직선위의두점사이의거리를구할수있다. 좌표평면위의두점사이의거리를구할수있다. 수직선위의두점사이의거리 todrkrgo qhqtlek 오른쪽그림은충무로역을중심으로한서울시지하철 3`호선노선도의일부분이다. 충무로역을` 0, 을지로 3`

1 peaieslvfp3 1. 두점사이의거리 수직선위의두점사이의거리를구할수있다. 좌표평면위의두점사이의거리를구할수있다. 수직선위의두점사이의거리 todrkrgo qhqtlek 오른쪽그림은충무로역을중심으로한서울시지하철 3`호선노선도의일부분이다. 충무로역을` 0, 을지로 3` peaieslvfp. 두점사이의거리 수직선위의두점사이의거리를구할수있다. 좌표평면위의두점사이의거리를구할수있다. 수직선위의두점사이의거리 todrkrgo qhqtlek 오른쪽그림은충무로역을중심으로한서울시지하철 `호선노선도의일부분이다. 충무로역을` 0, 을지로 `가역을 ``로나타낼때, 다음물음에답하여라. 독립문 경복궁 안국종로 가을지로 가충무로동대입구약수금호옥수압구정잠원신사

More information

제 2 교시 2019 학년도 3 월고 1 전국연합학력평가문제지수학영역 1 5 지선다형 1. 의값은? [2점] 일차방정식 의해는? [2 점 ] 두수, 의최대공약수는? [2 점 ] 일차함수 의그래프에서

제 2 교시 2019 학년도 3 월고 1 전국연합학력평가문제지수학영역 1 5 지선다형 1. 의값은? [2점] 일차방정식 의해는? [2 점 ] 두수, 의최대공약수는? [2 점 ] 일차함수 의그래프에서 제 2 교시 2019 학년도 3 월고 1 전국연합학력평가문제지 1 5 지선다형 1. 의값은? [2점] 1 2 3 4 5 3. 일차방정식 의해는? [2 점 ] 1 2 3 4 5 2. 두수, 의최대공약수는? [2 점 ] 1 2 3 4 5 4. 일차함수 의그래프에서 절편과 절편의합은? [3 점 ] 1 2 3 4 5 1 12 2 5. 함수 의그래프가두점, 를지날때,

More information

Microsoft PowerPoint - lecture16-ch6

Microsoft PowerPoint - lecture16-ch6 Lighting OpenGL Lighting OpenGL의조명에는 3가지요소가필요 광원 (Lights) 재질 (Materials) 면의법선벡터 (Normals) 321190 2007년봄학기 5/15/2007 박경신 OpenGL Lighting OpenGL Lighting OpenGL에서제공하는조명모델 환경광 / 주변광 (ambient lights) 점광원 (point

More information

1 1 장. 함수와극한 1.1 함수를표현하는네가지방법 1.2 수학적모형 : 필수함수의목록 1.3 기존함수로부터새로운함수구하기 1.4 접선문제와속도문제 1.5 함수의극한 1.6 극한법칙을이용한극한계산 1.7 극한의엄밀한정의 1.8 연속

1 1 장. 함수와극한 1.1 함수를표현하는네가지방법 1.2 수학적모형 : 필수함수의목록 1.3 기존함수로부터새로운함수구하기 1.4 접선문제와속도문제 1.5 함수의극한 1.6 극한법칙을이용한극한계산 1.7 극한의엄밀한정의 1.8 연속 1 1 장. 함수와극한 1.1 함수를표현하는네가지방법 1.2 수학적모형 : 필수함수의목록 1.3 기존함수로부터새로운함수구하기 1.4 접선문제와속도문제 1.5 함수의극한 1.6 극한법칙을이용한극한계산 1.7 극한의엄밀한정의 1.8 연속 2 1.1 함수를표현하는네가지방법 함수 f : D E 는집합 D 의각원소 x 에집합 E 에속하는단하나의원소 f(x) 를 대응시키는규칙이다.

More information

歯Lecture2.PDF

歯Lecture2.PDF VISUAL C++/MFC Lecture 2? Update Visual C ++/MFC Graphic Library OpenGL? Frame OpenGL 3D Graphic library coding CLecture1View? OpenGL MFC coding Visual C++ Project Settings Link Tap Opengl32lib, Glu32lib,

More information

고 학년도 9월고수학 1 전국연합학력평가영역문제지 1 1 제 2 교시 수학영역 5 지선다형 3. 두다항식, 에대하여 는? [ 점 ] 1. 의값은? ( 단, ) [ 점 ] 다항식 이 로인수분해될때, 의값은? ( 단,,

고 학년도 9월고수학 1 전국연합학력평가영역문제지 1 1 제 2 교시 수학영역 5 지선다형 3. 두다항식, 에대하여 는? [ 점 ] 1. 의값은? ( 단, ) [ 점 ] 다항식 이 로인수분해될때, 의값은? ( 단,, 고 208학년도 9월고수학 전국연합학력평가영역문제지 제 2 교시 수학영역 5 지선다형 3. 두다항식, 에대하여 는? [ 점 ]. 의값은? ( 단, ) [ 점 ] 2 3 2 3 4 5 4 5 2. 다항식 이 로인수분해될때, 의값은? ( 단,, 는상수이다.) [ 점 ] 4. 좌표평면위의두점 A, B 사이의거리가 일때, 양수 의값은? [ 점 ] 2 3 4 5 2

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

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

(Microsoft PowerPoint - FZBDPQDCSHAN.ppt [\310\243\310\257 \270\360\265\345]) Graphics Programming 2.1 The Sierpinski Gasket Sierpinski gasket 예제문제로사용 원래, Fractal geometry 에서정의 만드는방법 삼각형을그린다. 삼각형내부에 random 하게점 P i 를선택, 출력 random 하게꼭지점중의하나 V i 선택 V i 와 P i 의중점을 P i+1 로선택, 출력 위과정을반복

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

02장.배열과 클래스

02장.배열과 클래스 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :

More information

컴퓨터그래픽스 소프트웨어

컴퓨터그래픽스 소프트웨어 Video & Image VIPLProcessing Lab. 2014-1 Myoung-Jin Kim, Ph.D. (webzealer@ssu.ac.kr) 목차 1 래스터그래픽스및벡터그래픽스 2 컴퓨터그래픽스소프트웨어의유형 3 OpenGL 프로그래밍 래스터그래픽스영상 래스터그래픽스영상이란? 래스터 : CRT 의래스터 주사 (raster scan) 방식에서사용된용어

More information

C 언어 프로그래밊 과제 풀이

C 언어 프로그래밊 과제 풀이 과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍

More information

Microsoft PowerPoint - 05geometry.ppt

Microsoft PowerPoint - 05geometry.ppt Graphic Applications 3ds MAX 의기초도형들 Geometry 3 rd Week, 2007 3 차원의세계 축 (Axis) X, Y, Z 축 중심점 (Origin) 축들이모이는점 전역축 (World Coordinate Axis) 절대좌표 지역축 (Local Coordinate Axis) 오브젝트마다가지고있는축 Y Z X X 다양한축을축을사용한작업작업가능

More information

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에

More information

슬라이드 1

슬라이드 1 세모그래픽스 III. 게임프로그래밍에필요한 OpenGL Page 1 목차 1. 간단한 OBJ-C 2. IOS의 OGL VS Win32의 OGL 3. IOS개발환경설정 4. 뷰포트, 프로젝션, 모델뷰 ( 회전이먼저냐이동이먼저냐?) Page 2 세모그래픽스 간단한 OBJ-C 2011.07.16 김형석 Page 3 1. Obj-C (test2_cpp) #import

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

7) 다음의 다음 9) 남학생과 9. zb 여학생 각각 명이 갖고 있는 여름 티 셔츠의 개수를 조사하여 꺾은선그래프로 나타낸 것 이다. 이 두 그래프의 설명으로 옳지 않은 것은? ㄱ. ㄴ. 회째의 수학 점수는 점이다. 수학 점수의 분산은 이다. ㄷ. 영어점수가 수학 점

7) 다음의 다음 9) 남학생과 9. zb 여학생 각각 명이 갖고 있는 여름 티 셔츠의 개수를 조사하여 꺾은선그래프로 나타낸 것 이다. 이 두 그래프의 설명으로 옳지 않은 것은? ㄱ. ㄴ. 회째의 수학 점수는 점이다. 수학 점수의 분산은 이다. ㄷ. 영어점수가 수학 점 1) 은경이네 2) 어느 3) 다음은 자연수 그림은 6) 학생 학년 고사종류 과목 과목코드번호 성명 3 2012 2학기 중간고사 대비 수학 201 대청중 콘텐츠산업 진흥법 시행령 제33조에 의한 표시 1) 제작연월일 : 2012-08-27 2) 제작자 : 교육지대 3) 이 콘텐츠는 콘텐츠산업 진흥법 에 따라 최초 제작일부터 년간 보호됩니다. 콘텐츠산업 진흥법

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

ch15

ch15 쉽게풀어쓴 C 언어 Express 제 14 장포인터활용 C Express 이중포인터 이중포인터 (double pointer) : 포인터를가리키는포인터 int i = 10; int *p = &i; int **q = &p; // i 는 int 형변수 // p 는 i 를가리키는포인터 // q 는포인터 p 를가리키는이중포인터 이중포인터 이중포인터의해석 이중포인터 //

More information

일반각과호도법 l 삼각함수와미분 1. 일반각 시초선 OX 로부터원점 O 를중심으로 만큼회전이동한위치에동경 OP 가있을때, XOP 의크기를나타내는각들을 ( 은정수 ) 로나타내고 OP 의일반각이라한다. 2. 라디안 rad 반지름과같은길이의호에대한중심각의 크기를 라디안이라한

일반각과호도법 l 삼각함수와미분 1. 일반각 시초선 OX 로부터원점 O 를중심으로 만큼회전이동한위치에동경 OP 가있을때, XOP 의크기를나타내는각들을 ( 은정수 ) 로나타내고 OP 의일반각이라한다. 2. 라디안 rad 반지름과같은길이의호에대한중심각의 크기를 라디안이라한 일반각과호도법 l 1. 일반각 시초선 OX 로부터원점 O 를중심으로 만큼회전이동한위치에동경 OP 가있을때, XOP 의크기를나타내는각들을 ( 은정수 ) 로나타내고 OP 의일반각이라한다. 2. 라디안 rad 반지름과같은길이의호에대한중심각의 크기를 라디안이라한다. 3. 호도법과육십분법 라디안 라디안 4. 부채꼴의호의길이와넓이 반지를의길이가 인원에서중심각이 인 부채꼴의호의길이를

More information

슬라이드 1

슬라이드 1 한국산업기술대학교 제 5 강스케일링및회전 이대현교수 학습안내 학습목표 3D 오브젝트의확대, 축소및회전방법을이해한다. 학습내용 3D 오브젝트의확대및축소 (Scaling) 3D 오브젝트의회전 (Rotation) 변홖공갂 (Transform Space) SceneNode 의크기변홖 (Scale) void setscale ( Real x, Real y, Real z)

More information

윤성우의 열혈 TCP/IP 소켓 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍 C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct

More information

Microsoft PowerPoint - IP11.pptx

Microsoft PowerPoint - IP11.pptx 열한번째강의카메라 1/43 1/16 Review 2/43 2/16 평균값 중간값 Review 3/43 3/16 캐니에지추출 void cvcanny(const CvArr* image, CvArr* edges, double threshold1, double threshold2, int aperture_size = 3); aperture_size = 3 aperture_size

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

<4D F736F F D20BECBB1E220BDACBFEE20BAA4C5CD2C20C1C2C7A5B0E82C20C1C2C7A5BAAFC8AFC7E0B7C4>

<4D F736F F D20BECBB1E220BDACBFEE20BAA4C5CD2C20C1C2C7A5B0E82C20C1C2C7A5BAAFC8AFC7E0B7C4> 벡터, 좌표계, 좌표값, 그리고좌표변환행렬 이형근한국항공대학교항공전자및정보통신공학부 제어및로봇응용에서다양한좌표계와이를기반으로한벡터의좌표값이활용되고있다. 이는운동을수반하는대다수의지능시스템에있어서시스템의현재위치및자세정보가미래의동작을결정하고제어하는데필수불가결한정보로인식되기때문이다. 다양한응용분야에활용되는중요성에도불구하고, 필자의경험에의하면, 벡터및좌표계관련사항들은입문자가처음접하는단계에서큰부담을느끼는부분으로이해된다.

More information

슬라이드 1

슬라이드 1 tress and train I Metal Forming CAE La. Department of Mechanical Engineering Geongsang National Universit, Korea Metal Forming CAE La., Geongsang National Universit tress Vector, tress (Tensor) tress vector:

More information

Microsoft PowerPoint - LA_ch6_1 [호환 모드]

Microsoft PowerPoint - LA_ch6_1 [호환 모드] Chapter 6 선형변환은무질서한과정과공학제어시스템의설계에관한연구에사용된다. 또한전기및음성신호로부터의소음여과와컴퓨터그래픽등에사용된다. 선형변환 Liear rasformatio 6. 6 변환으로서의행렬 Matrices as rasformatios 6. 변환으로서의행렬 6. 선형연산자의기하학 6.3 핵과치역 6.4 선형변환의합성과가역성 6.5 컴퓨터그래픽 si

More information

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB> 쉽게풀어쓴 C 언어 Express 제 14 장포인터활용 이중포인터 이중포인터 (double pointer) : 포인터를가리키는포인터 int i = 10; int *p = &i; int **q = &p; // i 는 int 형변수 // p 는 i 를가리키는포인터 // q 는포인터 p 를가리키는이중포인터 이중포인터 이중포인터의해석 이중포인터 // 이중포인터프로그램

More information

01

01 2019 학년도대학수학능력시험 9 월모의평가문제및정답 2019 학년도대학수학능력시험 9 월모의평가문제지 1 제 2 교시 5 지선다형 1. 두벡터, 모든성분의합은? [2 점 ] 에대하여벡터 의 3. 좌표공간의두점 A, B 에대하여선분 AB 를 로외분하는점의좌표가 일때, 의값은? [2점] 1 2 3 4 5 1 2 3 4 5 2. lim 의값은? [2점] 4. 두사건,

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

Microsoft PowerPoint - Week04_Rendering Pipeline.pptx

Microsoft PowerPoint - Week04_Rendering Pipeline.pptx Rendering Pipeline 목 차 Rendering Pipeline 월드변환 뷰변환 후면추려내기 클리핑 투영변환 뷰포트변환 래스터라이즈 카메라제어 카메라디자인 카메라구현 뷰행렬계산 임의의축으로회전 Pitch, Yaw, Roll 걷기, 옆걸음질, 날기 애니메이션및게임실습 2 렌더링파이프라인 월드변환 뷰변환 로컬스페이스월드스페이스뷰스페이스후면추려내기조명

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

중간고사

중간고사 중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX

More information

초4-1쌩큐기본(정답)본지

초4-1쌩큐기본(정답)본지 초4-1쌩큐기본(정답)본지 2014.10.20 06:4 PM 페이지1 다민 2540DPI 175LPI 3~4학년군 수학 진도교재 1. 큰 수 3 4-1 2 2. 곱셈과 나눗셈 12 3. 각도와 삼각형 21 4. 분수의 덧셈과 뺄셈 34 5. 혼합 계산 43 6. 막대그래프 54 단원 성취도평가 61 쌩큐 익힘책 67 1 6000 7000 8000 9000 10000

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information