Vectors
Provides a vector orthogonal to two others
Magnitude provides sine of angle between u
and v
|sin(theta)|=|uxv|/|u||v|
Applications to 3D Graphics
Vertex
Matrix
Identity
Rotation
Translation
Scale
Projection
Mathematics
Multiplication
Dot Product
Cross Product
Homogeneous Coordinates
In affine spaces points and vectors can be
confused
P=[x y z]T
V=[x y z]T
Instead use
Affine transformations preserve lines
Points
Point, same notation as vector. Keep track of units |
Point | Origin | |||
Specify Standard Space |
Homogenized Point. Intersection with standard plane/space Fails when h=0 |
, three equations in 3D
Point- Slope Form
m=slope, (x,y)=point 0,
L=Q+tw
Point-Normal Form
L is the line
Q is a point on the line
t is the unknown
w is a directional vector for the line
w must be from one point to another
where is
the second point
Plane Equations
p=ax+by+cz+d
Three point form
p is the plane
(cross
product)
(dot product)
p=(X-P)·v=0
Point-Normal form
X is unknown
P is point on plane
v is normal to plane
Line-Plane Intersections
Substitute for x , y, or z in 3 point form
Works well for slope intercept form
Substitute line for X in point normal form
Works well when line in point normal form
Carried out: t=(((P-Q)·v)/(w·v))w
Intersection point at: Q+(((P-Q)·v)/(w·v))w
t is time (unknown)
v, w are vectors
Q ,P,X are points
Translation Matrix
Rotation Matrix
Scaling Matrix
Simple Perspective
Projection Matrix
Mutiple Transformations
Rotate about fixed point
S=(T)R(-T)p
Instance Transformation
Multiple uses of Same object
M=TRS
Order of operations
Right to left - fewer component operations
Precalculate matrix ops
Not unique effect but resulting matrix is
Rotations relative to
another angle
Translate to origin
Rotate to align with current orientation
Rotate by specified amount
Rotate to unalign with orientation
Rotation about an
arbitrary axis
Rotate to the axis first
Apply a rotation to the rotation
Brings it into the correct frame of reference or
orientation first
OpenGL
Provides 2 Frames
Camera frame, fixed
World frame
Current Transformation Matrix
Applied to everything
Changing CTM changes state of environment
4x4 Matrix
OpenGL Matrix Operations
Replacement Matrices
glLoadIdentity()
glLoadMatrixf(pointer to matrix);
Matrix Transformations
glRotatef(angle, vx, vy, vz);
glTranslatef(dx, dy, dz);
glScalef(sx, sy, sz);
glMultMatrixf(myarray);
Rotation about a
fixed point
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTanslatef(4.0, 5.0, 6.0);
glRotatef(45.0, 1.0, 2.0, 3.0);
glTranslatef(-4.0, -5.0, -6.0);
Matrices are generated left to right
Matrix farthest to the right is applied first
Matrix Stacks
Saving of states
Transform only part of a scene
Scale a single object
Rotate a heirarchical object
Apply transformation then restore original
state
glPushMatrix();
glScalef(3.0, 4.0, 5.0);
/* Draw Scaled Object */
glPopMatrix();
Prev | Next |