Computer Science 102 Short Program 2 Due 1 February 11:59PM For this program the ONLY authorized source of assistance is Dr. Westall or the TA's. ANY OTHER DISCUSSION of the program no matter how "high level" or "peripheral" (e.g. Have you started/finished it yet?) is STRICTLY FORBIDDEN. Any student who observes improper behavior is encouraged to report it to Dr. Westall. Reports that can be verified will be rewarded with a 20 point bonus on the assignment for the student doing the reporting and an F for the course for the student being reported!! 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. The assns/sp2 subdirectory contains a sample main1.c, the file model.c along with header files ray.h rayhdrs.h rayfuns.h and a makefile. DO NOT MODIFY ANY OF THESE FILES!!! You will supply list.c, and vector.h from previous work. You do not need camera.c for this project. You will write material.c in this assignment. Sample input and output files are sample.txt and sample.out Please ensure your output is at least as nicely formatted as sample.out. As before, ALL output MUST go to the stderr file. Your program must build correctly when you enter the command make Your material.c file will contain three functions: /* Create a new material description */ void material_init( FILE *in, model_t *model, int attrmax); This function is analogous to camera_init(). It is correct for a material specification omit 1 or 2 of ambient, diffuse, specular attribute types. Unspecified attributes must be initialized to 0.0. This function MUST put the newly created material_t structure on the materials list pointed to by the model structure. /* Produce a formatted dump of the material list */ void material_dump( FILE *out, model_t *model); This function is also analogous to its camera_dump counterpart. Ambient, diffuse and specular reflectivities should be printed. /* Search the material list looking for a material */ /* having the specified color name. If found, */ /* return the address of the material_t structure */ /* If not, found return NULL */ material_t *material_search( model_t *model, char *name); // e.g. orange This function must search the material list and see if any material has the same name as the string pointed to by the parameter "name". If so it must return the address of that material_t. If not it must return NULL.