# Geometric Transforms - PowerPoint PPT Presentation

1 / 39

Geometric Transforms. Changing coordinate systems. The plan. Describe coordinate systems and transforms Introduce homogeneous coordinates Introduce numerical integration for animation Later: camera transforms physics more on vectors and matrices. World Coordinates.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

Geometric Transforms

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

## Geometric Transforms

Changing coordinate systems

### The plan

• Describe coordinate systems and transforms

• Introduce homogeneous coordinates

• Introduce numerical integration for animation

• Later:

• camera transforms

• physics

• more on vectors and matrices

### World Coordinates

• Objects exist in the world without need for coordinate systems

• But, describing their positions is easier with a frame of reference

• “World” or “object-space” or “global” coordinates

### Screen vs World Coordinates

• Some objects only exist on the screen

• mouse pointer, “radar” display, score, UI elements

• Screen coordinates typically 2D Cartesian

• x, y

• Objects in the world also appear on the screen – need to project world coordinates to screen coordinates

• camera transform

### Coordinate Transforms

• A Cartesian coordinate system has three things:

• an origin – reference point measurements are taken from

• axes – canonical directions

• scale – meaning of units of distance

### Types of transforms

• Translation

• moving in a fixed position

• Rotation

• changing orientation

• Scale

• changing size

• All can be viewed either as affecting the model or as affecting the coordinate system

### Changing coordinate systems

• Translation: changing the origin of the coordinate system

(5,13)

(2,12)

(0,0)

(0,0)

### Changing coordinate systems

• Rotation: changing the axes of the coordinate system

(7,1)

(5,5)

(0,0)

(0,0)

### Changing coordinate systems

• Scaling: changing the units of the coordinate system

(8,8)

(4,4)

(0,0)

(0,0)

### Matrix Transforms

• For "simplicity"s sake, we want to represent our transforms as matrix operations

• Why is this simple?

• single type of operation for all transforms

• IMPORTANT: collection of transforms can be expressed as a single matrix

• efficiency

### Scaling

• If we express our 2D coordinates as (x,y), scaling by a factor a multiplies each coordinate: so (ax, ay)

• Can write as a matrix multiplication:

=

### Scaling Syntax

Matrix.CreateScale( s );

• scalar argument s describes amount of scaling

• alternatively,

Matrix.CreateScale( v );

• vector argument v describes scale amount in x y z

• ### Rotation

• Similarly, rotating a point by an angle θ:

• (x,y)  (x cos θ - y sin θ, x sin θ + y cos θ)

=

### Rotation Syntax

Matrix.CreateRotationZ(angle)

• Note, specify the axis about which the rotation occurs

• also have CreateRotationX, CreateRotationY

• argument is angle of rotation, in radians

### Translation

• Translating a point by a vector involves a vector addition:

• (x,y) + (s,t) = (x+s, y+t)

### Translation

• Translating a point by a vector involves a vector addition:

• (x,y) + (s,t) = (x+s, y+t)

• Problem: cannot compose multiplications and additions into one operation

### Coordinate Transforms

• Scaling: p’ = Sp

• Rotation: p’ = Rp

• Translation: p’ = t + p

• Problem: Translation is treated differently.

### Homogeneous Coordinates

• Add an extra coordinate w

• 2D point written (x,y,w)

• Cartesian coordinates of this point are (x/w, y/w)

• w=0 represents points at infinity and should be avoided if representing location

• [Aside: w=0 also used to represent vector, e.g., normal]

• in practice, usually have w=1

### Translation now

• (x,y,1) + (s,t,0) = (x+s,y+t, 1)

=

=

### Translation Syntax

Matrix.CreateTranslation( v );

• vector v is the translation vector

• Also,

Matrix.CreateTranslation( x, y, z);

• x, y, z are scalars (floats)

• ### Composing Transformations

• Rotation, scale, and translate are all matrix multiplications

• We can compose an arbitrary sequence of transformations into one matrix

• C = T0T1…Tn-1Tn

• Remember – order matters

• In XNA, later transforms are added on the right

### Kinds of Transformations

• Rigid transformations

• composed of only rotations and translations

• preserve distances between points

• Affine transformations

• include scales

• preserve parallelism of lines

• distances and angles might change

### More on Rotations

• R matrix we wrote allows rotation about origin

• Usually, origin and point of rotation do not coincide

### More on Rotations

• Want to rotate about arbitrary point

• How to achieve this?

### More on Rotations

• Want to rotate about arbitrary point

• How to achieve this?

• Composite transform

• first translate to origin

• next, rotate desired amount

• finally, translate back

• C = T-1RT

### More on Order of Operations

• AB != BA in general

• But, AB = BA if:

• A is translation, B is translation

• A is scale, B is scale

• A is rotation, B is rotation

• A is rotation, B is scale (that preserves aspect ratio)

• All in two dimensions, note

Like transforms commute

### ISROT

• ISROT: a mnemonic for the order of transformations

• Identity: gets you started

• Scale: change the size of your model

• Rotation: rotate in place

• Orbit: rotate about an external point

• first translate

• Translation: move to final position

### 3D transforms

• Translation same as in 2D

• use 4D homogeneous coordinates x,y,z,w

• Scaling same as 2D

• For rotation, need to specify axis

• unique in 2D, but different possibilities available in 3D

• can represent any 3D rotation by a composition of rotations about axes

### Transforming objects

• So far, talked about transforming points

• Lines get transformed sensibly with transforms on endpoints

• Polygons same, mutatis mutandis

### Hierarchical Models

• Many times, structures (and models) will be built as a hierarchy:

Body

Arm

Other limbs...

Hand

Thumb

other fingers...

### Transforms on Hierarchies

• Transforms applied to nodes higher in the hierarchy are also applied to lower nodes

• parent transforms propagate to children

• How to achieve this?

• May want a stack for hierarchy management

• push transform on descending

• pop when current node finished

### Transforms on Hierarchies

• pseudocode for computing final transform:

applyWorld = myWorld * parentWorld;

• applyWorld is the final transform

• myWorld is the local transform

• parentWorld is the parent node's transform

• The power of matrix transforms! Complex hierarchical models can be expressed simply.

### Moving objects

• Want to get things to move

• translation amount

• rotation, orbit angles

• Just incorporate changes into Update()

• Need to do this in a disciplined way

### Speed  position

• If we know

• where an object started

• how fast it is moving (and the direction)

• and how much time has passed

• we can figure out where it is now

• x(t + dt) = x(t) + v(t)dt

• Numerical integration!

### Euler integration

• Assumes constant speed within a timestep

• still gives an answer if speed changes, but answer might be wrong

• x(t + dt) = x(t) + v(t)dt

• "Explicit integration"

• Most commonly used in graphics/game applications

### Implementation

• Time available in Update as gameTime

object.position += object.velocity * gameTime.ElapsedGameTime.TotalSeconds;

• if speed expressed in distance units per second

• assumes that position and velocity are vectors

• may have some way of updating velocity

• physics, player control, AI, ...

• Similar approach for angle updates (need angular velocity)

### Recap

• How to use world transformations

• scale, rotate, translate

• Use of homogeneous coordinates for translation

• Order of operations

• ISROT

• Animation and Euler integration

### Future lectures

• matrix and vector math

• camera transformations

• illumination and texture

• particle systems

• linear physics