Title: Geometric Objects and Transformations
1Geometric Objects and Transformations
2Points, Scalars and Vectors
- Points - position in space
- Scalars - real numbers, complex numbers obey a
set of rules that are abstractions of arithmetic
store values such as distance - Vectors - directed line segment
3Vector Arithmetic
- B 2A
- C A B
- Head to tail rule
- E -A
- Inverse
- Zero vector E A
4Point Arithmetic
- Cant add p1 p2 p3
- Cant multiply p1 2 p2
- What can you do to produce a 2nd point from a
1st? - p1 V p2
- V p2 - p1
5Important Vector Concepts
- Normal Vector
- A vector at a right angle to a surface.
- Graphics Usage of Normal Vector
- Used to figure out similarity of direction which
is necessary for lighting - More precisely, how much light should fall on a
surface is calculated by the similarity of the
surface normal and the vector between the light
source and the surface. - Similarity of direction vector dot product
6(No Transcript)
7Vector Dot Product
- For vectors of length 1 (unit vectors), the dot
product is the length of the projection of one
vector onto the other. - If the dot product
- 1 the vectors point in the same direction
- 0 the vectors are at right angles
- -1 the vectors point in opposite directions
8Vector Cross Product
- The cross product of two vectors A and B is
another vector at right angles to the plane
created by A and B
9Defining a Coordinate Space
- Need to know
- The origin (or displacement vector)
- The basis vectors - The direction and distance
for 1 movement along each axis - This definition is relative
- To plot a point
- Begin at origin
- Travel along the x basis vector direction
scaled by x coord, then along the y basis vector
scaled by the y coord, then finally along the z
basis vector scaled by the z coord.
10Transformations
- Prior to rendering view, locate and orient
- eye / camera position
- 3D geometry
- Manage the matrices
- including the matrix stack
- Combine (composite) transformations
11Camera Analogy
12Stages of Vertex Transformation
13Transformations
- 45-degree counterclockwise rotation about the
origin around the z-axis - a translation down the x-axis
14Order of Transformations
glMatrixMode(GL_MODELVIEW) glLoadIdentity() glMu
ltMatrixf(N) / apply transformation N
/ glMultMatrixf(M) / apply transformation M
/ glMultMatrixf(L) / apply transformation L
/ glBegin(GL_POINTS) glVertex3f(v) / draw
transformed vertex v / glEnd()
- transformed vertex is NMLv
15Translation
- void glTranslatefd (TYPE x, TYPE y, TYPE z)
- Multiplies the current matrix by a matrix that
moves (translates) an object by the given x, y,
and z values
16Rotation
- void glRotatefd(TYPE angle, TYPE x, TYPE y,
TYPE z) - Multiplies the current matrix by a matrix that
rotates an object in a counterclockwise direction
about the ray from the origin through the point
(x, y, z). The angle parameter specifies the
angle of rotation in degrees.
17Scale
- void glScalefd (TYPEx, TYPE y, TYPEz)
- Multiplies the current matrix by a matrix that
stretches, shrinks, or reflects an object along
the axes.
18Vectors
1 2 3 2 3 5 3 4 7
19Matrices
- Rectangular array of numbers
- A vector in 3 space is a n x 1 matrix or
column vector. - Multiplication
1 0 0 0 0 1 0 0 x 0 0 0 0 0
0 1/k 1
Cos a 0 sin a 0 0 1 0 m -sin a
0 cos a n 0 0 0 1
20Matrix Multiplication
- A is an n x m matrix with entries aij
- B is an m x p matrix with entries bij
- AB is an n x p matrix with entries cij
- m
- cij ?ais bsj
- s1
212D Transformations
- Translation Pf T P
- xf xo dx
- yf yo dy
- Rotation Pf R P
- xf xo cos? - yo sin?
- yf xo sin? yo cos?
- Scale Pf S P
- xf sx xo
- yf sy yo
22Homogeneous Coordinates
- Want to treat all transforms in a consistent way
so they can be combined easily - Developed in geometry (46 in cambridge) and
applied to graphics - Add a third coordinate to a point (x, y, w)
- (x1, y1, w1) is the same point as (x2, y2, w2) if
one is a multiple of another - Homogenize a point by dividing by w
23Homogeneous Coordinates
- 1 0 dx x
- 0 1 dy y
- 0 0 1 1
- 1 x 0 y dx 1
- 0 x 1 y dy 1
- 0 x 0 y 1 1
24Homogeneous Coordinates
- 1 0 dx x
- 0 1 dy y
- 0 0 1 1
25Homogeneous Coordinates
- sx 0 0 x
- 0 sy 0 y
- 0 0 1 1
26Homogeneous Coordinates
- Cos? -sin? 0 x
- sin? cos? 0 y
- 0 0 1 1
27Homogeneous Coordinates
- 1 0 0 x x
- 0 1 0 y y
- 0 0 1 1 1
- Identity Maxtrix x point p point p
28Combining 2D Transformations
- Rotate a house about the origin
- Rotate the house about one of its corners
- translate so that a corner of the house is at the
origin - rotate the house about the origin
- translate so that the corner returns to its
original position
29OpenGL Buffers
- Color
- can be divided into front and back for double
buffering - Alpha
- Depth
- Stencil
- Accumulation
30Double Buffering
31Animating Using Double Buffering
- Request a double buffered color buffer
- glutInitDisplayMode (GLUT_RGB GLUT_DOUBLE)
- Clear color buffer
- glClear(GL_COLOR_BUFFER_BIT)
- Render Scene
- Request swap of front and back buffers
- glutSwapBuffers()
- Repeat steps 2-4 for animation.
32Depth Buffering
333D Coords --gt Raster coords
- Transformations
- Clipping
- Viewport transformation.
34GLUT Solids
- Sphere
- Cube
- Cone
- Torus
- Dodecahedron
- Octahedron
- Tetrahedron
- Icosahedron
- Teapot
35glutSolidSphere and glutWireSphere
- void glutSolidSphere(GLdouble radius, GLint
slices, GLint stacks) - radius - The radius of the sphere.
- slices - The number of subdivisions around the Z
axis (similar to lines of longitude). - stacks - The number of subdivisions along the Z
axis (similar to lines of latitude).
36glutSolidCube and glutWireCube
- void glutSolidCube(GLdouble size)
- size length of sides
37glutSolidCone and glutWireCone
- void glutSolidCone(GLdouble base, GLdouble
height, GLint slices, GLint stacks) - base - The radius of the base of the cone.
- height - The height of the cone.
- slices - The number of subdivisions around the Z
axis. - stacks - The number of subdivisions along the Z
axis.
38glutSolidTorus and glutWireTorus
- void glutSolidTorus(GLdouble innerRadius,GLdouble
outerRadius, GLint nsides,
GLint rings) - innerRadius - Inner radius of the torus.
- outerRadius - Outer radius of the torus.
- nsides - Number of sides for each radial section.
- rings - Number of radial divisions for the torus.
39glutSolidDodecahedron and glutWireDodecahedron
- void glutSolidDodecahedron(void)
40glutSolidOctahedron and glutWireOctahedron .
- void glutSolidOctahedron(void)
41glutSolidTetrahedron and glutWireTetrahedron
- void glutSolidTetrahedron(void)
42glutSolidIcosahedron and glutWireIcosahedron
- void glutSolidIcosahedron(void)
43glutSolidTeapot and glutWireTeapot
- void glutSolidTeapot(GLdouble size)
- size - Relative size of the teapot.
44Homework
- Project part 2 due 2/19
- Turn in a program that, at a minimum, draws your
initial scene.