0% found this document useful (0 votes)
11 views85 pages

Lecture 18

The document discusses 3-D transformations in computer graphics, focusing on rotation, scaling, reflection, and shearing. It explains the mathematical representations and matrix forms for rotating points around the X, Y, and Z axes, as well as the implications of uniform and differential scaling. Additionally, it covers composite transformations and the effects of shearing on object shapes.

Uploaded by

usmansaeed1512
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views85 pages

Lecture 18

The document discusses 3-D transformations in computer graphics, focusing on rotation, scaling, reflection, and shearing. It explains the mathematical representations and matrix forms for rotating points around the X, Y, and Z axes, as well as the implications of uniform and differential scaling. Additionally, it covers composite transformations and the effects of shearing on object shapes.

Uploaded by

usmansaeed1512
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 85

Computer Graphics

Lecture 18

3-D Transformations-II

Taqdees A. Siddiqi
[email protected]
Rotation

Rotation is the process of moving a point in space in


a non-linear manner
Normalization

Note that the process of moving the points so that the


POV is at the origin looking down the +Z axis is
called normalization.
For Rotation

 Rotating a point requires that we know:


– 1) the coordinates for the point, and
– 2) the rotation angles
 We need to know three different angles:
 How far to rotate around the X axis(YZ rotation, or
“pitch”)
 How far to rotate around the Y axis (XZ rotation, or
“yaw”)
 How far to rotate around the Z axis (XY rotation, or
“roll”)
Rotating a Point
 Repositions an object along a circular path in xy-plane
 Rotation Angle θ
 Rotation Point (xr, yr)
 θ is +ve  counterclockwise
rotation
 θ is -ve  clockwise rotation
 θ is zero  ?
 For simplicity, consider the pivot at origin and rotate point
P (x,y)
where x = r cosФ and y = r sinФ
 If rotated by θ then:
 x′ = r cos(Ф + θ)
= r cosФ cosθ – r sinФ sinθ
and
 y′ = r sin(Ф + θ)
= r cosФ sinθ + r sinФ cosθ
 Replacing r cosФ with x and
r sinФ with y, we have:
 x′ = x cosθ – y sinθ
and
 y′ = x sinθ + y cosθ
 Column vector representation:
P′ = R . P
 Where

 x'  cos  sin    x


P '   R   P  
 y '  sin  cos   y
Rotation: Homogeneous Coordinates

The rotation can now be expressed using homogeneous


coordinates as:
 x'  cos  sin  0  x 
 y '  sin  cos 0 . y 
  
 1   0 0 1  1 
Abbreviated as:
P’ = R (θ) . P
… Now in 3D

 Rotation can be about any of the three axes:


 About z-axis (i.e. in xy plane)
 About x-axis (i.e. in yz plane)
 About y-axis (i.e. in xz plane)
Roll : around z-axis
Pitch: around x-axis
Yaw: around y-axis
 Rotation about z-axis
(i.e. in xy plane):
• x′ = x cosθ – y sinθ
• y′ = x sinθ + y cosθ
• z’ =z
Alright, but what about rotations w.r.t. other axes?

Cyclic Permutations of Coordinate Axes


Cyclic permutation
Rotation about x-axis
(i.e. in yz plane):
x′ =x
y′ = y cosθ – z sinθ
z′ = y sinθ + z cosθ
Rotation about y-axis
(i.e. in xz plane):
x′ = z sinθ + x cosθ
y′ =y
z′ = z cosθ – x sinθ
Matrix Representations
Rotation about z-axis

 x'  cos   sin  0 0  x 


 y '  sin  cos  0   
0  y 
   .
 z'  0 0 1 0  z 
    
 1  0 0 0 1  1 
P` = Rz(θ) . P
Rotation about x-axis

 x'  1 0 0 0  x 
 y '  0 cos   sin    
0  y 
   .
 z '   0 sin  cos  0  z 
    
 1  0 0 0 1  1 
P` = Rx(θ) . P
Rotation about y-axis

 x'  cos 0 sin  0  x 


 y '  0 1 0   
0  y 
   .
 z '    sin  0 cos 0  z 
    
 1  0 0 0 1  1 
P` = Ry(θ) . P
Example

 Let's manually rotate the point (2,0,0) 45 degrees


clockwise about the z axis
Around arbitrary axis
Around arbitrary axis
Around arbitrary axis
Around arbitrary axis
Composite Transformation

Now you can take an object and apply a sequence of


transformations to it to make it do whatever you want.
All you need to do is figure out the sequence of
transformations needed and then apply the sequence
to each of the points in the model.
As an example, let's say you want to rotate an object
sitting at a certain point p around its z axis. You would
perform the following sequence of transformations to
achieve this
Around arbitrary axis
Scaling
Scaling an object changes its size and
repositions the object relative to the coordinate
origin. If the transformation parameters are not all
equal, relative dimensions in the object are
changed
 Coordinate transformations for scaling relative to the
origin are
 X` = X . Sx
 Y` = Y . Sy
 Z` = Z . Sz
 1) Uniform Scaling
 2) Differential Scaling
Uniform Scaling

 We preserve the original shape of an object with a


uniform scaling

 ( Sx = Sy = Sz)
Differential Scaling

 We do not preserve the original shape of an object with


a differential scaling

 ( Sx <> Sy <> Sz)


