The goal of this homework is to create a new class derived from the cs4731app class. This class must provide a series of methods (the implementation) for the miniglut class to call when events are generated. Four example classes (bounce, gears, evil and stars) are provided so you can see how to do the derivation and learn how to draw things onto the screen (using pseudo-pure OpenGL calls).
Your app should draw a 3D picture of a vehicle designed for space travel (real or imaginary). The rendering does not need to be 100 percent accurate, but must be a 3D solid. Points will not be based on artistic talent, but points will be deducted for lame, or overly simplistic, geometry. The best place to start would be to copy the bounce or gear files and then replace the draw method with your own routines. Please make sure the class that you create is called hw01 and that the gears, bounce, evil, and stars are included (and will run) with what is submitted.
Provide appropriate methods to generate primitive shapes (such as cubes and spheres -- see bounce) to make your modeling task easier. The best approach is to break the model down into smaller pieces or components. Write a routine to draw the component, and then link the components together. Try to re-use as much code as possible: for instance, an engine routine would take parameters to generate a single engine. Call the routine again to generate other engines on different sides of the main body.
Requirements:
The homework is due at the start of class on Friday, September 7.
As is your goal for most assignments, you will be augmenting provided base classes. The base classes, as well as several other useful classes can be found in /cs/cs4731/software/demos.
You will submit a tar file containing all of the source code, a Makefile and a README file. The source code must compile (and run) on a CCC machine. Feel free to develop on any platform you like (the code will compile and run on windows), just make sure things run on CCC before submitting. The program should compile when make is invoked on the command line in the directory with your code. Submissions which do not compile when make is typed, or do not run successfully, will not be graded and given 0 points.
The README file should contain an extensive description of what you are handing in, the layout of your code (what you have changed, what files you are submitting, and a discussion of the overall algorithm). This README file will count towards your grade. Submissions without a README or submissions with a worthless README will not be graded and given 0 points.
Capture an image of your window/model using xv. Save that to a file called yourlastname.jpg.
Submittal will be made using the turnin program. Here are the commands (on CCC) you will use for a submittal:
Each homework assignment is graded on a 10 point scale (this is 10 points towards your final grade). 6 points will be graded for functionality: the program does what the assignment requests. 2 points will be based on documentation in the README, and 2 points will be based on the quality of your design and coding style.
You will loose 1.5 points for handing the assignment in late. The late period for each hw is always until the start of class on the following Monday. Any assignment not handed in by Monday is a zero.
Since a grade of 0 will be given if the code does not compile and run, it is in your best interest not to submit anything until you have completely tested and evaluated what you have written.