COM1370 Project Topics - Spring 2003 - Prof. Futrelle

Version of 25 March 2003

The general procedures as to how to proceed with each project, when what to hand in and in what form, can be found in the general project document as well as the detailed explanation of how you'll choose your projects, set up your on-line reports, etc.

#101. Scan conversion for triangles
Implement the efficient scan conversion algorithm of Sec. 3.6.3 for general polygons. Work on the special cases also. In addition fill with a texture. Also scan convert rotated and translated copies of the polygon, altering the edge table ordering accordingly.
#102. Phong and Warn shading
Do Phong and Warn shading for a single light source and simple, 3D polyhedron. Do for a rotated copy too, that will have a different angular relation to the light source.
#103. 2D line and polygon clipping
Develop your own clipping routines to your own "window" within a system-drawn window. Explore at least two distinct algorithms. Show that the clipping works, by translating and rotating the lines and polygon. Fill the clipped polygons using the built-in procedures.
#104. Bézier fonts
Interactively design and draw some characters with curved boundaries and holes, and fill. (Use built-in Java 2D fill.) Create italicized versions using a shearing transform. Also rotate the characters 90°. Create at least three distinct characters, each in two "font styles".
#105. Hierarchical transforms
Implement 2D hierarchical structures so that when a containing shape at some point in the hierarchy is transformed, the contained shapes are too, e.g., rotations, translations, scaling. That is, the transforms are propagated down the hierarchy.
#106. 3D objects
Display 3D objects as wire frames and filled. Can do hidden surface decisions using backface detection as objects are rotated in space to discrete positions. Use both triangular and quadrilateral facets.
#107. Transforms library
Build and document a library or 2D or 3D transforms that anybody could use. Create a carefully described API using Javadoc. Apply the library to some 3D triangular wire frame facets.
#108. Perspective views
In 3D, of course. Construct a static wire frame object. Show camera views from various angles, distances and magnifications.
#109. Hidden surface removal
Create a system that can deal with convex polyhedra that can occlude one another. Use built-in filled poly calls. Create a scene with at least two such polyhedra. Show how occlusion changes when one object is transformed.
#110. Build your own windowing system
Build a system to show at least two overlapping windows with line graphics, including window selection, shrink to icon, window dragging. Transform the collections of lines. (Do simplest line clipping.) The entire system can be "simulated" by drawing in a containing window.
#111. "Master objects"
Build a system that allows a user to select and place copies of objects, e.g., pieces of furniture. Placement should also allow rotation through multiples of 90°.
#112. Engineering drawing
Display three wireframe views of the same object, using a single underlying representation and transforms.
#114. Exploded views
Show exploded view of an object, including light lines connecting to original position, e.g., a table with four legs. Allow user to vary explosion amount from zero on up.
#114. Create your own menus
Using a window within a window, create menus that do something such as change colors, shapes or positions of objects. Do not use the built-in menu facilities of Swing. At least one menu item should trigger a rotation, translation action.
#115. Depth cueing
Using a fixed 3D scene, shade to reduce contrast with increasing depth. Use transforms to "shrink" objects farther away as a simple approximation of perspective.
#116. Ray tracing
Use at least two reflecting spheres and textured surfaces on the boundaries of the volume holding the spheres.
#117. Multiple illumination sources
Uniform shading of built-in polygons. Show how the illumination changes as the objects are translated and/or rotated and as the light sources are moved.

Go to COM1370 home page

Return to Prof. Futrelle's home page