Scaling w.r.t. Origin

 Sx 0 0 0
0 Sy 0 
0

0 0 Sz 0
 
0 0 0 1
Scaling w.r.t. a fixed position

Scaling with respect to a selected fixed position (Xf,Yf,Zf)


can be represented with the transformation sequence:
Transformation sequence

1. Translate the fixed point to the origin.


2. Scale the object relative to the coordinate origin
3. Translate the fixed point back to its original position
Composite Transformation

1 0 0 X f   Sx 0 0 0  1 0 0  Xf
0  
1 0 Yf   0 S y 0  
0  0 
1 0  Yf 
 . .
0 0 1 Z f   0 0 Sz 0  0 0 1  Zf 
   
0 0 0 1 0 0 0 1  0 0 0 1 
Composite Transformation

 Sx 0 0 (1  S x ) X f 
0 Sy 0 
(1  S y )Y f 

0 0 Sz (1  S z ) Z f 
 
0 0 0 1 
Reflection

A reflection can be performed relative to a


selected reflection axis or with respect to a
selected reflection plane.
In general, three-dimensional reflection matrices are
set up similarly to those for two dimensions.
Reflections relative to a given axis are equivalent to
180 degree rotations.
Reflection of points relative to the X
axis

1 0 0 0
0 1 0 
0

0 0 1 0
 
0 0 0 1
Reflection of points relative to the Y
axis

 1 0 0 0
 0 1 0 
0

 0 0 1 0
 
 0 0 0 1
Reflection of points relative to the xy
plane

1 0 00
0 1 0 0 

0 0  1 0
 
0 0 0 1
Shears
 Shearing transformations can be used to modify object
shapes
 As an example of three-dimensional shearing, the
following transformation produces a z-axis shear:

1 0 a 0
0 1 b 
0

0 0 1 0
 
0 0 0 1
Y-axis shear

1 a 0 0
0 
1 0 0

0 c 1 0
 
0 0 0 1
X-axis shear

1 0 0 0
b 
1 0 0

c 0 1 0
 
0 0 0 1
Computer Graphics
Lecture 18
Rotation w.r.t. y-axis:
P` = Ry(θ) . P
 From the drawing and elementary trigonometry, we
can say:
cos(q) = X/D or
D = X /cos(q)
sin(q) = Y/D or
D = Y/sin(q)
where D = hypotenuse
= length of vector
from origin to (x,y)
To rotate to our new point, we just add m to q
For our new point, we know that:
cos ( q + m) = X` / D
sin ( q + m) = Y`/ D
X` = D * cos ( q + m )

Y` = D * sin ( q + m )
 We can expand these using the addition formulas
cos ( q + m ) = cos ( q ) * cos ( m ) –
sin( q ) * sin ( m )
X` = D * cos (q + m )

=D*[cos ( q ) * cos( m ) – sin ( q ) * sin ( m )]


=D*cos ( q ) * cos ( m ) – D*sin ( q )*sin( m )
 But we noted that
 D= X / cos(q)
 D= Y/sin(q)
 so we can substitute them in :
 X`= [X / cos(q)] * cos (q) * cos(m) –
[Y/sin(q) ] *sin(q) * sin(m)

 = X * cos(m) – Y*sin(m)
 And we can follow a similar approach to find Y`
 Y` = D*sin(q+m)
= D*[sin(q) * cos(m) + cos(q) * sin(m)]
= D*sin(q) * cos(m) + D*cos(q) * sin(m)
 Y` = [ X/ cos(m)] * sin(q ) *cos(m) +
[Y/sin(m) ] * cos(q ) * sin(m)

 = X * sin(q) + Y*cos(q)
 So to rotate the point (x,y,z) around the Z axis through
an angle of M degrees, we use:

 X` = x*cos(M) – y*sin(M)
 Y` = x*sin(M) + y*cos(M)
 Z` = z
 You see, in the above, we rotate M degrees around the
Z axis (“roll”), moving from the +X axis to the +Y axis
 But if you look down on the XY plane from the +Z axis,
this is a –M degree rotation!
 you can go through a similar process to calculate the
rotation formula for rotating around the X axis (“pitch”)
and around the Y axis (“yaw”), ending up with:
 Roll ( rotate around Z axis):
 x` = x * cos(m ) + y* sin(m)
 y` = y* cos(m) – x * sin(m)
 z` = z
 Pitch ( rotate around the X axis):
 x` = x
 y` = y * cos(m) + z * sin(m)
 z` = z * cos(m) – y*sin(m)
 Yaw ( rotate about the Y axis):
 x` = x * cos(m) – z * sin(m)
 y` = y;
 z` = x * sin(m) + z * cos(m)
Using Matrices for Rotation
Roll (rotate about the Z axis)

| cos(m) sin(m) 0 0|
| -sin(m) cos(m) 0 0|
| 0 0 1 0|
| 0 0 0 1|
or
P` = Rz(m) . P
Pitch (rotate about the X axis)

|1 0 0 0|
|0 cos(m) sin(m) 0|
|0 -sin(m) cos(m) 0|
|0 0 0 1|
or
P` = Rx(m) . P
Yaw (rotate about the Y axis)

| cos(m) 0 -sin(m) 0|
| 0 1 0 0|
| sin(m) 0 cos(m) 0|
| 0 0 0 1|
or
P` = Ry(m) . P

You might also like