+ All Categories
Home > Documents > Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Date post: 22-Dec-2015
Category:
View: 223 times
Download: 3 times
Share this document with a friend
Popular Tags:
54
Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006
Transcript
Page 1: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Vectors & Matrices

CSE167: Computer Graphics

Instructor: Steve Rotenberg

UCSD, Fall 2006

Page 2: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Project 1

Make a program that renders a simple 3D object (like a cube). It should render several copies of the same object with different positions/rotations.

Create a ‘Model’ class that stores an array of triangles and has a ‘Draw()’ function. The Model should have a ‘CreateBox(float,float,float)’ function that initializes it to a box. You can also make other shapes if you’d like.

Use an object oriented approach that will allow you to re-use the Model for other projects and add new features easily as the course goes on

The goal of project 1 is to get familiar with the C++ compiler and OpenGL (or Java, Direct3D…)

Due Thursday, October 5, 5:00 pm More details will be on the web page

Page 3: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Project 1class Vertex {

Vector3 Position;Vector3 Color;

public:void Draw();

};

class Triangle {Vertex Vert[3];

public:void Draw();

};

class Model {int NumTris;Triangle *Tri;void Init(int num) {delete Tri; Tri=new Triangle[num]; NumTris=num;}

public:Model() {NumTris=0; Tri=0;}~Model() {delete Tri;}void CreateBox(float x,float y,float z);void CreateTeapot();void Draw();

};

Page 4: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Software Architecture

Object oriented Make objects for things that should be objects Avoid global data & functions Encapsulate information Provide useful interfaces Put different objects in different files Keep lower level classes as generic as possible

Page 5: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Vectors

Page 6: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Coordinate Systems

x

y

z

Right handed coordinate system

Page 7: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Vector Arithmetic

zyx

zyx

zzyyxx

zzyyxx

zyx

zyx

sasasas

aaa

bababa

bababa

bbb

aaa

a

a

ba

ba

b

a

Page 8: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Vector Algebra

Associativity

Commutativity

Zero identity

Additive inverse

Distributivity

Distributivity

Multiplicative identity

aa

baba

aaa

0aa

aa0

abba

cbacba

1

sss

tsts

Page 9: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Vector Magnitude

The magnitude (length) of a vector is:

A vector with length=1.0 is called a unit vector We can also normalize a vector to make it a unit

vector:

222zyx vvv v

v

v

Page 10: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Vector Magnitude Properties

Triangle inequalitybaba

aa

ss

Page 11: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Dot Product

cosbaba

ba

ba

zzyyxx

ii

bababa

ba

Page 12: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Dot Product

baba

baba

ba

ba

T

zzyyxx

ii

bababa

ba

cos

z

y

x

zyx

b

b

b

aaa ba

Page 13: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Dot Product Properties

Commutativity

Cauchy-Schwartz inequality

baba

abba

baba

cabacba

ss

Page 14: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Example: Angle Between Vectors

How do you find the angle θ between vectors a and b?

a

b θ

Page 15: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Example: Angle Between Vectors

ba

ba

ba

ba

baba

1cos

cos

cos

a

b θ

Page 16: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Dot Products with General Vectors

The dot product is a scalar value that tells us something about the relationship between two vectors

If a·b > 0 then θ < 90º If a·b < 0 then θ > 90º If a·b = 0 then θ = 90º (or one or more of

the vectors is degenerate (0,0,0))

Page 17: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Dot Products with One Unit Vector

a

u

a·u

If |u|=1.0 then a·u is the length of the projection of a onto u

Page 18: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Example: Distance to Plane

A plane is described by a point p on the plane and a unit normal n. Find the distance from point x to the plane

•p

n

• x

Page 19: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Example: Distance to Plane

The distance is the length of the projection of x-p onto n:

•p

n

• x

x-p

npx dist

Page 20: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Dot Products with Unit Vectors

bθ a

a·b = 00 < a·b < 1

a·b = -1

a·b = 1

-1 < a·b < 0

cos

0.1

ba

baa·b

Page 21: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Cross Product

xyyxzxxzyzzy

zyx

zyx

babababababa

bbb

aaa

kji

ba

ba

Page 22: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Properties of the Cross Product

0

sin

ba

ba

baba

ba

area of parallelogram ab

is a vector perpendicular to both a and b, in the direction defined by the right hand rule

if a and b are parallel

Page 23: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Example: Normal of a Triangle

Find the unit length normal of the triangle defined by 3D points a, b, and c

