+ All Categories
Home > Documents > 1 Chapter 4 Geometric Objects and Transformation.

1 Chapter 4 Geometric Objects and Transformation.

Date post: 26-Dec-2015
Category:
Upload: josephine-chapman
View: 222 times
Download: 0 times
Share this document with a friend
Popular Tags:
147
1 Chapter 4 Geometric Objects and Transformation
Transcript
Page 1: 1 Chapter 4 Geometric Objects and Transformation.

1

Chapter 4

Geometric Objects and Transformation

Page 2: 1 Chapter 4 Geometric Objects and Transformation.

2

Objectives

Introduce the elements of geometry Scalars Vectors Points

Develop mathematical operations among them in a coordinate-free manner

Define basic primitives Line segments Polygons

Page 3: 1 Chapter 4 Geometric Objects and Transformation.

3

Basic Elements Geometry is the study of the relationships among objects in

an n-dimensional space In computer graphics, we are interested in objects that exist in

three dimensions

Want a minimum set of primitives from which we can build more sophisticated objects

We will need three basic elements Scalars Vectors Points

Page 4: 1 Chapter 4 Geometric Objects and Transformation.

4

Scalars Scalars can be defined as members of sets whic

h can be combined by two operations (addition and multiplication) obeying some fundamental axioms (associativity, commutivity, inverses)

Examples include the real and complex number under the ordinary rules with which we are familiar

Scalars alone have no geometric properties

Page 5: 1 Chapter 4 Geometric Objects and Transformation.

5

Vectors Physical definition: a vector is a quantity

with two attributes Direction Magnitude Directed line segments

Examples include Force Velocity

DirectedLine segment

Page 6: 1 Chapter 4 Geometric Objects and Transformation.

6

Vector Operations Every vector has an inverse

Same magnitude but points in opposite direction Every vector can be multiplied by a scalar There is a zero vector

Zero magnitude, undefined orientation The sum of any two vectors is a vector

Use head-to-tail axiom

v -v vv=u+w

u

w

Page 7: 1 Chapter 4 Geometric Objects and Transformation.

7

Vectors Lack Position These vectors are identical

Same length and magnitude

Vectors spaces insufficient for geometry Need points

Page 8: 1 Chapter 4 Geometric Objects and Transformation.

8

Points Location in space Operations allowed between points and vectors

Point-point subtraction yields a vector Equivalent to point-vector addition

P=v+Q

v=P-Q

Page 9: 1 Chapter 4 Geometric Objects and Transformation.

9

Coordinate-Free Geometry

Objects and coordinate system

Objects without coordinate system

Page 10: 1 Chapter 4 Geometric Objects and Transformation.

10

Linear Vector and Euclidean Spaces Mathematical system for manipulating vectors Operations

Scalar-vector multiplication u=v Vector-vector addition: w=u+v 1 • P = P 0 • P = 0 (zero vector)

Expressions such as v=u+2w-3r

Euclidean space is an extension of vector space that adds a measure of size of distance

Page 11: 1 Chapter 4 Geometric Objects and Transformation.

11

Affine Spaces Point + a vector space Operations

Vector-vector addition Scalar-vector multiplication Point-vector addition Scalar-scalar operations

Page 12: 1 Chapter 4 Geometric Objects and Transformation.

12

The Computer-Science View Abstract data types(ADTs) vector u, v;

point p, q;scalar a, b;

In C++, by using classes and overloading operator, we could write:q = p + a*v;

Page 13: 1 Chapter 4 Geometric Objects and Transformation.

13

Geometric ADTs Textbook notations:

, , denote scalars P, Q, R define points u, v, w denote vectors

|v| = |||v|, v = P – QP = v + Q

Page 14: 1 Chapter 4 Geometric Objects and Transformation.

14

Lines Consider all points of the form

P()=P0 + d

Set of all points that pass through P0 in the direction of the vector d

Page 15: 1 Chapter 4 Geometric Objects and Transformation.

15

Parametric Form This form is known as the parametric form of the line

More robust and general than other forms Extends to curves and surfaces

Two-dimensional forms Explicit: y = mx +h Implicit: ax + by +c =0 Parametric:

x() = x0 + (1-)x1

y() = y0 + (1-)y1

Page 16: 1 Chapter 4 Geometric Objects and Transformation.

16

Rays and Line Segments If >= 0, then P() is the ray leaving P0 in the

direction d

If we use two points to define v, then

P( ) = Q + (R-Q)=Q+v

=R + (1-)Q

For 0<=<=1 we get all the

points on the line segment

joining R and Q

Page 17: 1 Chapter 4 Geometric Objects and Transformation.

17

Space Partitioning

u

vAB

C D

Ep=u+v

E: >=0, >=0, + =1F: >=0, >=0, + >1A: >=0, >=0, + <=1B: <0, >=0C: <0, <0D: >=0, <0

F

Page 18: 1 Chapter 4 Geometric Objects and Transformation.

18

Convexity An object is convex iff for any two points i

n the object all points on the line segment between these points are also in the object

P

QQ

P

Page 19: 1 Chapter 4 Geometric Objects and Transformation.

19

Affine Sums Consider the “sum”

P=1P1+2P2+…..+nPn

Can show by induction that this sum makes sense iff

1+2+…..n=1

in which case we have the affine sum of the points P1P2,…..Pn

If, in addition, i>=0, we have the convex hull of P

1P2,…..Pn

Page 20: 1 Chapter 4 Geometric Objects and Transformation.

20

Convex Hull

Smallest convex object containing P1P2,…..Pn

Formed by “shrink wrapping” points

Page 21: 1 Chapter 4 Geometric Objects and Transformation.

21

Dot and Cross: Products

||||

|||sin|

||||cos

