This project is a series of 5 assignments which incrementally teach the students about Ray Casting. Ray casting is a simulation and approximation of light traveling from a virtual object (for this project, a sphere) to a virtual eye that can be used to generate a three-dimensional image.
The project emphasizes functional decomposition through the topics of data aggregation, loops, lists/arrays, conditional statements, and functions.
The provided project.zip file includes a folder for each project milestone. Within each folder is an html document that presents the objectives and requirements for that milestone (often referencing the included images).
Each assignment in this project builds on the prior. In essence, the project exposes students to the functional decomposition process through bottom-up implementation of a decomposed problem. The early assignments require the implementation of prescribed sets of functions, whereas the later assignments provide fewer specific about how the functionality should be decomposed. Each of the assignments uses the functionality implemented in the prior assignment.
The assignments vary in difficulty and conceptual complexity. I assign these as part of an introductory course, so the material is fresh at each step. As such, the time given for each assignment is between one and two weeks. The first two assignments are allocated about one week each. The fourth assignment is certainly the most challenging and time consuming (broken into multiple parts), but also the most rewarding in that the work results in various 3D images (this is generally a two-week assignment). The third and fifth assignments are allocated approximately 1.5 weeks each.
This project makes interdisciplinary connections as it exposes students to a real-world application that bridges computing with the visual arts through the creation of a three-dimensional ray caster.
Ray casting is a simplified version of ray tracing (e.g., ray casting removes the computational complexity of reflection). When using this material, I motivate the problem at the beginning of the term by presenting photo-realistic images produced via ray tracing and discuss the uses of this technique in movies and other computer graphics domains. Such examples include some stunning images available on wikipedia, highlights from Pixar as relates to, e.g., Cars, and more general discussions of the applicability of this technique in various industries.
The submitted materials include an overview discussion of the uses of ray tracing (casting) and its application to various disciplines.
Materials and Links
Computer Science Details