Coordinate Systems and Transformations

Coordinate Systems and Transformations Graphic Libraries Hardware dependent program Hardware independent program GL Examples: Core, GKS, PEX, Ope...
0 downloads 0 Views 624KB Size
Coordinate Systems and Transformations

Graphic Libraries

Hardware dependent program

Hardware independent program

GL Examples: Core, GKS, PEX, OpenGL

Coordinate Systems • Device Coordinate System: identifies locations on the display

=>Virtual Device Coordinate System: Usually the origin is at the low left corner and u,v range from 0 to 1.

Coordinate Systems • Model Coordinate System(MCS): identifies the shapes of object and it is attached to the object. Therefore the MCS moves with the object in the WCS

• World Coordinate System (WCS): identifies locations of objects in the world in the application.

• Viewing Coordinate System (VCS): Defined by the viewpoint and viewsite

Coordinate Systems viewpoint and viewsite

Coordinate Systems

Projection on Screen • Parallel Projection • Perspective Projection

Parallel Projection • Preserve actual dimensions and shapes of objects • Preserve parallelism • Angles preserved only on faces parallel to the projection plane • Orthographic projection is one type of parallel projection

Perspective Projection • Doesn’t preserve parallelism • Doesn’t preserve actual dimensions and angles of objects, therefore shapes deformed • Popular in art (classic painting); architectural design and civil engineering. • Not commonly used in mechanical engineering

Perspective Projection

Coordinate scaling:

Transformations between Coordinate Systems Model Transformation

Viewing Transformation

ProjectionTransformation

Translation 2D

3D

y

y

P2 (x2, y2)

d

yd

P2

P1(x1, y1)

o

xd ⎡ x1 ⎤ ⎢ ⎥ P1 = ⎢ y1 ⎥ ⎢⎣ z1 ⎥⎦

x

P1

z

⎡ x1 ⎤ ⎡ x d ⎤ ⎡ x1 + xd ⎤ P 2 = ⎢⎢ y1 ⎥⎥ + ⎢⎢ y d ⎥⎥ = ⎢⎢ y1 + yd ⎥⎥ = P1 + d ⎢⎣ z1 ⎥⎦ ⎢⎣ z d ⎥⎦ ⎢⎣ z1 + zd ⎥⎦

x

Scaling

2D

y

3D

y

P2

