Assignment 3 - 3D Transformations
CS5600 - Introduction to Computer Graphics
ACTUAL DUE DATE: Due Wednesday, 22 March 2006, 23:59 hours
Overview
This project builds on your previous projects to implement three dimensional
transformations.
Project Requirements
The following are requirements for the project.
- Multiple Objects: Create a scene with
at least two 3D objects, drawn in wireframe. One of these objects must
be a cube with coordinates (+-1, +-1, +-1); other objects are your
choice.
- Transforms: All transforms should be
preformed on individual objects without changing the rest of the objects in
the scene. Every transformation matrix should be assembled by you (i.e., do not
use GL/GLUT to create matrices, or transform any object). There should be an
option to print out the current transformation matrix being used. The
transformations should be composited such that more than one transformation can
be applied to a single object.
- Rotation. Rotate around the center
of a selected object. Also include an option to rotate the selected
object around a specified point in the scene.
- Scale. Scale a selected object by a specified factor. The
user interface should have options for a uniform scale as well as scales along
the x, y, and z axes.
- Translation. Allow the selected object to be
translated along the x, y, and z axes.
- Shear. Shear the selected object vertically or
horizontally by a specified factor. The user interface should have options for
horizontal or veritcal shear, as well as modifying the shear factor.
- Reflection. Reflect the selected object along a specified
coordinate axis. Reflection along an arbitraty axis is not required, but may
be implemented for extra credit.
- Toggle between orthographic and perspective projection. The
perspective projection should assume a 90 degree field of view in both
directions. All objects will be viewed using the same projection.
- Clipping Planes: Add top, bottom, left, right, near and far
clipping planes. The planes should orient according to type of viewing
projection. Thus, for orthographic projection, the planes form a rectangle,
while in perspective they form a truncated pyramid. The user should be able to
move the clipping planes.
- Draw the cooridnate axes.
- User Interface. The User Interface should
provide nice ways to perform the following:
- Object selection
- Specify angle of rotation
- Specify rotation about center of object or specific point
(allow user to input the point)
- Specify uniform scale factor and scale factors along each
axis
- Specify translation factors along each axis
- Print out the transformation matrix. This can be just the
matrix used to get the object from its current position to its new position,
or the combination of matrices used to get the object from its starting
position to the current position, but please document how you choose to do
this.
- Reset objects to their original size, position and orientation.
This can be a global or local operation (reset individual objects
or all of them).
Documentation: Briefly explain what your program does and
how to operate it. In addition, describe all data structures, major functions,
user interface and the program's flow of cntrol. Also document any known bugs
and any areas of the assignment you had problems with.
Turn in all your code and documentation using submit into the
directory called assign3Linux for Linux assignments or
assign3Windows for windows assignments (i.e. submit cs5600
assign3OS file1 file2...). Your code should be written in
C/C++, however you may choose to develop on Windows or Linux. Be sure to hand
in your MSVC project or your Makefile and that there are no problems running
your code.
Resources
There is a link to a matrix library you are welcome
to use if you wish. Include these .h files with your project. Everything should
be self explanitory in the code.