||

),,(

),,(),,,(

2

vu

vu

vu

vu

uuu

vuvuvuvuvuvuvu

vuvuvuvu

vvvvuuuuLet

xyyxzxxzyzzy

zzyyxx

zyxzyx

Page 22: 1 Chapter 4 Geometric Objects and Transformation.

22

Linear Independence A set of vectors v1, v2, …, vn is linearly inde

pendent if

v1+v2+..vn=0 iff 1=2=…=0

If a set of vectors is linearly independent, we cannot represent one in terms of the others

If a set of vectors is linearly dependent, as least one can be written in terms of the others

Page 23: 1 Chapter 4 Geometric Objects and Transformation.

23

Dimension In a vector space, the maximum number of linearly i

ndependent vectors is fixed and is called the dimension of the space

In an n-dimensional space, any set of n linearly independent vectors form a basis for the space

Given a basis v1, v2,…., vn, any vector v can be written as

v=1v1+ 2v2 +….+nvn

where the {i} are unique

Page 24: 1 Chapter 4 Geometric Objects and Transformation.

24

Planes and Normals Every plane has a vector n normal (perpendicular, orthogon

al) to it From point-two vector form P(,)=R+u+v, we know we

can use the cross product to find n = u v and the equivalent form

(P()-P) n=0 Assume P=(x0, y0, z0) and

n=(nx, ny, nz), then the plane equation=nxx+nyy+nzz=nx0+ny0+nz0

Page 25: 1 Chapter 4 Geometric Objects and Transformation.

25

Three-Dimensional Primitives Hollow objects Objects can be specified by vertices Simple and flat polygons (triangles) Constructive Solid Geometry (CSG)

3D curves 3D surfaces Volumetric Objects

Page 26: 1 Chapter 4 Geometric Objects and Transformation.

26

Constructive Solid Geometry

Page 27: 1 Chapter 4 Geometric Objects and Transformation.

27

Representation Until now we have been able to work with

geometric entities without using any frame of reference, such a coordinate system

Need a frame of reference to relate points and objects to our physical world. For example, where is a point? Can’t answer

without a reference system World coordinates Camera coordinates

Page 28: 1 Chapter 4 Geometric Objects and Transformation.

28

Coordinate Systems Consider a basis v1, v2,…., vn

A vector is written v=1v1+ 2v2 +….+nvn

The list of scalars {1, 2, …. n}is the representation of v with respect to the given basis

We can write the representation as a row or column array of scalars

a=[1 2 …. n]T=

n

2

1

.

Page 29: 1 Chapter 4 Geometric Objects and Transformation.

29

Example v=2v1+3v2-4v3

a=[2 3 –4] Note that this representation is with respect

to a particular basis For example, in OpenGL we start by

representing vectors using the world basis but later the system needs a representation in terms of the camera or eye basis

Page 30: 1 Chapter 4 Geometric Objects and Transformation.

30

Problem in Coordinate Systems Which is correct?

Both are because vectors have no fixed location

v

v

Page 31: 1 Chapter 4 Geometric Objects and Transformation.

31

Frames – 1/2 Coordinate System is insufficient to present poin

ts If we work in an affine space we can add a singl

e point, the origin, to the basis vectors to form a frame

Page 32: 1 Chapter 4 Geometric Objects and Transformation.

32

Frames – 2/2 Frame determined by (P0, v1, v2, v3)

Within this frame, every vector can be written as

v=1v1+ 2v2 +….+nvn

Every point can be written as

P = P0 + 1v1+ 2v2 +….+nvn

Page 33: 1 Chapter 4 Geometric Objects and Transformation.

33

Representations and N-tuples

),,(

)1,0,0(

)0,1,0(

)0,0,1(

) (

321

3

2

1

321

332211

adenote

e

e

e

kjivor

eeev

T

T

T

Page 34: 1 Chapter 4 Geometric Objects and Transformation.

34

Change of Coordinate Systems Consider two representations of a the same

vector with respect to two different bases. The representations are

v=1v1+ 2v2 +3v3 = [1 2 3] [v1 v2 v3]

T

=1u1+ 2u2 +3u3 = [1 2 3] [u1 u2 u3]

T

a=[1 2 3 ]

b=[1 2 3]where

Page 35: 1 Chapter 4 Geometric Objects and Transformation.

35

Representing Second Basis in terms of the First

Each of the basis vectors, u1,u2, u3, are vectors that can be represented in terms of the first basis

u1 = 11v1+12v2+13v3

u2 = 21v1+22v2+23v3

u3 = 31v1+32v2+33v3

v

Page 36: 1 Chapter 4 Geometric Objects and Transformation.

36

Matrix FormThe coefficients define a 3 x 3 matrix

and the basis can be related by

see text for numerical examples

33

M =

a=MTb b=(MT)-1a

Page 37: 1 Chapter 4 Geometric Objects and Transformation.

37

Confusing Points and VectorsConsider the point and the vector

P = P0 + 1v1+ 2v2 +….+nvn

v=1v1+ 2v2 +….+nvn

They appear to have the similar representations

P=[1 2 3] v=[1 2 3]

which confuse the point with the vector

A vector has no positionv

pv

can place anywherefixed

Page 38: 1 Chapter 4 Geometric Objects and Transformation.

38

A Single RepresentationIf we define 0•P = 0 and 1•P =P then we can write

v=1v1+ 2v2 +3v3 = [1 2 3 0 ] [v1 v2 v3 P0] T

P = P0 + 1v1+ 2v2 +3v3= [1 2 3 1 ] [v1 v2 v3 P0] T

Thus we obtain the four-dimensional homogeneous coordinate representation

v = [1 2 3 0 ] T

P = [1 2 3 1 ] T

Page 39: 1 Chapter 4 Geometric Objects and Transformation.

39

Homogeneous CoordinatesThe general form of four dimensional homogeneous coordinates is

p=[x y x w] T

We return to a three dimensional point (for w0) by

xx/w

yy/w

zz/w

If w=0, the representation is that of a vector

Note that homogeneous coordinates replaces points in three dimensions by lines through the origin in four dimensions

Page 40: 1 Chapter 4 Geometric Objects and Transformation.

40

Homogeneous Coordinates and Computer Graphics

Homogeneous coordinates are key to all computer graphics systems All standard transformations (rotation, translation, scaling)

can be implemented by matrix multiplications with 4 x 4 matrices

Hardware pipeline works with 4 dimensional representations

For orthographic viewing, we can maintain w=0 for vectors and w=1 for points

For perspective we need a perspective division

Page 41: 1 Chapter 4 Geometric Objects and Transformation.

41

Change of Frames We can apply a similar process in

homogeneous coordinates to the representations of both points and vectors

Consider two frames

Any point or vector can be represented in each

P0 v1

v2

v3

Q0

u1u2

u3

Page 42: 1 Chapter 4 Geometric Objects and Transformation.

42

Representing One Frame in Terms of the Other

Extending what we did with change of bases

u1 = 11v1+12v2+13v3

u2 = 21v1+22v2+23v3

u3 = 31v1+32v2+33v3

Q0 = 41v1+42v2+43v3 +44P0

using a 4 x 4 matrix:

M =

Page 43: 1 Chapter 4 Geometric Objects and Transformation.

43

Working with RepresentationsWithin the two frames any point or vector has a rep

resentation of the same forma=[1 2 3 4 ] in the first frameb=[1 2 3 4 ] in the second frame

where 4 4 for points and 4 4 for vectors and

The matrix M is 4 x 4 and specifies an affine transformation in homogeneous coordinates

a=MTb

Page 44: 1 Chapter 4 Geometric Objects and Transformation.

44

Frames and ADTs – 1/3point3 p, q;vector3 v, u;In C++, through overloading,q=p+v;u=p-q;are valid, butq=v;u=p+q;are not!

Page 45: 1 Chapter 4 Geometric Objects and Transformation.

45

Frames and ADTs – 2/3typedef float point3[4];

typedef float point2[4]; /* making a 2D point a special 3D point */

How do we initialize a point?

p={1.0, 2.0, 3.0};

/* implementation dependent! */

Page 46: 1 Chapter 4 Geometric Objects and Transformation.

46

Frames and ADTs – 3/3Solutions:

1. initialize a point through a function:p = new_point3(1.0, 2.0, 3.0);

2. All operations are done through functions:point3 p, q;vector3 v; /* frame f; */v = point_sub(p, q);/* v = point_sub(p, q, f); */

Page 47: 1 Chapter 4 Geometric Objects and Transformation.

47

Frames in OpenGL When we work with representations, we work with

n-tuples or arrays of scalars Changes in frame are then defined by 4 x 4 matrices In OpenGL, the base frame that we start with is the

world frame Eventually we represent entities in the camera frame

by changing the world representation using the model-view matrix

Initially these frames are the same (M=I)

Page 48: 1 Chapter 4 Geometric Objects and Transformation.

48

Positioning the World Frame – 1/2If objects are on both sides of z=0, we should move

the world frame

1000

d100

0010

0001

M =

Page 49: 1 Chapter 4 Geometric Objects and Transformation.

49

Positioning the World Frame – 2/2

Page 50: 1 Chapter 4 Geometric Objects and Transformation.

50

Modeling of a Colored Cube Modeling Converting to the camera frame Clipping Projecting Removing hidden surfaces Rasterizing

Demo

Page 51: 1 Chapter 4 Geometric Objects and Transformation.

51

Objectives Introduce simple data structures for

building polygonal models Vertex lists Edge lists

OpenGL vertex arrays

Page 52: 1 Chapter 4 Geometric Objects and Transformation.

52

Representing a Mesh Consider a mesh

There are 8 nodes and 12 edges 5 interior polygons 6 interior (shared) edges

Each vertex has a location vi = (xi yi zi)

v1 v2

v7

v6

v8

v5

v4

v3

e1

e8

e3

e2

e11

e6

e7

e10

e5

e4

e9

e12

Page 53: 1 Chapter 4 Geometric Objects and Transformation.

53

Simple Representation List all polygons by their geometric locations Leads to OpenGL code such as

Inefficient and unstructured Consider moving a vertex to a new locations

glBegin(GL_POLYGON); glVertex3f(x1, x1, x1); glVertex3f(x6, x6, x6); glVertex3f(x7, x7, x7);glEnd();

Page 54: 1 Chapter 4 Geometric Objects and Transformation.

54

Modeling of a Cubetypedef GLfloat point3[3];point3 vertices[8][3] = {-1.0,-1.0,-1.0},{1.0,-1.0,-1.0},{1.0,1.0,-1.0}, {-1.0,1.0,-1.0}, {-1.0,-1.0,1.0}, {1.0,-1.0,1.0}, {1.0,1.0,1.0}, {-1.0,1.0,1.0}};