P2 (x 2, y2)y’) V’(x’,

P1

y) P1(xV(x, 1, y1) θ

x

x

o z

⎡x1 ⎤ ⎢ ⎥ P1 = ⎢y1 ⎥ ⎢⎣z1 ⎥⎦

⎡sx1 ⎤ ⎢ ⎥ P 2 = ⎢sy1 ⎥ ⎢⎣sz1 ⎥⎦

P 2 = sP1

y P2

Reflection (about XOY Plane) o

x P1

z

⎡ x1 ⎤ ⎢ ⎥ P1 = ⎢ y1 ⎥ ⎢⎣ z1 ⎥⎦

⎡ x1 ⎤ ⎢ ⎥ P 2 = ⎢ y1 ⎥ ⎢⎣ −z1 ⎥⎦

⎡1 0 0 ⎤ P 2 = ⎢⎢ 0 1 0 ⎥⎥ P1 ⎢⎣ 0 0 −1⎥⎦

Rotation about Z Axis - CCW by Ө ⎡ x1 ⎤ ⎡ r cos ϕ ⎤ P1 = ⎢⎢ y1 ⎥⎥ = ⎢⎢ r sin ϕ ⎥⎥ ⎢⎣ z1 ⎥⎦ ⎢⎣ z ⎥⎦ ⎡ x2 ⎤ ⎡ r cos (ϕ +θ ) ⎤ ⎢ ⎥ P2 = ⎢⎢ y2 ⎥⎥ = ⎢ r sin (ϕ +θ ) ⎥ ⎥⎦ ⎢⎣ z2 ⎥⎦ ⎢⎣ z ⎡ r cos ϕ cos θ − r sin ϕ sin θ ⎤ = ⎢⎢ r cos ϕ sin θ + r sin ϕ cos θ ⎥⎥ ⎢⎣ ⎥⎦ z ⎡ x1 cos θ − y1 sin θ ⎤ = ⎢⎢ x1 sin θ + y1 cos θ ⎥⎥ ⎢⎣ ⎥⎦ z1

φ

z CCW y2

y

y1 P2 θ

z

Φ

o

r

P1

x2 x1

x

P2 (x2, y2)

y θ

o

φ

P1(x1, y1)

x

3-D Transformation

Rotation about Z Axis - CCW by Ө x2 = x1 cos θ − y1 sin θ y2 = x1 sin θ + y1 cos θ z2 = z1 P2 (x2, y2, z2)

y

P1(x1, y1, z2)

θ

φ

o

x Counter Clockwise, CCW

⎡ x2 ⎤ ⎡cos θ − sin θ 0 ⎤ ⎡ x1 ⎤ ⎢ y ⎥ = ⎢sin θ ⎥⎢y ⎥ cos θ 0 ⎢ 2⎥ ⎢ ⎥ ⎢ 1⎥ ⎢⎣ z2 ⎥⎦ ⎢⎣ 0 0 1 ⎥⎦ ⎢⎣ z1 ⎥⎦

Rotation about X Axis CCW by Ө

z

x2 = x

y

y2 = y1 cos θ − z1 sin θ

o

x

z2 = y1 sin θ + z1 cos θ P2 (x2, y2, z2)

z

P1(x1, y1, z1) θ φ

o

y

0 0 ⎤ ⎡ x1 ⎤ ⎡ x2 ⎤ ⎡1 ⎢ y ⎥ = ⎢0 cos θ − sin θ ⎥ ⎢ y ⎥ ⎢ 2⎥ ⎢ ⎥ ⎢ 1⎥ ⎢⎣ z2 ⎥⎦ ⎢⎣0 sin θ cos θ ⎥⎦ ⎢⎣ z1 ⎥⎦

Rotation about Y Axis CCW by Ө

⎡ x1 ⎤ ⎡ r cos ϕ ⎤ P1 = ⎢⎢ y1 ⎥⎥ = ⎢⎢ y1 ⎥⎥ ⎢⎣ z1 ⎥⎦ ⎢⎣ r sin ϕ ⎥⎦ ⎡ x2 ⎤ ⎡ r cos (ϕ − θ ) ⎤ ⎡ r cos ϕ cos θ + r sin ϕ sin θ ⎤ ⎢ ⎥ ⎢ ⎥ = P2 = ⎢⎢ y2 ⎥⎥ = ⎢ y1 y 1 ⎥ ⎢ ⎥ ⎢⎣ z2 ⎥⎦ ⎢⎣ r sin (ϕ − θ ) ⎥⎦ ⎢⎣ r sin ϕ cos θ − r cos ϕ sin θ ⎥⎦ ⎡ x1 cos θ + z1 sin θ ⎤ ⎥ = ⎢⎢ y1 ⎥ ⎢⎣ − x1 sin θ + z1 cos θ ⎦⎥ ⎡ x2 ⎤ ⎡ cos θ 0 sin θ ⎤ ⎡ x1 ⎤ P2 = ⎢⎢ y2 ⎥⎥ = ⎢⎢ 0 1 0 ⎥⎥ ⎢⎢ y1 ⎥⎥ = R[ y ] P1 ⎢⎣ z2 ⎥⎦ ⎢⎣ − sin θ 0 cos θ ⎥⎦ ⎢⎣ z1 ⎥⎦

Z P1 P2

θ φ

X

Y

Homogeneous Representation The representation is introduced to express all geometric transformations in the from of matrix multiplication for the convenience of manipulation.

⎡ x2 ⎤ ⎡1 0 ⎢ y ⎥ ⎢0 1 Translation ⎢ 2 ⎥ = ⎢ ⎢ z2 ⎥ ⎢0 0 ⎢ ⎥ ⎢ ⎣1 ⎦ ⎢⎣ 0 0

0 d x ⎤ ⎡ x1 ⎤ 0 d y ⎥⎥ ⎢ y1 ⎥ ⎢ ⎥ 1 d z ⎥ ⎢ z1 ⎥ ⎥⎢ ⎥ 0 1 ⎥⎦ ⎣1 ⎦

Dummy (n+1)th coordinate to facilitate multiplication

Homogeneous Representations Scaling

Rotation

P2 = [Rz ]P1

⎡sx ⎢0 [H ] = ⎢ ⎢0 ⎢ ⎣0

and

0 0 0⎤ s y 0 0⎥ ⎥ 0 sz 0 ⎥ ⎥ 0 0 1⎦

⎡cos θ ⎢ sin θ [Rz ] = ⎢ ⎢ 0 ⎢ ⎣ 0

− sin θ cos θ 0 0

0 0⎤ 0 0 ⎥⎥ 1 0⎥ ⎥ 0 1⎦

Homogeneous Representations 0 ⎡1 ⎢ 0 cos θ [ Rx ] = ⎢⎢ 0 sin θ ⎢ 0 ⎣0

0 − sin θ cos θ 0

Reflection

P2 = [M ]P1

and

0⎤ 0 ⎥⎥ ; 0⎥ ⎥ 1⎦

⎡ cos θ ⎢ 0 ⎡⎣ R y ⎤⎦ = ⎢ ⎢ − sin θ ⎢ ⎣ 0

⎡± 1 0 0 ⎢ 0 ±1 0 [M ] = ⎢ ⎢ 0 0 ±1 ⎢ ⎣0 0 0

0 sin θ 1 0 0 cos θ 0 0

0⎤ 0⎥⎥ 0⎥ ⎥ 1⎦

0⎤ 0 ⎥⎥ 0⎥ ⎥ 1⎦

Composition of Transformation (Concatenation of Transformation) via Pre-Multiplication

P2 = [ H n ][ H n −1 ]"[ H1 ]P1

An Example Consider a 3D object. The coordinates of the vertices are given as follows: A=[3, 5, 3]

B=[7, 5, 3]

C=[7, 5, 5]

D=[3, 5, 5]

E=[3, 6, 5]

F=[3, 6, 3]

Rotate the 3D object by 30 degree in clockwise (CW) direction at point D about the Y-axis.

Step 1

[T]D-O o

Step 2

[R]y-30

Step 3

[T]O-D

Procedure:

• First we translate ([T]D-O) the object at the refernece point D to the origin O. • Then we rotate ([ R]Y−30) about the Y-axis • Finally, we translate ([T]O-D) the point D from the origin back to its original position.

[T ] D − O

⎡1 0 0 − 3 ⎤ ⎢0 1 0 − 5⎥ ⎥ = ⎢ ⎢0 0 1 − 5⎥ ⎢ ⎥ 0 0 0 1 ⎣ ⎦

[T ]O

[ R]Y−30

− D

⎡cos(−30) 0 sin ( −30 ) 0 ⎤ ⎢ ⎥ 0 1 0 0 ⎥ =⎢ ⎢ − sin(−30) 0 cos(−30) 0 ⎥ ⎢ ⎥ 0 0 1 ⎥⎦ ⎢⎣ 0

⎡1 ⎢0 = ⎢ ⎢0 ⎢ ⎣0

0 0 3⎤ 1 0 5 ⎥⎥ 0 1 5⎥ ⎥ 0 0 1⎦

[A B C D E F]

⎡3 7 7 3 3 3 ⎤ ⎢5 5 5 5 6 6 ⎥ ⎥ P1 = ⎢ ⎢3 3 5 5 5 3 ⎥ ⎢ ⎥ ⎣1 1 1 1 1 1 ⎦

The definition of the point matrix in the homogeneous representation.

−30 Z

P2 = [T ]O − D [ R] [T ]D −O P1 ⎡ 4.00 7.46 6.46 3.00 3.00 4.00 ⎤ ⎢5.00 5.00 5.00 5.00 6.00 6.00 ⎥ ⎥ P2 = ⎢ ⎢3.27 5.27 7.00 5.00 5.00 3.27 ⎥ ⎢ ⎥ ⎣1.00 1.00 1.00 1.00 1.00 1.00 ⎦

Mapping and Parallel Projections • Mapping involves calculating the coordinates of a point known with rispect to a CS to a new CS.

About Transformations • Transformations are applied for both changing WCS in respect to MCS, but also for projections

Mapping and Parallel Projections

Where: Px,py,pz=x2,y2,z2 components required to translate (X2,Y2,Z2) to (X1,Y1,Z1), the following are evaluated as the translation as been performed: nx,ny,nz=x2,y2,z2 components of a unit vector along x1 ox,oy,oz=x2,y2,z2 components of a unit vector along y1 ax,ay,az=x2,y2,z2 components of a unit vector along y1 Once mapping has been performed the Z coordinate is dropped

Mapping and Perspective Projections Once mapping has been performed the zv coordinate are not dropped yet and the xv, yv coordinates are scaled following the similarity rule of triangles (L,S needed). Then zv is dropped.

Generating Parallel Projection Drop the n (zv) coordinate

⎡1 ⎢0 [Dn ]= ⎢⎢0 ⎢0 ⎣

0 0 0⎤ 1 0 0⎥ ⎥, 0 0 0⎥ 0 0 1 ⎥⎦

⎛ u⎞ ⎛u⎞ ⎜ V⎟ ⎜ V⎟ ⎜ ⎟ = [Dn ]⎜ ⎟ ⎜ 0⎟ ⎜n⎟ ⎜ ⎟ ⎜ ⎟ ⎝ 1⎠ ⎝1⎠

In summary, to project a view of an object on the UV plane, one needs to transform each point on the object by:

[T ] = [ Dn ][ Rz ][ Ry ][ Rx ][ Dov ,o ] ⎛ u⎞ ⎜ V⎟ P ′ = ⎜ ⎟ = [T ]P = [T] ⎜ 0⎟ ⎜ ⎟ ⎝ 1⎠

⎛ x⎞ ⎜ y⎟ ⎜ ⎟ ⎜ z⎟ ⎜ ⎟ ⎝ 1⎠

Note: The inverse transforms are not needed! We don't want to go back to x - y - z coordinates.

Orthographic Projection Y Top Front

Right X

Z

• Projection planes (Viewing planes) are perpendicular to the principal axes of the MCS of the model • The projection direction (viewing direction) coincides with one of the MCS axes

Y Top Front

Right X

Geometric Transformations for Generating Orthographic Projection (Front View)

⎡1 0 0 0 ⎤ ⎢0 1 0 0 ⎥ ⎥P Pv = ⎢ ⎢0 0 0 0 ⎥ ⎢ ⎥ ⎣0 0 0 1 ⎦

Z

Yv,Y Front

Xv, X

Drop Z

Geometric Transformations for Generating Orthographic Projection (Top View)

Y Top Front

Yv Right

Top

X

Xv, X Z

Z

0 0 ⎡1 0 0 0 ⎤ ⎡1 ⎢ 0 1 0 0 ⎥ ⎢ 0 cos(90 ° ) − sin(90 ° ) ⎥⎢ Pv = ⎢ ⎢ 0 0 0 0 ⎥ ⎢ 0 sin ( 90 ° ) cos(90 ° ) ⎢ ⎥⎢ 0 0 ⎣ 0 0 0 1 ⎦ ⎢⎣ 0 Drop Z

[ R]90 x

0⎤ ⎡1 ⎢0 0 ⎥⎥ P=⎢ ⎢0 0⎥ ⎥ ⎢ 1 ⎥⎦ ⎣0

0 0 0 0

0 0⎤ − 1 0 ⎥⎥ P 0 0⎥ ⎥ 0 1⎦

Y Top Front

Yv, Y

Geometric Transformations for Generating Orthographic Projection (Right View)

Right Right

X Z

Xv

sin( −90°)

− 1 0⎤ 0 0 ⎥⎥ P 0 0⎥ ⎥ 0 1⎦

Z

⎡1 0 0 0 ⎤ ⎡ cos( −90°) ⎢0 1 0 0 ⎥ ⎢ 0 ⎢ ⎢ ⎥ Pv = ⎢ 0 0 0 0 ⎥ ⎢ − sin ( −90° ) ⎢ ⎥⎢ 0 ⎣ 0 0 0 1 ⎦ ⎢⎣ Drop Z

0 1 0 0

0⎤ ⎡0 0 ⎢0 1 0 0 ⎥⎥ P=⎢ ⎢0 0 cos( −90°) 0 ⎥ ⎥ ⎢ 0 1 ⎥⎦ ⎣0 0

[ R ]−y90

Rotations Needed for Generating Isometric Projection Y

Yv Top Front

Y Right

Top Front

X

Right

Xv

Z Z

0 ⎡1 0 ⎢0 cos φ − sin φ Pv = [ R]φx [ R]θy P = ⎢ ⎢0 sin φ cos φ ⎢ 0 ⎣0 0

Zv

0 ⎤ ⎡cos θ ⎥ ⎢ 0⎥ ⎢ 0 0 ⎥ ⎢ − sin θ ⎥⎢ 1⎦⎣ 0

X

0 sin θ 0 ⎤ ⎥ 1 0 0 ⎥ P 0 cos θ 0 ⎥ ⎥ 0 0 1 ⎦

Isometric Projection: Equally foreshorten the three main axes

θ = ±45°, φ = ±35.26°

Other Possible Rotation Paths • Rx --> Ry

rx = ±45°, ry = ±35.26° • Rz --> Ry(Rx)

rz = ±45°, ry ( x ) = ±54.74° • Rx(Ry) --> Rz

ry ( x ) = ±45°, rz = ANY ANGLE