Computer Science 102 Major Program 2 Due 24 April 11:59PM LAST DAY - 27 Apr 11:59 PM Adhere to the following programming standards. Violations will lead to deductions. (1) no function should be longer than 30 lines code + whitespace. (2) the maximum nesting level in any function is ONE (3) code lines should not extend beyond column 72 (4) no more that one statement may be written on a single line (5) use reasonably descriptive names for variables and functions (6) package all functions into a single source code module named camera.c (7) your program should compile without any warnings with gcc -Wall (8) indenting should be consistent with logical nesting (9) diagnostic / debug prints should be disabled/deleted in your submission. This is the evaluation regime for mp2. The numeric column is the number of points associated with providing a working version of the component. Providing a NON-WORKING version of any component is discouraged and will lead to deductions (definitely worse) than not implementing the feature at all). ------- Required Features ------------------- Ambient lighting with planes & spheres 50 50 Diffuse lighting / shadows 10 60 ---------Optional Features-------------------- Finite plane 5 65 Textured planes 5 70 Spotlights 5 75 Projecting textures 5 80 Specular reflection 5 85 Specular glints 5 90 Anti-aliasing (makefile configurable) 5 95 Tiled infinite plane of arb orientation 5 100 Transparency 5 105 A non-quadric revsurf 5 110 --- Possible 110 You do NOT have to implement the optional features in the order shown ... any order is OK. (But some features pretty much have an implied order (e.g. finite planes, textured planes, projecting textures)) Note that implementing all features will give you a score of 110/100 (i.e. 10 points extra credit) mp2 will also have a "mymodel.txt" component that will be worth upto an additional 10 points. Thus a "perfect" total score is 110 but it is possible to score as high as 120. ----------------------------------------------------------------- What you MUST submit is a SINGLE FLAT directory. No .tars and no subdirectories. The SINGLE FLAT directory must include: (0) the code and a makefile that will build your raytracer. (1) mytracer.txt. In this file you must identify the features that you believe work. For example if my raytracer only does basic stuff + finite planes and spotlights I would submit the following. _x_ Finite plane ___ Textured planes _x_ Spotlights ___ Projecting textures ___ Specular reflection ___ Specular glints ___ Anti-aliasing (makefile configurable) ___ Tiled infinite planes ___ Multiple non-quadric revsurfs If you don't claim a particular capability, there will be no deduction if said capability doesn't work. If you DO claim a capability and it doesn't work that will lead to NEGATIVE credit. (2) mymodel.txt In this file you must provide an input file that demos the best features of your raytracer. It should create an image that contains all of the features listed in your mytracer.txt file. IF YOUR mymodel.txt requires textures you (a) MUST include them (b) THEY must live in your submission directory (c) YOUR mymodel.txt file must NOT refer to textures in other directories THE ONLY WAY TO ENSURE that this is the case is to TEST on jmw! (3) myextensions.txt If you invent new stuff such as textured spheres describe what you have done. Any such descriptions should (a) make clear where the source code lives (b) evident in the image produced by mymodel.txt