Title: Transformation
1Transformation
Kim, Sung-Ho School of Computer, Information and
Communication Engineering Sangji Univ.
2????? ????
- ????
- ??? ??? ???? ??? ????.
- ????? ???? ??? ????.
- ??, ??, ???? ?? ????? ????? ????.
- ?? ???, ?? ???, ?? ???? ???? ????.
- ??? ??? ?? ???? ??? ????.
- ???? ??? ???? ??? ????? ????.
3 ???- 3?? ???? pp.237
- ??? ??(Boundary Surface Representation)
- ??(Mesh), ?? ??(Surface Mesh), ??? ??(Polygon
Mesh), ?? ???(Surface Polygon), ???(Polygon) - ??? ??(Rectangular Mesh) ?? ?? ??.
- ??? ??(Triangular Mesh) ?? ??. 2?? ??? ??
?? 6-2 120, 300, 1000 ?? ??? ??
?? 6-5 ??? ??
4??? ???? ??? ???
- Wireframe, Solid Rendering
- ??? ??? ??? ??? ??
- ??? Solid Rendering?? ?? ??
?? 6-6 ?? I ?? 6-7
?? II ?? 6-8 ?? III
5??? ??-pp.241
- V Q P
- Q V P
- ??? ??? ??? ? ??? ??? ??.
- ??? ??(??, ??, Affine Space)
- ?? ??? ???? ?????? ????? ??
- ??? ??
- ??? ??? ??(??)
- ???? ??? ??(???)
- ?? ??? ??(??)
?? 6-11 ?? II
6??? ?? (??)
- ????
- V P (1/2)(Q - P)
- V P t (Q - P) (1 - t)P (t)Q (0 t 1)
- ??? ???? ??? ?(Affine Sum)
- ?? ?? ?? 1? ?? ??
- ?? ??? ? ?? ?? ?? ?? 1? ?? ???? ???.
?? 6-12 ?? ??
7???-pp.243
- ????
- ?? p ?? p
- ?? v 4 V1 2 V2 V3
- ????, ??????? ????
- ???
- ??? ????? ???? ???
- Ex. 3?? ??? (r, V1, V2, V3)
- ?? ??? ???? ???? ???? ???? ?
- ? p r 4V1 2V2 V3 ??? ??
?? 6-16 ????
?? 6-17 ??? ??
8????(Homogeneous Coordinate System)-pp.245
- ??? ?? ??? ??
- v 4 V1 2 V2 V3
- P r 4V1 2V2 V3
- ??? ?? ??? ?? ???? ??
- v 4 V1 2 V2 V3 0 r (4, 2, 1, 0) ??
- P 4V1 2V2 V3 1 r (4, 2, 1, 1) ?
- 3?? ? (1, 2, 1)
- 4?? ????? ??
- ???? (1, 2, 1, 1) (2, 4, 2, 2) (3, 6, 3, 3)
- ???? (x, y, z, w) gt 3?? ?? (x/w, y/w, z/w)
?? 6-18 ????
9????- ????(Geometric Transformation)-pp.247
- ?? ?? ?? ??? ??? ??
- ??? ???
- ??, ??, ???? ?
102?? ??(Translation)-pp.248
- x' 1?x 0?y Tx?1
- y' 0?x 1?y Ty?1
?? 6-19 2?? ??
(6.12 )
113?? ??-pp.249
?? 6-19 2?? ??
(6.13 )
( 6.14 )
122?? ??(Rotation)-pp.250
?? 6-21 2?? ??
(6.15 ) (6.16 )
(6.17 ) (6.18 )
133?? ??-pp.251
- ??? ??? ???? ??
- ? ?? ??? ???
?? 6-24 ??? ??
?? 6-22 3?? ??
(6.19) (6.20 )
14????(Scaling)-pp.252
- ?? ????(Uniform Scaling) vs. ?? ????(Non-Uniform
Scaling)
?? 6-25 ?? ????
?? 6-26 ?? ????
(6.25) (6.26 )
http//www.xmission.com/nate/tutors.html
15??(Shearing)-pp.253
?? 6-27 ??
(6.27) (6.28) (6.29 ) (6.30 )
16????(Composite Transformation)-pp.253
- ????(S1) ?, ?? ??? ??(R1)? ?,
- ?? ????(S2)
- P' S2?R1?S1?P
- ????? ??? ??
- P' C?P ???? C? ??? ??. ?? ??? ??
17???? (??)
- ?? ?? ??(Origin Rotation) versus ??? ?? ??(Pivot
Point Rotation) - ??? ?? ??
- ??? ??? ??? ????? ??? ????.
- ??? ?? ???? ? ??? ????.
- ??? ??? ???? ??? ??? ?? ???? ????.
?? 6-28 ?? ??? ??
?? 6-29 ?? ??? ??
(6.31)
18?? ? ??? ?? ? ??-pp.255
- ????? ???? ??.
- R?T? T?R? ????? ?? ?? ??
- ?? ????
- C T?R?S
?? 6-30 ?? ? ??? ?? ? ?? ??
?? 6-31 ????/?? ? ??
19??(Reflection)-pp.256
?? 6-32 ????
(6.34)
20yx ??? ??-pp.257
?? 6-33 y x ? ??? ?? ??
21??? ????- ?? ???-pp.263
- ???
- ??? ?? ?? ??? ??
- ??? (??)??
- ??? ??
- ????(Object Space) ???? ???
- ??? ?? ? ???
- ???? ??
- ???? ?? ??
- ?? ???(MCS, Modeling Coordinate System) ?? ??
???(LCS, Local Coordinate System)
?? 6-40 ??? ????
?? 6-41 ?? ???
22?? ???, ?? ???-pp.264
- ??
- ?? ??? ?? ?? ?? ???? ??
- ????? ??? ? ?? ?? ???
- ?? ???(WCS, World Coordinate System)
- ?? ??? ??
- ??
- ???? ??? ?? ??? ????
- ?? ???(VCS, View Coordinatge System)
?? 6-42 ?? ???
23????? ??-pp.265
- Ex. ????
- ????? WCSMCS
- ??? ??
- ???? T? WCS ???? ?? ??? (3, 2, 0)?? ???? ??.
- ??? ??
- ??? ??? WCS? MCS? ???
- ?? ??? MCS ??? ?? ??? ??
- ???? ???? ??.
(6.42)
?? 6-43 ?? ???? ??
24????? ?? (??)
- ??
- ??? ?? MCS? ??.
- MCS ??? ?? ??? ??
- ???? ?? T? (a)? WCS? 45(b)? MCS? ?????? ??. ?? ??
MCS ???? ??? ??? - ???? x??? 2?
- MCS x? ??? ?? ??? ??.
- MCS ??? ?? ??? ??(Ex. (2, 2, 0))
?? 6-45 ?? ???? ?? ???? ??
25?? ?????-pp.267
- ????
- ??? ???? ????(??, ??, )
- ????? ???
- ?? ??? ?? ??? ??? ????
- ???? ?? ???
- ??? ??? ?? ??
- ???? ???
- ????? ???? ??? ????
- ??? ????? ???? ??? ?? ??? ??
- ??? ?? ?? ???? ??? ?? ????
?? 6-46 ?? ?????
26??? ????-pp.269
- ???? ??
- ??????? ??? ??
- void glMatrixMode(GLenum mode)
- GL_MODELVIEW, GL_PROJECTION, GL_TEXTURE
- ? ????(CTM Current Transformation Matrix)
- ????. ?? ?? ??
- ?? ??? ??? ???
?? 6-47 ?? ?? ???
27??? ???? (??)
- ???
- void glLoadIdentity( )
- ????? ???
- ??? ??
- ?? ??? ?? ??? ?? ???
- ????? ??
- void glTranslatef(GLfloat dx, GLfloat dy, GLfloat
dz) - void glScalef(GLfloat sx, GLfloat sy, GLfloat
sz) - void glRotatef(GLfloat angle, GLfloat x, GLfloat
y, GLfloat z) - ????(PostMultiplication)
- ?? ???? ???? ?? ?? ???? ??
- CTM CTM M
- Ex. glTranslatef(1, 2, 0)
(6.43) (6.44)
(6.47)
28????-pp.272
- Ex.
- glMatrixMode(GL_MODELVIEW)
- glLoadIdentity( )
- glScalef(sx, sy, sz)
- glRotatef(theta, vx, vy, vz)
- glBegin(GL_POINTS)
- glVertex3f(px, py, pz)
- glEnd( )
- ???? ?? ??? ?? ?? ?????
? 6-1 ???? ??
29?? ??? ?? ???-pp.274
- ??
- glMatrixMode(GL_MODELVIEW)
- glLoadIdentity( )
- glRotatef(45, 0.0, 0.0, 1.0) ?? ??? ??
- glTranslatef(10.0, 0.0, 0.0)
- glVertex3f(Px, Py, Pz)
- ???? ??? ????
- P' TP
- P'' RP' RTP
?? 6-48 ?? ??? ?? ???
30??? ??? ?? ???-pp.274
- ??
- glMatrixMode(GL_MODELVIEW)
- glLoadIdentity( )
- glRotatef(45, 0.0, 0.0, 1.0) ??? ??? ?? ??
- glTranslatef(10.0, 0.0, 0.0)
- glVertex3f(Px, Py, Pz)
- ?? ???? ??
- ??? ?? ???? ???? ??
- CTM IR
- CTM CTMT IRT
- P'' CTMP IRTP
?? 6-49 ?? ??? ??? ?? ???
31???? ??-pp.276
?? 6-50 ???? ??
?? 6-51 ???? ??
32?? ??(Matrix Stack)-pp.278
?? 6-57 ??? ???
? 6-2 ??? ??? ????
???? (d)? ????? ??? ??? -gt ??
33?? ?? (??)
?? 6-58 ??? ??, ?
34?? ?? (??)
?? 6-59 ??? ??? ????? ?? ??
35?? ?? (??)
- ??? ??
- glPushMatrix( )
- glTranslatef( )
- glRotatef( )
- glScalef( )
- ...
- Draw_TransformedObject( )
- glPopMatrix( )
-
?? 6-60 ???? ???? ??
36???? ???-pp.283
- void drawArm( )
- glMatrixMode(GL_MODELVIEW)
- glLoadIdentity( ) ??
??? ?? ??? - Draw_Body( )
?? ??? - glPushMatrix( ) ??
??? ?? - GoToShoulderCoordinates( ) ?? ??
?? ??? - Draw_UpperArm( ) ? ? ???
- glPushMatrix( ) ?? ??
?? ??? ?? - GoToElbowCoordinates( ) ??? ??
?? ??? - Draw_LowerArm( ) ??? ???
- glPushMatrix( ) ???
?? ?? ??? ??
?? 6-61 ?? ?? 6-62 ??
6-63 II ?? 6-64 III
37???? ??? (??)
- ???? ?? ??
- ? ??? ??? ??? Push
- ?? ??? ??? ??? Pop
?? 6-66 ???
?? 6-67 ???? ??
38???? ??? (??)
- ??? ??? ?? ?? ???? ??
- http//upload.wikimedia.org/wikipedia/commons/7/78
/3D_Male_Skeleton_Anatomy.png
Pelvis
39???? ??? (??)-pp.287-290
- ???(Solar System)
- http//www.gamedev.net/reference/programming/featu
res/oglch3excerpt/page9.asp
Revolution (Day/Year)
Rotation (Time/Day)
Sun
Parent
Earth
Son
(0,0,0)
Parent
0.2
Translation (0.7, 0.0, 0.0)
Revolution (Time/Day)
Moon
Son
?? 6-69 ??, ??, ? ???
40???? ??? (??)-pp.287-290
- ???(Solar System) ??
- ??, ??, ??, ??, ??, ??, ???, ??? ???
- ?? ???? ??(Size), ??(Color) ? ?? ??(Angle)? ???
- ??(Sun)???? ?? ?????? ? ??? ??? ??
- ?? ???? ??(Sun)? ???? Z? ???? ??
- ??? ?? ?? ?? ? ??(Play), ??? ?? ?? ? ??(Stop)
- ???? ???? ??? ??? ??? ?? ? ??/??
- ? ??? ?? ??? ?? ??? ??? ??
- ?? ??? ?? ??
- Using the Quadrics ?? http//www.gisdeveloper.co
.kr/431
41???? ??? (??)
- Robot Arm Robot.c ??
- http//www.opengl.org/resources/code/samples/redbo
ok/ - http//www.gamedev.net/reference/programming/featu
res/oglch3excerpt/page9.asp - Scale Parent? ?? ???? ??
- Robot Arm with Fingers
- glPushMatrix()
- glTranslatef (-1.0, 0.0, 0.0) // Pivot ?? ?
?? ?? - glRotatef ((GLfloat) shoulder, 0.0, 0.0, 1.0)
// ??? ???? ?? - glTranslatef (1.0, 0.0, 0.0) // Pivot?? ???
??? ???? ?? - glPushMatrix() // ??? ???? ?? ?? ? ??/??
- glScalef (2.0, 0.4, 1.0)
- glutWireCube (1.0)
- glPopMatrix()
- glTranslatef (1.0, 0.0, 0.0) // Pivot ?? ? ??
?? - glRotatef ((GLfloat) elbow, 0.0, 0.0, 1.0) //
??? ???? ?? - glTranslatef (1.0, 0.0, 0.0) // Pivot?? ???
??? ???? ?? - glPushMatrix() // ??? ???? ?? ?? ? ??/??
42???? ??? (??)
- Robot Arm Robot.c ?? (??)
- XYZ ? ???? ??
- glColor3f(1.0, 0.0, 0.0)
- glBegin(GL_LINES)
- glVertex3f(-2.0, 0.0, 0.0)
- glVertex3f(2.0, 0.0, 0.0) // X? ??
- glEnd()
- glColor3f(0.0, 1.0, 0.0)
- glBegin(GL_LINES)
- glVertex3f(0.0, -2.0, 0.0)
- glVertex3f(0.0, 2.0, 0.0) // Y? ??
- glEnd()
- glColor3f(0.0, 0.0, 1.0)
- glBegin(GL_LINES)
- glVertex3f(0.0, 0.0, -2.0)
- glVertex3f(0.0, 0.0, 2.0) // Z? ??
- glEnd()
43??? ?? ??- ?? ??-pp.291
?? 6-72 ?? ?????
44?? ???-pp.292
- ??? ?? ?? ??? ??
- ?? ??? ??? ?? ??? ?? ???? z?
- z?? ???? ? ?? ? ???(Projection Plane, View
Plane) - ??? ??? ? ???(View Window) ??? ??
- ?? ??? y? ? ???? y?? ??.
- y-z ??? ??? ???? x?
?? 6-73 ??? ?? ???
45??? ?? ???-pp.296
- void gluLookAt(
- GLdouble eyex, GLdouble eyey, GLdouble eyez,
- // ???? ??
- GLdouble atx, GLdouble aty, GLdouble atz,
- // ???? ???? ??? ??
- GLdouble upx, GLdouble upy, GLdouble upz)
- // ???? ???(Orientation)
?? 6-80 ??? ?? ???
http//www.xmission.com/nate/tutors.html
46?? ??, ?? ??, ?? ??-pp.297
- PWCS MPMCS
- PVCS VPWCS VMPMCS
- ???? ??? ??
- glMatrixMode(GL_MODELVIEW)
- glLoadIdentity( )
I - gluLookAt(0.2 0.0, 0.0, 0.0, 0.0, -100.0, 1.0,
1.0, .0) V - glRotatef (45, 0.0, 1.0, 0.0)
M - glutWireCube(1.0)
PMCS
?? 6-81 ???? ????
47?? ?? ?? ? ??-pp.298-299
- ?? ?? ??? ??? ?? ?? ??? ?? ??
- ?? gluLookAt ??? ?? Keyboard Callback ??? ??
- Camera? ??? ???? Object(Teapot)? Zoom In/Out ???
???? ?? - Object(Teapot)? ??, Camera? ???? Focus? ??? ??,
Camera? ?/?/?/? ? ???? ?? - Camera? ??, Object(Teapot)? ??? ??, Camera? ????
Focus? ??? ?/?/?/? ? ???? ?? - Object(Teapot)? ?? ? Camera? ??, Camera? ????
Focus? ?? ??, Camera? Up Vector(Shutter? ??)?
????? ??? ? ?? ??
48?? ??? ?? ?????-pp.300
- Orbit(??) ??? ???? ???? ????? ?
- Polar Coordinate System(? ???)
- ??? ???(Radius), ???(Azimuth Angle),
???(Elevation Angle) ?? ??? ???? ??? ???? ? - Void PolarView(GLfloat radius, GLfloat elevation,
GLfloat azimuth, GLfloat twist) - glTranslatef(0.0, 0.0, -radius)
- glRotatef(-twist, 0.0, 0.0, 1.0)
- glRotatef(-elevation, 1.0, 0.0, 0.0)
- glRoatef(-azimuth, 0.0, 0.0, 1.0)
-
?? 6-85 ???? ???
?? 6-86 ???? ??
49?? ?????-pp.293
?? 6-78 Roll, Pitch, Yaw
Roll z ? ?? ?? Pitch x ? ?? ?? Yaw y ?
?? ??
- ?? ??? ??? ??? ?? x, y, z??? ?? ?? ???? ??
- ???? ?? ??? ?? ??? ??? ??? ?? ???? ???? ??
50?? ?????(??)-pp.302
- ?? ????? ??
- Void PilotView(GLfloat roll , GLfloat pitch,
GLfloat yaw) - glRotatef(roll, 0.0, 0.0, 1.0)
- glRotatef(pitch, 0.0, 1.0, 1.0)
- glRotatef(yaw, 1.0, 0.0, 0.0)
- glTranslatef(-x, -y, -z)
-
?? 6-88 Tilt, Pan, Roll, Dolly
?? 6-89/90 ???, ?? I
?? 6-91/92 Dolly, ?? II