중간고사 담당교수 : 단국대학교멀티미디어공학전공박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 답안지에학과, 학번, 이름외에본인의암호를기입하면성적공고시학번대신암호를사용할것임. 1. 맞으면 true, 틀리면 flse를적으시오. (20점) 1) 벡터는공간내에고정된위치를갖지않는다. T 2) 아핀공간 (Affine Sce) 에는거리는없으나한직선위에있다는개념은있으며거리의비가보존된다. T 3) 기하파이프라인에서클리핑 (Cliing) 은정점단위로이루어진다. F 4) 안티에일러싱 (Anti-lising) 이필요한장치는벡터그래픽시스템이다. F 5) OenG 디스플레이리스트 (Disl ist) 는대용량그래픽의렌더링속도향상을위해사용된다. T 6) glenble(g_depth_test) 는렌더링속도의향상을위해눈에보이지않는면을제거하는후면추리기 (Bckfce culling) 기법이다. F 7) OenG 기본카메라는물체공간의원점 (Origin) 에위치하며 + 방향을향하고있다. F 8) glutpostreisl() 함수는윈도우크기가변화된이벤트발생시호출된다. F 9) glutstrokechrcter() 함수는문자를 3차원선으로그리는방식이므로, OenG의변환에의해영향을받는다. T 10) 컴퓨터가영상을생성하는방법은, 합성카메라모델을사용하여카메라영상면에생성된영상이전후좌우가뒤집혀나타난다. F 2. 다음문제에답하시오. (45 점 ) 1) + 축이화면위방향, + 축이화면의안쪽으로들어가는방향일때, 오른손좌표계 (right-hne coorinte sstem) 에서 + 축이가리키는방향이어느곳인지,, 축을그리시오. 1/7
2) 벡터그래픽시스템과래스터그래픽시스템을간단히설명하라. (5 점 ) 벡터그래픽시스템은레이더나오실로스코프, 플로터등에서사용한그래픽시스템으로써, 화소 (iel) 의개념이없다. 즉프레임버퍼를사용하지않는다. 무한해상도를갖으며, lising 이없다. 전자편양판을조정해서화면에직접선을그리는방식이다. 래스터그래픽시스템은현재대부분의컴퓨터시스템에서사용하는프레임버퍼를사용하여, 프레임버퍼에서화소 (iel) 의배열 (rr) 인래스터 (rster) 이미지로생성하여모니터에출력하는방식의시스템이다. 화소를사용하는래스터이미지방식이라서연속적인영상을유한개의화소를사용하는영역으로표현하므로오차가발생하는데이를 lising 이라고부른다. 3) RGB 색모델 (color moel) 과 CMY 색모델에대해간단히설명하시오. 그리고각각의색모델에서 (1, 1, 1), (1, 1, 0), (1, 0, 0) 이의미하는색이무엇인지적으시오. RGB 색모델은빛의삼원색으로컬러디스플레이시스템에적합한모델이다. RGB 색모델은 Re, Green, Blue 값을더해서표현하는방식이다. RGB (1, 1, 1) 흰색, (1, 1, 0) 노란색, (1, 0, 0) 빨간색 CMY 색모델은색의삼원색으로인쇄시스템에적합한모델이다. CMY 색모델은 RGB 의보색인 Cn, Mgent, Yellow 을사용하며 CMY 를빼서표현하는방식이다. CMY (1, 1, 1) 검정색, (1, 1, 0) 파란색, (1, 0, 0) 청록색 4) 다음은벡터의내적 (ot rouct) 특성을정리한것이다. 아래의빈칸을채우시오. 만약벡터 u v < 0 이라면두벡터간의사이각 는 90 < <= 180 에있다. 만약벡터 u v = 0 이라면두벡터간의사이각 는 0 = 90 에있다. 만약벡터 u v > 0 이라면두벡터간의사이각 는 0 <= < 90 에있다. 5) OenG 환경에서두벡터 u (2, 0, -3), v(1, 0, 2) 를그림으로표시하라. 그리고두벡터간의외적 (cross rouct) u v 을계산하고그림으로표시하라. u (2, 0, -3) u v = (0*2 + 0*3, -2*2-3 *1, 2*0 1*0) = (0, -7, 0) v(1, 0, 2) u v (0, -7, 0) 6) 컨벡스헐 (Conve Hull) 이란점들의집합 {P 1, P 2,.., P n } 을포함하는가장작은볼록객체이다. 컨벡스헐을만족하는아핀합 (Affine Sums) 을설명하시오. oints: P 1, P 2,.., P n P = 1 P 1 + 2 P 2 + + n P n 1 + 2 + + n = 1 1, 2,, n >= 0 2/7
7) glutilefunc(voi (func*)(voi)) 와 gluttimerfunc(unsigne int millis, voi (func*)(int vlue), int vlue) 함수는무엇인가, 그리고각각의함수에답신함수 (cllbck) 의예를적어라. glutilefunc 함수란 ile 이벤트 ( 즉, 다른이벤트가없을경우 ) 에이함수에등록된답신함수가불려진다. 주로, 애니메이션을위한업데이트함수가이곳에서불려진다. glutielfunc(ute); voi ute() { g_ist.ute(); // 각도형의위치, 크기등값이변경됨 glutpostreisl(); } gluttimerfunc 함수란지정한시간이지나면이벤트가발생하여이함수에등록된답신함수가불려지고타이머는종료된다. 업데이트함수에사용하려면답신함수내부에서다시 gluttimerfunc 함수를호출하여일정간격으로불려지게만들어야한다. gluttimerfunc(100, timer, 1); voi timer(int vlue) { g_ist.ute(); // 각도형의위치, 크기등값이변경됨 glutpostreisl(); gluttimerfunc(100, timer, 1); // 자신을호출하여 100millisec 단위로불리게함 } 8) 더블버퍼링 (ouble buffering) 에서스왑버퍼 (sw buffer) 가무엇인지간단히서술하시오. 그리고더블버퍼링과싱글버퍼링 (single buffering) 의차이점을예를들어설명하라. 더블버퍼링이란색버퍼를전면과후면버퍼로나누어서사용하는것으로, 비디오제어기가항상완성된이미지를그리도록하기위하여, 프로세서는이미지의내용을계산하여후면버퍼에축적하고, 그동안비디오제어기는전면버퍼의내용을읽어화면에이미지도시하는데, 양쪽에서모두다그리고나면전면버퍼와후면버퍼를서로바꾸는 (sw buffer) 를수행한다. 회전하는사각형같은애니메이션을그려야할경우, 더블버퍼링을쓰면싱글버퍼링보다부드러운애니메이션을생성한다. 만약, 애니메이션에싱글버퍼링을썼을경우회전하는사각형의이미지가번쩍번쩍거리는현상이발생한다. 9) OenG 에서 G_QUAD_STRIP 를사용해서도형을그릴때, 다음그림과같은결과가되도록코드를작성하시오. glbegin(g_quad_strip); glverte3fv( v1 ); glverte3fv( v2 ); glverte3fv( v8 ); glverte3fv( v3 ); glverte3fv( v7 ); glverte3fv( v4 ); glverte3fv( v6 ); glverte3fv( v5 ); glen(); 3/7
3. 다음행렬문제에답하시오. (35 점 ) 1) 다음 OenG 변환함수가만들어내는 3 차원아핀변환행렬 M 1 과 M 2 을간단히설명하라. (5 점 ) glpushmtri(); gltrnsltef(3, 0, 0); glrottef(90, 0, 0, 1); rwobject(); glgetflotv(g_modeview_matrix, M1); glpomtri(); glpushmtri(); glrottef(90, 0, 0, 1); gltrnsltef(3, 0, 0); rwobject(); glgetflotv(g_modeview_matrix, M2); glpomtri(); M1 은 - 축으로 90 도회전을먼저한후, - 축으로 3 만큼이동한결과 M2 는 - 축으로 3 만큼이동한후, - 축으로 90 도회전한결과 2) 다음왼쪽기본도형에, 위의 3 차원아핀변환행렬 M 1 과 M 2 를적용하여나타난도형의모습을오른쪽에그려서나타내라 ( 정확한척도를그려서답하라 ). (10 점 ) 5 1 4 3) 다음위의기본도형을중심점 (2, 3) 으로 - 축과 - 축으로 0.5 배로크기변환하는행렬 M 을 OenG 코드로작성하라. (5 점 ) glpushmtri(); gltrnsltef(2, 3, 0); glsclef(0.5, 0.5, 1); gltrnsltef(-2, -3, 0); rwobject(); glgetflotv(g_modeview_matrix, M); glpomtri(); 4/7
4) 다음임의의축 에회전하는한점 가 에투영하여평행한성분인 을표현하는행렬을구하라. (5점) ( ) 2 SmmetricMtri 2 2 5) 다음간단한 OenG 코드를보고, 3 차원객체를계층적변환 (Hierrchicl Trnsformtion) 트리구조로그림으로표현하라. (10 점 ) voi initd() { Gflot white[] = {1, 1, 1, 1}; Gflot blck[] = {0, 0, 0, 1}; Gflot ornge[] = {1.0f, 0.5f, 0.5f}; glewist(1, G_COMPIE); glmterilfv(g_frot, G_AMBIET_AD_DIFFUSE, white); glpushmtri(); gltrnsltef(0.0f, 1.0f, 0.0f); glushere(quric, 1.5f, 20, 20); glpushmtri(); gltrnsltef(0.0f, 2.0f, 0.0f); glushere(quric, 1.0f, 20, 20); glpushmtri(); gltrnsltef(0.0f, 1.3f, 0.0f); glushere(quric, 0.6f, 20, 20); // bo // uer bo // he glpushmtri(); glmterilfv(g_frot, G_AMBIET_AD_DIFFUSE, blck); gltrnsltef(0.2f, 0.1f, 0.6f); glushere(quric, 0.1f, 10, 10); // ee glpomtri(); 5/7
glpushmtri(); gltrnsltef(-0.2f, 0.1f, 0.6f); glushere(quric, 0.1f, 10, 10); glpomtri(); // ee glpushmtri(); glmterilfv(g_frot, G_AMBIET_AD_DIFFUSE, ornge); gltrnsltef(0.0f, -0.1f, 0.6f); glrottef(0.0f,1.0f, 0.0f, 0.0f); glucliner(quric, 0.1f, 0.0, 0.35, 10, 2); // nose glpomtri(); glpomtri(); glpomtri(); glpomtri(); } glenist(); bo Uerbo he ee ee nose 6/7
7/7 4. 다음그림에서와같이 3 차원공간의점 P (,, ) 가벡터 방향으로가는광선 (P(t) = P + t ) 은평면에한점 S (S, S, S) 를만난다. 평면의공식 ( P + = 0) 을이용하여 t 를계산하라. 그리고 S 를계산하는공식을유도하라. (etr 10 점 ) S = P + t S + = 0 P+ =0 S P s t t t ) ( ) ( 0 ) (