CS 551/645: Introduction to Computer Graphics
Assignment #5
Goal: Understand and implement general viewing transformations
Assigned: Wednesday, October 13, 1999
Due: Friday, October 22, 1999
Relevant reading/files/software:
Synopsis: You will implement a library (libtransform.a) containing matrix routines for basic 3-D modeling and viewing operations: translation, scale, rotation about X, Y, Z, and an arbitrary axis, and a "look at" operation for setting camera pose.
Specifics: We are providing a header file transform.h defining function prototypes for the library; you will have to fill in the source code for those functions. We will also provide a file gfx.c with functions for rendering simple objects into an XForms glCanvas using a viewing matrix you specify, and a matrix library (matrix.h and matrix.c) with some handy functions which assume row-major matrices. (Makefile was last modified at 3:40PM on Oct 14. matrix.h and transform.h were last modified at 6:40PM on Oct 18. gfx.c last modified at 3:05PM on Oct 21. matrix.c was last modified at 9:20PM on Oct 19.) For debugging purposes, you may wish to modify your demo from Assignment 1 using the new functions. We also provide the usual Makefile. Note:
lookat(). This function takes a viewpoint for the camera location, a lookat point that the camera is looking at, and an up vector that specifies what direction should correspond to the +Y axis on the screen. lookat() function using only calls to the other functions in your library. No setting the matrix elements directly in the lookat() function. setmatrix() sets the matrix used by OpenGL to encompass all modeling and viewing transformations. lookat() function, and the resulting matrix should not change the scale.Grading: NOT the usual 10-point scale. Only correctness will be graded; speed will not be taken into account. Any completely correct assignment will thus get 10 points.