glBegin(GL_POLYGON);glVertex3fv(vertices[0]);glVertex3fv(vertices[3]);glVertex3fv(vertices[2]);glVertex3fv(vertices[1]);

glEnd();

OpenGL: glVertex3f 4D form

Page 55: 1 Chapter 4 Geometric Objects and Transformation.

55

Inward and Outward Facing Polygons

The order {v0, v3, v2, v1} and {v1, v0, v3, v2} are equivalent in that the same polygon will be rendered by OpenGL but the order {{v0, v1, v2, v3} is different

The first two describe outwardly

facing polygons Use the right-hand rule =

counter-clockwise encirclement

of outward-pointing normal OpenGL treats inward and

outward facing polygons differently

Page 56: 1 Chapter 4 Geometric Objects and Transformation.

56

Geometry versus Topology Generally it is a good idea to look for data

structures that separate the geometry from the topology Geometry: locations of the vertices Topology: organization of the vertices and edges Example: a polygon is an ordered list of vertices with

an edge connecting successive pairs of vertices and the last to the first

Topology holds even if geometry changes

Page 57: 1 Chapter 4 Geometric Objects and Transformation.

57

Vertex Lists Put the geometry in an array Use pointers from the vertices into this array Introduce a polygon list

Each location appears only once!

,z0

Page 58: 1 Chapter 4 Geometric Objects and Transformation.

58

The Color Cube – 1/3Model a color cube for rotating cube programDefine global arrays for vertices and colors

typedef GLfloat point3[3];point3 vertices[8][3] = {{-1.0,-1.0,-1.0},{1.0,-1.0,-1.0},{1.0,1.0,-1.0}, {-1.0,1.0,-1.0}, {-1.0,-1.0,1.0},{1.0,-1.0,1.0}, {1.0,1.0,1.0}, {-1.0,1.0,1.0}};GLfloat colors[8][3] = {{0.0,0.0,0.0},{1.0,0.0,0.0},{1.0,1.0,0.0}, {0.0,1.0,0.0}, {0.0,0.0,1.0},{1.0,0.0,1.0}, {1.0,1.0,1.0}, {0.0,1.0,1.0}};

Page 59: 1 Chapter 4 Geometric Objects and Transformation.

59

The Color Cube – 2/3void quad(int a, int b, int c , int d){ glBegin(GL_POLYGON); glColor3fv(colors[a]); glVertex3fv(vertices[a]); glColor3fv(colors[b]); glVertex3fv(vertices[b]); glColor3fv(colors[c]); glVertex3fv(vertices[c]); glColor3fv(colors[d]); glVertex3fv(vertices[d]); glEnd(); } Color each vertex accordingly

Page 60: 1 Chapter 4 Geometric Objects and Transformation.

60

The Color Cube – 3/3void colorcube( ){ polygon(0,3,2,1); polygon(2,3,7,6); polygon(0,4,7,3); polygon(1,2,6,5); polygon(4,5,6,7); polygon(0,1,5,4);}

Note that vertices are ordered so that we obtain correct outward facing normals

0

5 6

2

4 7

1

3

Page 61: 1 Chapter 4 Geometric Objects and Transformation.

61

Bilinear Interpolation

5445

3223

1001

)1()(

,)1()(

,)1()(

CCC

CCC

CCC

Assuming a linear variation, then we can make use of the same interpolation coefficients in coordinates for the interpolation of other attributes.

Page 62: 1 Chapter 4 Geometric Objects and Transformation.

62

Scan-line Interpolation A polygon is filled only when it is displayed It is filled scan line by scan line Can be used for other associated attributes

with each vertex

Page 63: 1 Chapter 4 Geometric Objects and Transformation.

63

Efficiency The weakness of our approach is that we are buil

ding the model in the application and must do many function calls to draw the cube

Drawing a cube by its faces in the most straight forward way requires 6 glBegin, 6 glEnd 6 glColor 24 glVertex More if we use texture and lighting

Page 64: 1 Chapter 4 Geometric Objects and Transformation.

64

Vertex Arrays OpenGL provides a facility called vertex arrays that allow u

s to store array data in the implementation Six types of arrays supported

Vertices Colors Color indices Normals Texture coordinates Edge flags

We will need only colors and vertices

Page 65: 1 Chapter 4 Geometric Objects and Transformation.

65

Initialization Using the same color and vertex data, first we enable

glEnableClientState(GL_COLOR_ARRAY);

glEnableClientState(GL_VERTEX_ARRAY); Identify location of arrays

glVertexPointer(3, GL_FLOAT, 0, vertices);

glColorPointer(3, GL_FLOAT, 0, colors);

3d arrays stored as floats data contiguous

data array

Page 66: 1 Chapter 4 Geometric Objects and Transformation.

66

Mapping Indices to Faces Form an array of face indices

Each successive four indices describe a face of the cube

Draw through glDrawElements which replaces all glVertex and glColor calls in the display callback

GLubyte cubeIndices[24] = {0,3,2,1,2,3,7,6 0,4,7,3,1,2,6,5,4,5,6,7,0,1,5,4};

Page 67: 1 Chapter 4 Geometric Objects and Transformation.

67

Drawing the Cube Method 1:

Method 2:

for(i=0; i<6; i++) glDrawElements(GL_POLYGON, 4, GL_UNSIGNED_BYTE, &cubeIndices[4*i]);

format of index data start of index data

what to draw number of indices

glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, cubeIndices);

