Computer Science 102 Short Program 6 Due 5 April 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. In this assignment you will implement the finite rectangular plane C++ raytracer. Use the following class definition. class fplane_t: public plane_t { public: fplane_t(); fplane_t(FILE *, model_t *, int); virtual double hits(vec_t *base, vec_t *dir); virtual void dumper(FILE *); protected: vec_t rothit; /* last rotated hit point */ double dims[2]; private: mat_t rot; /* rotation matrix */ vec_t xdir; vec_t projxdir; /* xdir projected onto the plane */ }; In addition to the xdir vector and dims value the dumper should print the projected xdir and the rot matrix