Computer Graphics (CS 4300) 2010S: Lecture 2
Today
- HW1 due next class meeting!
- coordinate frames
- segments, rays, and intersections 2D
Coordinate Frames
- components of an -dimensional vector define a point in an -dimensional coordinate frame as a linear combination of the -dimensional basis vectors defining the frame
- linear combination is computed as
- same as product of a matrix and a vector:
- (general multiplication and its uses in graphics will be covered later in the course)
- technically, any set of -dimensional vectors can form a basis for an -dimensional frame as long as they are linearly independent
- orthonormal bases are of particular interest: all and for all
- an orthonormal basis defines a Cartesian frame
- “standard” basis is
- , so
- note this is right-handed; if we had defined instead, it would have been left handed
- there are always exactly two options for the “handedness” (chirality) of a 3D orthonormal basis
- right-handed coordinate frames are typical in graphics, but not totally universal
- it is often useful to define other local coordinate frames with arbitrary pose relative to the standard global frame
- pose of an object is its position plus its orientation
- we will cover this more formally later, but basically, the pose of a local frame is defined by the location of its origin and an orthonormal basis
- all of these are vectors in the global frame
- the matrix defines the orientation of the local frame
- to transform a vector from the local to the global frame, compute
- note this does not change the magnitude of the vector, only its direction
- this is because the columns of are orthonormal
- since a vector is technically only a magnitude and a direction, with no specific “place in space”, no need for in this operation
- to transform a point or location from the local to the global frame, compute
- going the other way: to transform a vector from the global to the local frame, compute
- this uses the fact that the inverse of an orthogonal matrix is its transpose (show easy derivation from above eqn for )
- note this is the same as computing , as in the text
- transforming a point or location from the global to the local frame: solve above eqn for
- note this is not the same as
- there are algorithms to “square” up a set of vectors to ensure they are orthonormal
- also sometimes required to construct a basis given only two or one vector
- if given two non-parallel vectors, use cross product to produce third, and square up if necessary
- if given only one vector, first find some other non-parallel vector, then proceed as above
Rays and Segments
- points have already been discussed: an -dimensional vector can be used to represent a point in dimensions by giving a displacement relative to the origin in some coordinate frame
- a ray is a continuum of points starting at some location and continuing in a straight line to infinity
- can be represented as a start point plus a unit vector giving the direction of the ray
- def works in any dimension
- a line segment, or just a segment, is the continuum of points along a straight line between two given locations
- usually represented as the two endpoints, typically identified as start and end
- can also represent as start and a displacement from there to end
- easy to convert:
- either def works in any dimension
- can define the “left” and “right” sides in 2D: stand at and face along
- on what side of the segment does a given point fall?
- compute component of , extending each to 3D with :
- (note that and components of cross product of any two vectors each with will be 0 anyway)
- if positive, is on left of segment
- if zero, is coincident with line through segment
- if negative, is on right of segment
- this can be used e.g. to pick triangles in the plane
- unit normal can also be used to answer this question (we will see this when studying line equations and the signed distance from a point to a line)
- can parametrize points along the segment as where
- intersection of two 2D segments:
- two linear equations in two unknowns
- rearranging into standard form,
- can solve for and (carefully):
- e.g. use Cramer’s rule, watch out for “no solution”
- same result can be derived using law of sines and cross product
- let
- law of sines:
- treat , , and as 3D vectors with
- thus, the magnitude any cross product will be just the z component
- let
- let
- let
- similarly,
- if segments are collinear
- segments intersect iff
- same math works for segment/ray and ray/ray intersection, except the condition for the ray(s) is that
Next Time
- HW1 due!
- lines in 2D
- “triangle asteroids” example
- output devices
- reading on website