ab

c

Page 24: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Example: Normal of a Triangle

n

nn

acabn

b-a

c-a

ab

c

Page 25: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Example: Area of a Triangle

Find the area of the triangle defined by 3D points a, b, and c

ab

c

Page 26: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Example: Area of a Triangle

acab 2

1area

b-a

c-a

ab

c

Page 27: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Example: Alignment to Target

An object is at position p with a unit length heading of h. We want to rotate it so that the heading is facing some target t. Find a unit axis a and an angle θ to rotate around.

ph

t

Page 28: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Example: Alignment to Target

ph

tt-p

θ

a

pt

pth

pth

ptha

1cos

Page 29: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Vector Classclass Vector3 {public:

Vector3() {x=0.0f; y=0.0f; z=0.0f;}Vector3(float x0,float y0,float z0) {x=x0; y=y0; z=z0;}void Set(float x0,float y0,float z0) {x=x0; y=y0; z=z0;}void Add(Vector3 &a) {x+=a.x; y+=a.y; z+=a.z;}void Add(Vector3 &a,Vector3 &b) {x=a.x+b.x; y=a.y+b.y; z=a.z+b.z;}void Subtract(Vector3 &a) {x-=a.x; y-=a.y; z-=a.z;}void Subtract(Vector3 &a,Vector3 &b) {x=a.x-b.x; y=a.y-b.y; z=a.z-b.z;}void Negate() {x=-x; y=-y; z=-z;}void Negate(Vector3 &a) {x=-a.x; y=-a.y; z=-a.z;}void Scale(float s) {x*=s; y*=s; z*=s;}void Scale(float s,Vector3 &a) {x=s*a.x; y=s*a.y; z=s*a.z;}float Dot(Vector3 &a) {return x*a.x+y*a.y+z*a.z;}void Cross(Vector3 &a,Vector3 &b)

{x=a.y*b.z-a.z*b.y; y=a.z*b.x-a.x*b.z; z=a.x*b.y-a.y*b.x;}float Magnitude() {return sqrtf(x*x+y*y+z*z);}void Normalize() {Scale(1.0f/Magnitude());}

float x,y,z;};

Page 30: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Matrices & Transformations

Page 31: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

3D Models

Let’s say we have a 3D model that has an array of position vectors describing its shape

We will group all of the position vectors used to store the data in the model into a single array: vn where 0 ≤ n ≤ NumVerts-1

Each vector vn has components vnx vny vnz

Page 32: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Translation

Let’s say that we want to move our 3D model from it’s current location to somewhere else…

In technical jargon, we call this a translation We want to compute a new array of positions v′n

representing the new location Let’s say that vector d represents the relative

offset that we want to move our object by We can simply use: v′n = vn + d

to get the new array of positions

Page 33: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Transformations

v′n = vn + d

This translation represents a very simple example of an object transformation

The result is that the entire object gets moved or translated by d

From now on, we will drop the n subscript, and just write

v′ = v + d

remembering that in practice, this is actually a loop over several different vn vectors applying the same vector d every time

Page 34: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Transformations

Always remember that this compact equation can be expanded out into

Or into a system of linear equations:

dvv

z

y

x

z

y

x

z

y

x

d

d

d

v

v

v

v

v

v

zzz

yyy

xxx

dvv

dvv

dvv

Page 35: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Rotation

Now, let’s rotate the object in the xy plane by an angle θ, as if we were spinning it around the z axis

Note: a positive rotation will rotate the object counterclockwise when the rotation axis (z) is pointing towards the observer

zz

yxy

yxx

vv

vvv

vvv

cossin

sincos

Page 36: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

We can expand this to:

And rewrite it as a matrix equation:

Or just:

Rotation

zz

yxy

yxx

vv

vvv

vvv

cossin

sincos

zyxz

zyxy

zyxx

vvvv

vvvv

vvvv

1 0 0

0cossin

0sincos

z

y

x

z

y

x

v

v

v

v

v

v

100

0cossin

0sincos

vMv

Page 37: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Rotation

We can represent a z-axis rotation transformation in matrix form as:

or more compactly as:

where

z

y

x

z

y

x

v

v

v

v

v

v

100

0cossin

0sincos

vMv

100

0cossin

0sincos

zRM

Page 38: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Rotation

We can also define rotation matrices for the x, y, and z axes:

100

0cossin

0sincos

zR

cossin0

sincos0

001

xR

cos0sin

010

sin0cos

yR

