Download presentation
1
Geometric Transformations
2
Class 3차원 Vector와 4x4 Matrix Class를 만들어 본다 class Vector3 { public:
float p[3]; }; class Mat4x4 { public: float p[4][4]; };
3
OpenGL Geometric Transformations
glMatrixMode(GL_MODELVIEW);
4
OpenGL Geometric Transformations
Basic Transpormation: glLoadIdentity(); glTranslatef(tx, ty, tz); glRotatef(theta, vx, vy, vz); angle-axis (vx, vy, vz) is automatically normalized glScalef(sx, sy, sz); glLoadMatrixf(Glfloat elems[16]); Multiplication glMultMatrixf(Glfloat elems[16]); The current matrix is postmultiplied by the matrix Column major
5
OpenGL Geometric Transformations
Getting the current matrix value: glGetFloatv (GL_MODELVIEW_MATRIX, GLfloat elems[16]); Column major 4 8 12 1 5 9 13 2 6 10 14 3 7 11 15 GLfloat mat [16]; glGetFloatv (GL_MODELVIEW_MATRIX, mat);
6
OpenGL Geometric Transformations
Matrix Direct Manipulation: glLoadMatrixf(GLfloat elems[16]); Column major glMultMatrixf(GLfloat elems[16]); The current matrix is postmultiplied by the matrix 4 8 12 1 5 9 13 2 6 10 14 3 7 11 15 glLoadIdentity(); glMultMatrixf (M1); glMultMatrixf (M2); M = M1∙M2
7
OpenGL GLUT Animation Function
GLUT Idle Callback fuction: Idling: when there is nothing to do. Redraw the scene: void MyIdle() { … // things to do … // when Idling } glutIdleFunc ( MyIdle ); glutPostRedisplay ( );
8
바람개비(풍차)만들기
9
Hierarchical Modeling
A hierarchical model is created by nesting the descriptions of subparts into one another to form a tree organization
10
OpenGL Matrix Stacks Stack processing
The top of the stack is the “current” matrix glPushMatrix(); // Duplicate the current matrix at the top glPopMatrix(); // Remove the matrix at the top
11
Homework #2 다각형을 이용하여 움직이는 2차원 아름다운 애니메이션 만들기
Push/Pop Matrix를 사용하여 2단계 이상의 계층적인 움직임 디자인을 할 것 Ex): 태양계 시스템 (태양지구달) 사람의 움직임 (몸어깨팔꿈치손목손) 숙제제출: 이메일 제출 (Screenshot, code, report) 숙제마감: 4월 28일 수요일 23시59분까지
12
Viewing Part I: Two-Dimensional Viewing
Sang Il Park Sejong University Lots of slides are stolen from Jehee Lee’s
13
Viewing Pipeline
14
Two-Dimensional Viewing
Two dimensional viewing transformation From world coordinate scene description to device (screen) coordinates
15
Normalization and Viewport Transformation
World coordinate clipping window Normalization square: usually [-1,1]x[-1,1] Device coordinate viewport
16
OpenGL 2D Viewing Projection Mode GLU clipping-window function
glMatrixMode(GL_PROJECTION); GLU clipping-window function gluOrtho2D(xwmin,xwmax,ywmin,ywmax); Normalized to [-1,1]x[-1,1] OpenGL viewport function glViewport(xvmin,xvmax,yvmin,yvmax);
17
GLUT window Functions:
glutInitWindowPosition glutInitWindowSize glutCreateWindow glutDestroyWindow glutSetWindow/glutGetWindow ….. And more! See the text book pp 346~354
18
Clipping Remove portion of output primitives outside clipping window
Two approaches Clip during scan conversion: Per-pixel bounds check Clip analytically, then scan-convert the modified primitives
19
Two-Dimensional Clipping
Point clipping – trivial Line clipping Cohen-Sutherland Cyrus-beck Liang-Barsky Fill-area clipping Sutherland-Hodgeman Weiler-Atherton Curve clipping Text clipping
20
Line Clipping Basic calculations:
Is an endpoint inside or outside the clipping window? Find the point of intersection, if any, between a line segment and an edge of the clipping window. Both endpoints inside: trivial accept One inside: find intersection and clip Both outside: either clip or reject
21
Cohen-Sutherland Line Clipping
One of the earliest algorithms for fast line clipping Identify trivial accepts and rejects by bit operations 0000 1000 1001 0001 0101 0100 0110 0010 1010 Clipping window < Region code for each endpoint > above below right left Bit
22
Cohen-Sutherland Line Clipping
Compute region codes for two endpoints If (both codes = 0000 ) trivially accepted If (bitwise AND of both codes 0000) trivially rejected Otherwise, divide line into two segments test intersection edges in a fixed order. (e.g., top-to-bottom, right-to-left) 0000 1000 1001 0001 0101 0100 0110 0010 1010 Clipping window
23
Cohen-Sutherland Line Clipping
Fixed order testing and clipping cause needless clipping (external intersection)
24
Cohen-Sutherland Line Clipping
This algorithm can be very efficient if it can accept and reject primitives trivially Clip window is much larger than scene data Most primitives are accepted trivially Clip window is much smaller than scene data Most primitives are rejected trivially Good for hardware implementation
25
Cyrus-Beck Line Clipping
Use a parametric line equation Reduce the number of calculating intersections by exploiting the parametric form Notations Ei : edge of the clipping window Ni : outward normal of Ei An arbitrary point PEi on edge Ei
26
Cyrus-Beck Line Clipping
27
Cyrus-Beck Line Clipping
Solve for the value of t at the intersection of P0P1 with the edge Ni · [P(t) - PEi] = 0 and P(t) = P0 + t(P1 - P0) letting D = (P1 - P0), Where Ni 0 D 0 (that is, P0 P1) Ni · D 0 (if not, no intersection)
28
Cyrus-Beck Line Clipping
Given a line segment P0P1, find intersection points against four edges Discard an intersection point if t [0,1] Label each intersection point either PE (potentially entering) or PL (potentially leaving) Choose the smallest (PE, PL) pair that defines the clipped line
29
Cyrus-Beck Line Clipping
Cyrus-Beck is efficient when many line segments need to be clipped Can be extended easily to convex polygon (rather than upright rectangle) clip windows
30
Liang-Barsky Line Clipping
Liang-Barsky optimized Cyrus-Beck for upright rectangular clip windows Q(x2.y2) tR tT P(x1,y1) tL tB
31
Liang-Barsky Line Clipping
tT T B tB
32
Nicholl-Lee-Nicholl Line Clipping
Divide more cases and reduce the computation. (3) (2) (1)
33
General Clipping Window
Line clipping using nonrectangular polygon clip windows Convex polygon Cyrus-Beck algorithm can be readily extended Concave polygon Split the concave polygon into convex polygons Vector Method for Concave Splitting Calculate edge-vector cross products in a counterclockwise order If any z component turns out to be negative, the polygon is concave
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.