Background Mathematics Aaron Bloomfield CS 445: Introduction to Graphics Fall 2006

advertisement
Background Mathematics
Aaron Bloomfield
CS 445: Introduction to Graphics
Fall 2006
Mathematical Foundations

A very brief review of some mathematical tools
we’ll employ



Geometry (2D, 3D)
Trigonometry
Vector and affine spaces



Points, vectors, and coordinates
Dot and cross products
Linear transforms and matrices
2
3D Geometry

To model, animate, and render 3D scenes, we
must specify:




We’ll look at two types of spaces:



Location
Displacement from arbitrary locations
Orientation
Vector spaces
Affine spaces
We will often be sloppy about the distinction
3
Vector Spaces

Given a basis for a vector space:




Each vector in the space is a unique linear combination
of the basis vectors
The coordinates of a vector are the scalars from this
linear combination
Best-known example: Cartesian coordinates
Note that a given vector will have different coordinates
for different bases
4
Vectors And Points

We commonly use vectors to represent:




Direction (i.e., orientation)
Points in space (i.e., location)
Displacements from point to point
But we want points and directions to behave
differently



Ex: To translate something means to move it without
changing its orientation
Translation of a point = different point
Translation of a direction = same direction
5
Affine spaces vs. Vector spaces

Vector spaces


All vectors originate at the origin
Thus, can be denoted with (x,y,z) coordinates



The origin is absolute
Affine spaces




The head of the vector
Vectors can start at an arbitrary point
Thus, can be denoted via (x,y,z) and starting point P
The origin is relative to the current “context”
Only when the distinction matters will we specify
6
Affine Spaces



To be more rigorous, we need an explicit notion of
position
Affine spaces add a third element to vector
spaces: points (P, Q, R, …)
Q
Points support these operations

Point-point subtraction:




v
Result is a vector pointing from P to Q
Vector-point addition:

Q-P=v
Result is a new point
P+0=P
P+v=Q
P
Note that the addition of two points is not defined
7
Affine Spaces

Points, like vectors, can be expressed in
coordinates




The definition uses an affine combination
Net effect is same: expressing a point in terms of a
basis
Thus the common practice of representing points
as vectors with coordinates
Be careful to avoid nonsensical operations


Point + point
Scalar * point
8
Affine Lines: An Aside

Parametric representation of a line with a direction
vector d and a point P1 on the line:
P(a) = Porigin + ad


Restricting 0  a produces a ray
Setting d to P - Q and restricting 0  a  1
produces a line segment between P and Q
9
Dot Product

The dot product or, more generally, inner product
of two vectors is a scalar:
v1 • v2 = x1x2 + y1y2 + z1z2 (in 3D)

Useful for many purposes

Computing the length of a vector


Normalizing a vector, making it unit-length


u • v = |u| |v| cos(θ)
Checking two vectors for orthogonality


Divide each coordinate by the length
Computing the angle between two vectors:


length(v) = |v| = sqrt(v • v)
v
Does the angle equal 90º?
Projecting one vector onto another
θ
u
10
Cross Product

The cross product or vector product of two vectors is a
vector:
 y1 z 2  y 2 z1 
v1  v 2   ( x1 z 2  x 2 z1)
 x1 y 2  x 2 y1 



Cross product of two vectors is
orthogonal to both
Right-hand rule dictates direction
of cross product
Cross product is handy for finding
surface orientation


Lighting
Visibility
11
Linear Transformations

A linear transformation:




Maps one vector to another
Preserves linear combinations
Thus behavior of linear transformation is
completely determined by what it does to a basis
Turns out any and all linear transformations can be
represented by a matrix
12
Matrices

By convention, matrix element Mrc is located at row
r and column c:
 M11 M12
 M21 M22
M
 


Mm1 Mm2


This is called row-major order
By (OpenGL) convention,
vectors are columns:

And 2-D matrices are in
column-major order!
 M1n 
 M2n 

 

 Mmn 
 v1 


v   v 2
 v 3 
13
Matrices

Matrix-vector multiplication
transformation to a vector:
applies
a
linear
 M11 M12 M13  vx 
M  v  M 21 M 22 M 23  vy 
M31 M32 M33  vz 

Recall how to do matrix multiplication
14
Matrix Transformations

A sequence or composition of linear transformations corresponds to the product of the
corresponding matrices




Note: the matrices to the right affect vector first
Note: order of matrices matters!
The identity matrix I has no effect in multiplication
Some (not all) matrices have an inverse:
M 1 Mv   v
15
3D Scene Representation

Scene is usually approximated by 3D primitives







Point
Line segment
Polygon
Polyhedron
Curved surface
Solid object
etc.
16
3D Point

Specifies a location


Represented by three coordinates
Infinitely small
typedef struct {
Coordinate x;
Coordinate y;
Coordinate z;
} Point;
(x,y,z)
Origin
17
3D Vector

Specifies a direction and a magnitude


Represented by three coordinates
Magnitude ||V|| = sqrt(dx dx + dy dy + dz dz)


Which is the square root of the dot product
Has no location (in affine spaces!)
typedef struct {
Coordinate dx;
Coordinate dy;
Coordinate dz;
} Vector;

(dx,dy,dz)
Q
(dx2,dy2 ,dz2)
Dot product of two 3D vectors


V1·V2 = dx1dx2 + dy1dy2 + dz1dz2
V1·V2 = ||V1 || || V2 || cos(Q)
18
3D Line Segment

Use a linear combination of two points

Parametric representation:

P = P1 + t (P2 - P1),
typedef struct {
Point P1;
Point P2;
} Segment;
(0  t  1)
P2
P1
Origin
19
3D Ray

Line segment with one endpoint at infinity

Parametric representation:

P = P1 + t V,
(0 <= t < )
typedef struct {
Point P1;
Vector V;
} Ray;
V
P1
Origin
20
3D Line

Line segment with both endpoints at infinity

Parametric representation:

P = P1 + t V,
(- < t < )
typedef struct {
Point P1;
Vector V;
} Line;
P1
V
Origin
21
3D Plane

A combination of three non-linear points

Implicit representation:


typedef struct {
Vector N;
Distance d;
} Plane;

N is the plane “normal”


N = (a,b,c)
N + d = 0, or
ax + by + cz + d = 0
P2
P3
P1
d
Unit-length vector
Perpendicular to plane
Origin 22
3D Polygon

Area “inside” a sequence of coplanar points






Triangle
Quadrilateral
Convex
Star-shaped
Concave
Self-intersecting
typedef struct {
Point *points;
int npoints;
} Polygon;


Points are in counter-clockwise order
Holes (use > 1 polygon struct)
23
3D Sphere

All points at distance “r” from point “(cx, cy, cz)”

Implicit representation:


(x - cx)2 + (y - cy)2 + (z - cz)2 = r 2
Parametric representation:



x = r cos() cos(Q) + cx
y = r cos() sin(Q) + cy
z = r sin() + cz
r
typedef struct {
Point center;
Distance radius;
} Sphere;
Origin
24
Download