Transformations and Viewing

The first part of the assignment is to build a matrix library as
outlined in the system
specification The matrix library is a set of 2-D and 3-D matrix
and vector functions. There are lots of functions, but most are
fairly simple.

To test the non-view parts of your library, you can run the
test5a.c test file. To help you debug,
here is a listing of the output of the
program when it is run with the command test5a 30 -60. (Note,
with this command there is a component of the image that goes outside
of the image, so you must catch that, somehow.)

You can also use this code to run a more
thorough test on almost all of your matrix and vector functions.

The second part of the assignment is to create a 2D view matrix
function and demonstrate that it works using the test function
test5b.c, with output
test5b.txt.

The third task is to create a 3D view matrix function and demonstrate
it works using the test function test5c.c. The
output of the program is here for a command
line argument of 0.0 and here for a command
line argument of 1.0.

Make a 2D scene of your own. It does not need to be complex. Make a
sequence of at least 10 images where your view both pans and zooms (in
or out) across the scene. Create an animated gif from your scene.
This could be one of your portfolio images.

Make a 3D scene of your own. It does not need to be complex. Make a
sequence of at least 10 images where your view moves relative to the
scene. You do not need to adjust any parameters except the VRP
(location) and VPN (orientation) of the view. Create an animated gif
from your scene. This could be one of your portfolio images.

Extensions

Create more scenes, or do something more complex with your required
scene.

Create interesting animated gif movie sequences.

Create complex scenes using simple code.

Create 3D effects using filled polygons of different shades.

Implement some kind of anti-aliasing algorithm.

Put the whole scene over a cool outer space background.

Spacequake!

Writeup

Make a wiki page and give it the label cs351s17project5. Put up your
required and portfolio images along with brief descriptions and
relevant information.

Handin

Put your code on the handin server in a project 5 directory in your Private folder.