Draws cube with 1 function call!!

Page 68: 1 Chapter 4 Geometric Objects and Transformation.

68

General Transformations A transformation maps points to other

points and/or vectors to other vectors

Page 69: 1 Chapter 4 Geometric Objects and Transformation.

69

Linear Function (Transformation)

)()()(

, and ,,

QfPfQPf

RQPR n

100034333231

24232221

14131211

A

Transformation matrix for homogeneous coordinate system:

AdAPAPdPP 00 )( ,)(

Page 70: 1 Chapter 4 Geometric Objects and Transformation.

70

Affine Transformations – 1/2 Line preserving Characteristic of many physically important

transformations Rigid body transformations: rotation, translation Scaling, shear

Importance in graphics is that we need only transform endpoints of line segments and let implementation draw line segment between the transformed endpoints

Page 71: 1 Chapter 4 Geometric Objects and Transformation.

71

Affine Transformations – 2/2

Every linear transformation (if the corresponding matrix is nonsingular) is equivalent to a change in frames

However, an affine transformation has only 12 degrees of freedom because 4 of the elements in the matrix are fixed and are a subset of all possible 4 x 4 linear transformations

Page 72: 1 Chapter 4 Geometric Objects and Transformation.

72

Translation Move (translate, displace) a point to a new

location

Displacement determined by a vector d Three degrees of freedom P’=P+d

P

d

Page 73: 1 Chapter 4 Geometric Objects and Transformation.

73

How Many Ways?Although we can move a point to a new location in

infinite ways, when we move many points there is usually only one way

object translation: every point displaced by same vector

Page 74: 1 Chapter 4 Geometric Objects and Transformation.

74

Rotation (2D) – 1/2 Consider rotation about the origin by degrees

radius stays the same, angle increases by

x´ =x cos –y sin y´ = x sin + y cos

x = r cos y = r sin

x´ = r cos (rcoscosrsinsiny´ = r sin (rcossinrsincos

Page 75: 1 Chapter 4 Geometric Objects and Transformation.

75

Rotation (2D) – 2/2 Using the matrix form:

There is a fixed point Could be extended to 3D Positive direction of rotation is counterclockwise 2D rotation is equivalent to 3D rotation about the

z-axis

y

x

y

x

cossin

sincos

Page 76: 1 Chapter 4 Geometric Objects and Transformation.

76

(Non-)Rigid-Body Transformation Translation and rotation are rigid-body

transformation

Non-rigid-bodytransformations

Page 77: 1 Chapter 4 Geometric Objects and Transformation.

77

ScalingExpand or contract along each axis (fixed point of origin)

x´=sxxy´=syxz´=szx

Uniform and non-uniform scaling

Page 78: 1 Chapter 4 Geometric Objects and Transformation.

78

Reflectioncorresponds to negative scale factors

originalsx = -1 sy = 1

sx = -1 sy = -1 sx = 1 sy = -1

Page 79: 1 Chapter 4 Geometric Objects and Transformation.

79

Transformation in Homogeneous Coordinates

With a frame, each affine transformation is represented by a 44 matrix of the form:

100034333231

24232221

14131211

M

Page 80: 1 Chapter 4 Geometric Objects and Transformation.

80

TranslationUsing the homogeneous coordinate representation in some fra

me

p=[ x y z 1]T

p´=[x´ y´ z´ 1]T

d=[dx dy dz 0]T

Hence p´= p + d or

x´=x+dx

y´=y+dy

z´=z+dznote that this expression is in four dimensions and expressesthat point = vector + point

Page 81: 1 Chapter 4 Geometric Objects and Transformation.

81

Translation MatrixWe can also express translation using a 4 x 4 matrix T in homogeneous coordinatesp´=Tp where

This form is better for implementation because all affine transformations can be expressed this way and multiple transformations can be concatenated together

1000

d100

d010

d001

),,(z

y

x

zyx dddTT

Page 82: 1 Chapter 4 Geometric Objects and Transformation.

82

Rotation about the Z axis Rotation about z axis in three dimensions leaves all po

ints with the same z Equivalent to rotation in two dimensions in planes

of constant z

or in homogeneous coordinates

p’=Rz()p

x´=x cos –y sin y´= x sin + y cos z´=z

Page 83: 1 Chapter 4 Geometric Objects and Transformation.

83

Rotation Matrix

1000

0100

00 cossin

00sin cos

)(zRR

Page 84: 1 Chapter 4 Geometric Objects and Transformation.

84

Rotation about X and Y axes Same argument as for rotation about z axis

For rotation about x axis, x is unchanged For rotation about y axis, y is unchanged

1000

0 cossin 0

0sin - cos0

0001

(xRR

1000

0 cos0sin -

0010

0sin 0 cos

(yRR

Page 85: 1 Chapter 4 Geometric Objects and Transformation.

85

Scaling Matrixx´=sxxy´=syxz´=szx

p´=Sp

1000

000

000

000

),,(z

y

x

zyx s

s

s

sssSS

Page 86: 1 Chapter 4 Geometric Objects and Transformation.

86

Shear Helpful to add one more basic transformation Equivalent to pulling faces in opposite directions

Page 87: 1 Chapter 4 Geometric Objects and Transformation.

87

Shear Matrix

Consider simple shear

along x axis

x’ = x + y cot y’ = yz’ = z

1000

0100

0010

00cot 1

(H

Page 88: 1 Chapter 4 Geometric Objects and Transformation.

88

Inverses

Although we could compute inverse matrices by general formulas, we can use simple geometric observations Translation: T-1(dx, dy, dz) = T(-dx, -dy, -dz)

Rotation: R -1() = R(-) Holds for any rotation matrix Note that since cos(-) = cos() and sin(-)=-sin()

R -1() = R T()

Scaling: S-1(sx, sy, sz) = S(1/sx, 1/sy, 1/sz)

Page 89: 1 Chapter 4 Geometric Objects and Transformation.

89

Concatenation We can form arbitrary affine transformation matrice

s by multiplying together rotation, translation, and scaling matrices

Because the same transformation is applied to many vertices, the cost of forming a matrix M=ABCD is not significant compared to the cost of computing Mp for many vertices p

The difficult part is how to form a desired transformation from the specifications in the application

Page 90: 1 Chapter 4 Geometric Objects and Transformation.

90

Order of Transformations Note that matrix on the right is the first applie

d Mathematically, the following are equivalent

p´ = ABCp = A(B(Cp)) Note many references use column matrices to

present points. In terms of column matrices

p´T = pTCTBTAT

Page 91: 1 Chapter 4 Geometric Objects and Transformation.

91

Rotation about a Fixed Point and about the Z axis

f

)()()( fzf pTRpTM

Page 92: 1 Chapter 4 Geometric Objects and Transformation.

92

Sequence of Transformations

Page 93: 1 Chapter 4 Geometric Objects and Transformation.

93

General Rotation about the Origin

A rotation by q about an arbitrary axis can be decomposed into the concatenation of rotations about the x, y, and z axes

R() = Rx() Ry() Rz()

are called the Euler angles

Note that rotations do not commute

We can use rotations in another order but

with different angles

x

z

yv

Page 94: 1 Chapter 4 Geometric Objects and Transformation.

94

Decomposition of General Rotation

Page 95: 1 Chapter 4 Geometric Objects and Transformation.

95

The Instance Transformation In modeling, we often start

with a simple object centered at the origin, oriented with the axis, and at a standard size

We apply an instance transformation to its vertices to

Scale

Orient

Locate Display lists

Page 96: 1 Chapter 4 Geometric Objects and Transformation.

96

Rotation about an Arbitrary Axis – 1/3

1. Move the fixed point to the origin

2. Rotate through a sequence of rotations

Page 97: 1 Chapter 4 Geometric Objects and Transformation.

97

Rotation about an Arbitrary Axis – 2/3

1coscoscos ,cos,cos,cos

1 ,||

222

222

zyxzzyyxx

zyx

z

y

x

u

uv

Normalize u:

Final rotation matrix:

)()()()()( xxyyzyyxx RRRRRR

Page 98: 1 Chapter 4 Geometric Objects and Transformation.

98

Rotation about an Arbitrary Axis – 3/3

Rotate the line segment to the plane of y=0, and the line segment is foreshortened to:

1000

0//0

0//0

0001

)(

so ,22

dd

ddR

d

zy

yzxx

zy

Rotate clockwise about the y-axis, so:

1000

00

0010

00

)(d

d

Rx

x

yy

)()()()()()()( 00 PTRRRRRPTR xxyyzyyxx Final transformation matrix:

Page 99: 1 Chapter 4 Geometric Objects and Transformation.

99

OpenGL Matrices In OpenGL matrices are part of the state Three types

Model-View (GL_MODEL_VIEW) Projection (GL_PROJECTION) Texture (GL_TEXTURE) (ignore for now)

Single set of functions for manipulation Select which to manipulated by

glMatrixMode(GL_MODEL_VIEW); glMatrixMode(GL_PROJECTION);

Page 100: 1 Chapter 4 Geometric Objects and Transformation.

100

Current Transformation Matrix (CTM) Conceptually there is a 4 x 4 homogeneous

coordinate matrix, the current transformation matrix (CTM) that is part of the state and is applied to all vertices that pass down the pipeline

The CTM is defined in the user program and loaded into a transformation unit

CTMvertices vertices

p p´=CpC

Page 101: 1 Chapter 4 Geometric Objects and Transformation.

101

CTM Operations The CTM can be altered either by loading a new

CTM or by postmutiplicationLoad an identity matrix: C ILoad an arbitrary matrix: C M

Load a translation matrix: C TLoad a rotation matrix: C RLoad a scaling matrix: C S

Postmultiply by an arbitrary matrix: C CMPostmultiply by a translation matrix: C CTPostmultiply by a rotation matrix: C C RPostmultiply by a scaling matrix: C C S

Page 102: 1 Chapter 4 Geometric Objects and Transformation.

102

Rotation about a Fixed PointStart with identity matrix: C IMove fixed point to origin: C CT -1

Rotate: C CRMove fixed point back: C CT

Result: C = T -1RT

Each operation corresponds to one function call in the program.

Note that the last operation specified is the first executed in the program

Page 103: 1 Chapter 4 Geometric Objects and Transformation.

103

CTM in OpenGL OpenGL has a model-view and a

projection matrix in the pipeline which are concatenated together to form the CTM

Can manipulate each by first setting the matrix mode

Page 104: 1 Chapter 4 Geometric Objects and Transformation.

104

Rotation, Translation, Scaling

glRotatef(theta, vx, vy, vz);

glTranslatef(dx, dy, dz);

glScalef( sx, sy, sz);

glLoadIdentity();

Load an identity matrix:

Multiply on right:

theta in degrees, (vx, vy, vz) define axis of rotation

Each has a float (f) and double (d) format (glScaled)

Page 105: 1 Chapter 4 Geometric Objects and Transformation.

105

Example Rotation about z axis by 30 degrees with a fixed

point of (1.0, 2.0, 3.0)

Remember that last matrix specified in the program is the first applied

glMatrixMode(GL_MODELVIEW);glLoadIdentity();glTranslatef(1.0, 2.0, 3.0);glRotatef(30.0, 0.0, 0.0, .10);glTranslatef(-1.0, -2.0, -3.0);

Page 106: 1 Chapter 4 Geometric Objects and Transformation.

106

Using Transformations Example: use idle function to rotate a cube and

mouse function to change direction of rotation Start with a program that draws a cube (cube.c)

in a standard way Centered at origin Sides aligned with axes Discussed modeling previously

Page 107: 1 Chapter 4 Geometric Objects and Transformation.

107

main.cvoid main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLU

T_RGB | GLUT_DEPTH); glutInitWindowSize(500, 500); glutCreateWindow("cube"); glutReshapeFunc(myReshape); glutDisplayFunc(display); glutIdleFunc(spinCube); glutMouseFunc(mouse); glEnable(GL_DEPTH_TEST); glutMainLoop();}

Page 108: 1 Chapter 4 Geometric Objects and Transformation.

108

Idle and Mouse Callbacksvoid spinCube() {

theta[axis] += 2.0;if( theta[axis] > 360.0 ) theta[axis] -= 360.0;glutPostRedisplay();

}void mouse(int btn, int state, int x, int y){ if(btn==GLUT_LEFT_BUTTON && state == GLUT_DOWN) axis = 0; if(btn==GLUT_MIDDLE_BUTTON && state == GLUT_DOWN) axis = 1; if(btn==GLUT_RIGHT_BUTTON && state == GLUT_DOWN) axis = 2;}

Page 109: 1 Chapter 4 Geometric Objects and Transformation.

109

Display Callbackvoid display(){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER

_BIT); glLoadIdentity(); glRotatef(theta[0], 1.0, 0.0, 0.0); glRotatef(theta[1], 0.0, 1.0, 0.0); glRotatef(theta[2], 0.0, 0.0, 1.0); colorcube(); glutSwapBuffers();}Note that because of fixed from of callbacks, variables such as theta and axis must be defined as globals

Camera information is in standard reshape callback

Page 110: 1 Chapter 4 Geometric Objects and Transformation.

110

Arbitrary Matrices Can load and multiply by matrices defined in the a

pplication program

The matrix m is a one dimension array of 16 elements which are the components of the desired 4 x 4 matrix stored by columns

In glMultMatrixf, m multiplies the existing matrix on the right

glLoadMatrixf(m)glMultMatrixf(m)

Page 111: 1 Chapter 4 Geometric Objects and Transformation.

111

Matrix Stacks In many situations we want to save transformatio

n matrices for use later Traversing hierarchical data structures (Chapter 9) Avoiding state changes when executing display lists

OpenGL maintains stacks for each type of matrix Access present type (as set by glMatrixMode) b

yglPushMatrix();glPopMatrix();

Page 112: 1 Chapter 4 Geometric Objects and Transformation.

112

Reading Back Matrices Can also access matrices (and other parts of the

state) by enquiry (query) functions

For matrices, we use as

glGetIntegervglGetFloatvglGetBooleanvglGetDoublevglIsEnabled

double m[16];glGetFloatv(GL_MODELVIEW, m);

Page 113: 1 Chapter 4 Geometric Objects and Transformation.

113

Using the Model-View Matrix In OpenGL the model-view matrix is used to

Position the camera Can be done by rotations and translations but is often easier to use gluLookAt (Chapter 5)

Build models of obejcts The projection matrix is used to define the view volume and to select a c

amera lens Although both are manipulated by the same functions, we have to be care

ful because incremental changes are always made by postmultiplication For example, rotating model-view and projection matrices by the same mat

rix are not equivalent operations. Postmultiplication of the model-view matrix is equivalent to premultiplication of the projection matrix

Page 114: 1 Chapter 4 Geometric Objects and Transformation.

114

Interfaces to 3D Applications One of the major problems in interactive computer grap

hics is how to use two-dimensional devices such as a mouse to interface with three dimensional objects

Example: how to form an instance matrix? Some alternatives

Virtual trackball 3D input devices such as the spaceball Use areas of the screen

Distance from center controls angle, position, scale depending on mouse button depressed

Page 115: 1 Chapter 4 Geometric Objects and Transformation.

115

Using Areas of the Screen Each button controls rotation, scaling and

translation, separately Example:

Left button: closer to the center, no rotation, moving up or down, rotate about x-axis, moving left or right, rotate about y-axis, moving to the corner, rotate about x-y-axes

Right button: translation Middle button: scaling (zoom-in or zoom-out)

Page 116: 1 Chapter 4 Geometric Objects and Transformation.

116

Physical Trackball The trackball is an “upside down” mouse

If there is little friction between the ball and the rollers, we can give the ball a push and it will keep rolling yielding continuous changes

Two possible modes of operation Continuous pushing or tracking hand motion Spinning

Page 117: 1 Chapter 4 Geometric Objects and Transformation.

117

A Trackball from a Mouse Problem: we want to get the two behavior

modes from a mouse We would also like the mouse to emulate a

frictionless (ideal) trackball Solve in two steps

Map trackball position to mouse position Use GLUT to obtain the proper modes

Page 118: 1 Chapter 4 Geometric Objects and Transformation.

118

Trackball Frame

origin at center of ball

Page 119: 1 Chapter 4 Geometric Objects and Transformation.

119

Projection of Trackball Position We can relate position on trackball to positi

on on a normalized mouse pad by projecting orthogonally onto pad

Page 120: 1 Chapter 4 Geometric Objects and Transformation.

120

Reversing Projection Because both the pad and the upper

hemisphere of the ball are two-dimensional surfaces, we can reverse the projection

A point (x,z) on the mouse pad corresponds to the point (x,y,z) on the upper hemisphere where

y =222 zxr if r |x| 0, r |z| 0

Page 121: 1 Chapter 4 Geometric Objects and Transformation.

121

Computing Rotatoins Suppose that we have two points that were

obtained from the mouse. We can project them up to the hemisphere to

points p1 and p2

These points determine a great circle on the sphere We can rotate from p1 to p

by finding the proper axis of rotation and the angle between the points

Page 122: 1 Chapter 4 Geometric Objects and Transformation.

122

Using the Cross Product The axis of rotation is given by the normal

to the plane determined by the origin, p1 , and p2

n = p1 p1

Page 123: 1 Chapter 4 Geometric Objects and Transformation.

123

Obtaining the Angle The angle between p1 and p2 is given by

If we move the mouse slowly or sample its position frequently, then will be small and we can use the approximation

| sin | = ||||

||

21 pp

n

sin

Page 124: 1 Chapter 4 Geometric Objects and Transformation.

124

Implementing with GLUT We will use the idle, motion, and mouse callbac

ks to implement the virtual trackball Define actions in terms of three booleans trackingMouse: if true update trackball positi

on redrawContinue: if true, idle function posts a

redisplay trackballMove: if true, update rotation matrix

Page 125: 1 Chapter 4 Geometric Objects and Transformation.

125

Example In this example, we use the virtual trackball

to rotate the color cube we modeled earlier The code for the colorcube function is omit

ted because it is unchanged from the earlier examples

Page 126: 1 Chapter 4 Geometric Objects and Transformation.

126

Initialization#define bool int /* if system does not support bool type */#define false 0#define true 1#define M_PI 3.14159 /* if not in math.h */

int winWidth, winHeight;

float angle = 0.0, axis[3], trans[3];

bool trackingMouse = false;bool redrawContinue = false;bool trackballMove = false;

float lastPos[3] = {0.0, 0.0, 0.0};int curx, cury;int startX, startY;

Page 127: 1 Chapter 4 Geometric Objects and Transformation.

127

The Projection Stepvoidtrackball_ptov(int x, int y, int width, int height, float v[3]){ float d, a; /* project x,y onto a hemisphere centered within width, height , note

z is up here*/ v[0] = (2.0F*x - width) / width; v[1] = (height - 2.0F*y) / height; d = sqrt(v[0]*v[0] + v[1]*v[1]); v[2]=sqrt(1.0F-d*d); /* v[2] = cos((M_PI/2.0) * ((d < 1.0) ? d : 1.0)); a = 1.0 / sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); v[0] *= a; v[1] *= a; v[2] *= a; */}

Page 128: 1 Chapter 4 Geometric Objects and Transformation.

128

glutMotionFunc – 1/2void mouseMotion(int x, int y){ float curPos[3], dx, dy, dz; /* compute position on hemisphere */ trackball_ptov(x, y, winWidth, winHeight, curP

os); if(trackingMouse) { /* compute the change in position on the hemisphere */ dx = curPos[0] - lastPos[0]; dy = curPos[1] - lastPos[1]; dz = curPos[2] - lastPos[2];

Page 129: 1 Chapter 4 Geometric Objects and Transformation.

129

glutMotionFunc – 2/2if (dx || dy || dz) { /* compute theta and cross product */ angle = 90.0 * sqrt(dx*dx + dy*dy + dz*dz); axis[0] = lastPos[1]*curPos[2] – lastPos[2]*curPos[1]; axis[1] = lastPos[2]*curPos[0] – lastPos[0]*curPos[2]; axis[2] = lastPos[0]*curPos[1] – lastPos[1]*curPos[0]; /* update position */ lastPos[0] = curPos[0]; lastPos[1] = curPos[1]; lastPos[2] = curPos[2]; } } glutPostRedisplay();}

Page 130: 1 Chapter 4 Geometric Objects and Transformation.

130

Idle and Display Callbacksvoid spinCube(){ if (redrawContinue) glutPostRedisplay();}

void display(){ glClear(GL_COLOR_BUFFER_BIT|

GL_DEPTH_BUFFER_BIT); if (trackballMove) {

glRotatef(angle, axis[0], axis[1], axis[2]); }

colorcube(); glutSwapBuffers();}

Page 131: 1 Chapter 4 Geometric Objects and Transformation.

131

Mouse Callbackvoid mouseButton(int button, int state, int x, int y){

if(button==GLUT_RIGHT_BUTTON) exit(0);

/* holding down left button allows user to rotate cube */

if(button==GLUT_LEFT_BUTTON) switch(state) { case GLUT_DOWN:

y=winHeight-y; startMotion( x,y); break;

case GLUT_UP: stopMotion( x,y); break;

} }

Page 132: 1 Chapter 4 Geometric Objects and Transformation.

132

Start Functionvoid startMotion(int x, int y){ trackingMouse = true; redrawContinue = false; startX = x; startY = y; curx = x; cury = y; trackball_ptov(x, y, winWidth, winHeight,

lastPos); trackballMove=true;}

Page 133: 1 Chapter 4 Geometric Objects and Transformation.

133

Stop Functionvoid stopMotion(int x, int y){ trackingMouse = false; /* check if position has changed */ if (startX != x || startY != y)

redrawContinue = true; else {

angle = 0.0; redrawContinue = false; trackballMove = false;

}}

Page 134: 1 Chapter 4 Geometric Objects and Transformation.

134

Smooth Rotation – 1/2 From a practical standpoint, we are often want to use tran

sformations to move and reorient an object smoothly Problem: find a sequence of model-view matrices M0,M1,…..,

Mn so that when they are applied successively to one or more objects we see a smooth transition, cannot always decompose a rotation into three rotations about the x, y, and z axes

For orientating an object, we can use the fact that every rotation corresponds to part of a great circle on a sphere Find the axis of rotation and angle Virtual trackball

Page 135: 1 Chapter 4 Geometric Objects and Transformation.

135

Smooth Rotation – 2/2 Observe that for arbitrary rotation matrix R,

there must exist a direction d such that all the points on Rp=p, and Rd=d, therefore the vector d and the column matrix p are eigen vectors of the matrix R corresponding to the eigen value 1!

Page 136: 1 Chapter 4 Geometric Objects and Transformation.

136

Incremental Rotation – 1/4 Consider the two approaches

For a sequence of rotation matrices R0,R1,…..,R

n , find the Euler angles for each and use Ri= Riz

Riy Rix

Not very efficient

Use the final positions to determine the axis and angle of rotation, then increment only the angle

Quaternions can be more efficient than either

Page 137: 1 Chapter 4 Geometric Objects and Transformation.

137

Incremental Rotation – 2/4for(i=0; i< imax; i++)

{

glRotatef(delta_theta, dx, dy, dz);

draw_objects();

}

Problem: calculation of sin and cos of angles

Page 138: 1 Chapter 4 Geometric Objects and Transformation.

138

Incremental Rotation – 3/4A better solution is to reuse the matrix:

GLfloat m[16];

glRotatef(delta_theta, dx, dy, dz);

glGetFloatv(GL_MODELVIEW,m);

for(i=0; i< imax; i++)

{

glMultMatrixf(m);

draw_objects();

}

Page 139: 1 Chapter 4 Geometric Objects and Transformation.

139

Incremental Rotation – 4/4Further improvement by approximations:

1cos ,sin So, if we form an arbitrary rotation matrix through the Euler angles:

1000

01

01

01

1000

0cossin0

0sincos0

0001

1000

0cos0sin

0010

0sin0cos

1000

0100

00cossin

00sincos

)()()(

xyz RRRR

Page 140: 1 Chapter 4 Geometric Objects and Transformation.

140

Complex Numbers

Euler’s identity

sincos iei For an arbitrary complex number c:

abbar

reibac i

/tan and ,

where,

122

If we rotate c about the origin by to c´:

)( irec

Page 141: 1 Chapter 4 Geometric Objects and Transformation.

141

Quaternions Extension of imaginary numbers from two to three dimen

sions Requires one real and three imaginary components i, j, k

Quaternions can express rotations on sphere smoothly and efficiently. Process: Model-view matrix quaternion Carry out operations with quaternions Quaternion Model-view matrix

q=q0+q1i+q2j+q3k

Page 142: 1 Chapter 4 Geometric Objects and Transformation.

142

Quaternions Properties

),(||

1

therefore),0,1( is quaternionfor identity tiveMultiplica

as || norm Define

)(

),(

:define then),,(If

),(),,,(Let

021

20

23

22

21

20

2

0000

00

0

3210

03210

q

qq

pqqppq

pq

p

ijkkjikjiq

q222

qa

a

qqqqq

a

p,qpqab

,pqba

p b

qqqq

qqqqqa

-1 where,

Page 143: 1 Chapter 4 Geometric Objects and Transformation.

143

Quaternions and Rotation

)(sin))((cos)(

))((2

sin)(2

cos2

sin2)(2

sin2

cos

where),,0(

form thehas quaternion this then,

: with quaternion the

ofproduct quaternion heConsider t

)2

sin,2

(cos

thereforeand ),1||( quartenionunit a is so

length,unit a has where),2

sin,2

(cos

quaternion heConsider t

),,(

wherespace, inpoint a represent to),0( Use

222

1

1

pvvpvpvpv

vpvpvvpvpp

p

v

vv

p

p

rprp

rp

r

rr

r

zyx

p

Page 144: 1 Chapter 4 Geometric Objects and Transformation.

144

Example of using Quaternion Rotation

)cossin,sincos(

where),,0(),0(

quaternion theyields

),,(point arbitrary an of rotation The

)1,0,0(2

sin2

cos

let axis, z about the rotation get the To

11

yxyx

rprrprp

zyx

r

p

p

p

Page 145: 1 Chapter 4 Geometric Objects and Transformation.

145

Quaternions and Rotation Matrix

1000

0)1(cossin)cos1(sin)cos1(

0sin)cos1()1(cossin)cos1(

0sin)cos1(sin)cos1()1(cos

:get could weresult, rotation quaternion the with

compare and ),2

sin,2

(cos Let .quaternionby done be could

)()()()()(

only )()()()()()()(For

22

22

22

00

zzxzyyxz

xzyyyzyx

yxzzyxxx

xxyyzyyxx

xxyyzyyxx

vvvvvvvv

vvvvvvvv

vvvvvvvv

R

z

y

x

R

r

RRRRRR

pTRRRRRpTM

v

Page 146: 1 Chapter 4 Geometric Objects and Transformation.

146

The Rotation Matrix in the Textbook

1

and ,2

sin2

cos2sin

,2

sin212

sin2

coscos

:identities tric trigonomefollowing theuse youif

slide, previous thein as same thesIt'

222

222

zyx vvv

Page 147: 1 Chapter 4 Geometric Objects and Transformation.

147

Quaternions Because the rotations are on the surface of

a sphere, quaternions provide an interesting and more efficient way to implement the trackball

See code in some of the standard demos included with Mesa


Recommended