Page 39: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Linear Transformations

Like translation, rotation is an example of a linear transformation

True, the rotation contains sin()’s and cos()’s, but those ultimately just end up as constants in the actual linear equation

We can generalize our matrix in the previous example to be:

vMv

333

222

111

cba

cba

cba

M

Page 40: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Linear Equation

A general linear equation of 1 variable is:

where a and d are constants A general linear equation of 3 variables is:

Note: there are no nonlinear terms like vxvy, vx2,

sin(vx)…

davvf

dcvbvavfvvvf zyxzyx v,,

Page 41: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

System of Linear Equations

Now let’s look at 3 linear equations of 3 variables vx, vy, and vz

Note that all of the an, bn, cn, and dn are constants (12 in total)

3333

2222

1111

dvcvbvav

dvcvbvav

dvcvbvav

zyxz

zyxy

zyxx

Page 42: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Matrix Notation

dvMv

3

2

1

333

222

111

3333

2222

1111

d

d

d

v

v

v

cba

cba

cba

v

v

v

dvcvbvav

dvcvbvav

dvcvbvav

z

y

x

z

y

x

zyxz

zyxy

zyxx

Page 43: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Translation Let’s look at our translation transformation again:

If we really wanted to, we could rewrite our three translation equations as:

zzz

yyy

xxx

dvv

dvv

dvv

zzyxz

yzyxy

xzyxx

dvvvv

dvvvv

dvvvv

100

010

001

dvv

Page 44: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Identity We can see that this is equal to a transformation

by the identity matrix

3

2

1

3

2

1

100

010

001

100

010

001

d

d

d

v

v

v

v

v

v

dvvvv

dvvvv

dvvvv

z

y

x

z

y

x

zyxz

zyxy

zyxx

Page 45: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Identity

Multiplication by the identity matrix does not affect the vector

vIv

I

100

010

001

Page 46: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

We can apply a uniform scale to our object with the following transformation

If s>1, then the object will grow by a factor of s in each dimension If 0<s<1, the object will shrink If s<0, the object will be reflected across all three dimensions,

leading to an object that is ‘inside out’

Uniform Scaling

z

y

x

z

y

x

v

v

v

s

s

s

v

v

v

00

00

00

Page 47: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

We can also do a more general nonuniform scale, where each dimension has its own scale factor

which leads to the equations:

Non-Uniform Scaling

z

y

x

z

y

x

z

y

x

v

v

v

s

s

s

v

v

v

00

00

00

zzz

yyy

xxx

vsv

vsv

vsv

Page 48: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Multiple Transformations

If we have a vector v, and an x-axis rotation matrix Rx, we can generate a rotated vector v′:

If we wanted to then rotate that vector around the y-axis, we could simply:

vRv x

vRRv

vRv

xy

y

Page 49: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

We can extend this to the concept of applying any sequence of transformations:

Because matrix algebra obeys the associative law, we can regroup this as:

This allows us to concatenate them into a single matrix:

Note: matrices do NOT obey the commutative law, so the order of multiplications is important

Multiple Transformations

vMMMMv 1234

vMMMMv 1234

vMv

MMMMM

total

total 1234

Page 50: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Matrix Dot Matrix

NML

333231

232221

131211

333231

232221

131211

333231

232221

131211

nnn

nnn

nnn

mmm

mmm

mmm

lll

lll

lll

32132212121112 nmnmnml

Page 51: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

3D Linear Transformations

dvMv

3

2

1

333

222

111

3333

2222

1111

d

d

d

v

v

v

cba

cba

cba

v

v

v

dvcvbvav

dvcvbvav

dvcvbvav

z

y

x

z

y

x

zyxz

zyxy

zyxx

Page 52: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Multiple Rotations & Scales

We can combine a sequence of rotations and scales into a single matrix

For example, we can combine a y-rotation, followed by a z-rotation, then a non-uniform scale, and finally an x-rotation:

vMv

RRsSRM

yzx

Page 53: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Multiple Translations

We can also take advantage of the associative property of vector addition to combine a sequence of translations

For example, a translation along vector t1 followed by a translation along t2 and finally t3 can be combined:

dvv

tttd

321

Page 54: Vectors & Matrices CSE167: Computer Graphics Instructor: Steve Rotenberg UCSD, Fall 2006.

Combining Transformations

We see that we can combine a sequence of rotations and/or scales

We can also combine a sequence of translations

But what if we want to combine translations with rotations/scales?


Recommended