Presentation is loading. Please wait.

Presentation is loading. Please wait.

3D Transformations. Translation x’ = x + tx y’ = y + ty z’ = z + tz P = P’ = T = P’ = T. P 1 0 0 tx 0 1 0 ty 0 0 1 tz 0 0 0 1 xyz1xyz1 x’ y’ z’ 1 x y.

Similar presentations


Presentation on theme: "3D Transformations. Translation x’ = x + tx y’ = y + ty z’ = z + tz P = P’ = T = P’ = T. P 1 0 0 tx 0 1 0 ty 0 0 1 tz 0 0 0 1 xyz1xyz1 x’ y’ z’ 1 x y."— Presentation transcript:

1 3D Transformations

2 Translation x’ = x + tx y’ = y + ty z’ = z + tz P = P’ = T = P’ = T. P 1 0 0 tx 0 1 0 ty 0 0 1 tz 0 0 0 1 xyz1xyz1 x’ y’ z’ 1 x y P P’ z

3 Scaling S = P’ = S. P wrt a fixed point (xf, yf, zf) : T(xf, yf, zf). S(sx, sy, sz). T(-xf, -yf, -zf) sx 0 0 0 0 sy 0 0 0 0 sz 0 0 0 0 1 x y z

4 Rotation z-axis rotation x’ = x.cos  – y.sin  y’ = x.sin  y.cos  z’ = z R = P’ = R. P cos  -sin  sin  cos    x y z

5 Rotation x-axis rotation replace x -> y -> z -> x in z-axis rotation y’ = y.cos  – z.sin  z’ = y.sin  z.cos  x’ = x R = y-axis rotation replace x -> y -> z -> x in x-axis rotation z’ = z.cos  – x.sin  x’ = z.sin  x.cos  y’ = y R = 1 0 0 0 0 cos  -sin  0 0 sin  cos  0 0 0 0 1 x y z cos  0 -sin  0 0 1 0 0 sin  0 cos  0 0 0 0 1 x y z z-axis rotation x’ = x.cos  – y.sin  y’ = x.sin  y.cos  z’ = z

6 Rotation Rotation about an arbitrary axis parallel to a coordinate axis P’ = T -1. Rx(  ). T. P x y z

7 Rotation x y z Rotation about an arbitrary axis NOT parallel to a coordinate axis

8 Rotation x y z Rotation about an arbitrary axis NOT parallel to a coordinate axis 1. Translate so that rotation axis passes through the origin

9 Rotation x y z Rotation about an arbitrary axis NOT parallel to a coordinate axis 1. Translate so that rotation axis passes through the origin 2. Rotate so that rotation axis coincides with a coordinate axis

10 Rotation x y z Rotation about an arbitrary axis NOT parallel to a coordinate axis 1. Translate so that rotation axis passes through the origin 2. Rotate so that rotation axis coincides with a coordinate axis 3. Rotate

11 Rotation x y z Rotation about an arbitrary axis NOT parallel to a coordinate axis 1. Translate so that rotation axis passes through the origin 2. Rotate so that rotation axis coincides with a coordinate axis 3. Rotate 4. Inverse rotation

12 Rotation x y z Rotation about an arbitrary axis NOT parallel to a coordinate axis 1. Translate so that rotation axis passes through the origin 2. Rotate so that rotation axis coincides with a coordinate axis 3. Rotate 4. Inverse rotation 5. Inverse translation

13 Reflection 180 0 rotation about x-axis a combination of translation and rotation y x z x z y

14 Shear y x z y x z 1 0 shx –shx.zref 0 1 shy –shy.zref 0 0 1 0 0 0 0 1

15 OpenGL glTranslate*(tx, ty, tz) f (float) d (double) glRotate* (theta, vx, vy, vz) (vx, vy, vz) vector defines the orientation of the rotation axis that passes through the coordinate origin glScale*(sx, sy, sz)

16 OpenGL glMatrixMode(GL_MODELVIEW) sets up the matrix for transformations (4x4 modelview matrix) glLoadIdentity ( ) assigns identity matrix to the current matrix glLoadMatrix*(16-element array) assigns a 16-element array (in column major order) to the current matrix glMultMatrix*(16-element array) postmultiplies a 16-element array (M’) with the current matrix (M) : M <- M.M’

17 OpenGL glMatrixMode(GL_MODELVIEW); glLoadIdentity ( ); glMultMatrixf(M2); glMultMatrixf(M1); /* M = M2. M1 */

18 OpenGL Matrix Stack Initially stack contains identity matrix Maximum stack depth is 32 glGetIntegerv (GL_MAX_MODELVIEW_STACK_DEPTH, stacksize) returns the number of positions available in the modelview stack glGetIntegerv (GL_MODELVIEW_STACK_DEPTH, nummats) returns the number of matrices currently in the stack glPushMatrix() copies the current matrix at the top of the stack glPopMatrix() destroys the matrix at the top of the stack

19 OpenGL glMatrixMode(GL_MODELVIEW); glColor3f(0.0, 0.0, 1.0); Recti(50, 100, 200, 150); glColor3f(1.0, 0.0, 0.0); glTranslatef(-200.0, -50.0, 0.0); Recti(50, 100, 200, 150); glLoadIdentity ( ); glRotatef(90.0, 0.0, 0.0, 1.0); Recti(50, 100, 200, 150); glLoadIdentity ( ); glScalef(-0.5, 1.0, 1.0); Recti(50, 100, 200, 150);

20 OpenGL glMatrixMode(GL_MODELVIEW); glColor3f(0.0, 0.0, 1.0); Recti(50, 100, 200, 150); glPushMatrix(); glColor3f(1.0, 0.0, 0.0); glTranslatef(-200.0, -50.0, 0.0); Recti(50, 100, 200, 150); glPopMatrix(); glPushMatrix(); glRotatef(90.0, 0.0, 0.0, 1.0); Recti(50, 100, 200, 150); glPopMatrix(); glScalef(-0.5, 1.0, 1.0); Recti(50, 100, 200, 150);


Download ppt "3D Transformations. Translation x’ = x + tx y’ = y + ty z’ = z + tz P = P’ = T = P’ = T. P 1 0 0 tx 0 1 0 ty 0 0 1 tz 0 0 0 1 xyz1xyz1 x’ y’ z’ 1 x y."

Similar presentations


Ads by Google