This assignment gives you the opportunity to learn about common graphics uses of fractals and curves and surfaces. These are used in design of Engineering devices, movie scene backgrounds, and several other environments.

The following list is tentative at the current time. As the due date nears, I will add required marks and point values.

Required Description Point Value
* Render the Mandelbrot Set fractal. Allow the user to “zoom in” on select portions via mouse interaction. This is most interesting when you allow the user to select an axis-aligned new region. See Appendix A in text (A.14 specifically). 15
  Do the above Mandelbrot set in some order other than top down, left to right i.e. solve for every 4th pixel on every 4th row. Then solve for every other pixel. Then fill in the blanks. Render each intermediate step. This makes the algorithm much more interactive! 10
* Modify the Bezier application found here 15
  Create a UI so that the user can select a control point and change its weight. 5
  Optional Fractals Portion  
  Create a 3D fractal terrain. Make it so that a key press creates a new terrain every time. Add a “water plane” that cuts anything off that goes below the water line. Color the vertices different values depending on their height so that mountain peaks are white and valleys are green. Throw in some brown in between! 10-20
  Implement Julia Set fractals. Give them the same interaction as the Mandelbrot set. 10
  Create fractal clouds 10
  Create fractal trees. Make them 2D or 3D. Better results receive better scores! 10-20
  Draw the Serpinsky gadget fractal in 2D. Allow the user to refine how many recursions are allowed. See Appendix A of text. 10
  Draw the Serpinsky gadget fractal in 3D. Allow the user to refine how many recursions are allowed. Allow the user to rotate and zoom around it on a sphere (see assignment 2). See Appendix A of text. 10
  Create a fractal snowflake 10
  Create any of the fractals found on or linked to from the following webpage. Points depend heavily on coolness.
http://www.miqel.com/pure-math-patterns/visual-math-iterative-fractals.html
10
  Curves and Surfaces Portion  
  Implement DeCastelJou’s Algorithm. Allow the user to input a value between 0..1 and then cut there. 15
  Implement degree elevation. Show side-by-side comparisons of the original and the degree elevated Beziers. 15
  Using blossoming, extract and render the Beziers in a degree 3 B-Spline. 25
  Draw the convex hull around your each of your Bezier curves. 10
  Given a set of 3D input points on a control polygon, extract and draw the 3D Bezier surface defined. You should be able to extract per-vertex normals if you use DeCastelJou subdivision, allowing for Gouraud shading. 20-40
  Implement any of the other curves mentioned in the Sederberg text: Timmer, Ball, or Overhauser curves. Make these curves similar in draw-style and input-style to the Bezier example provided (or do better!) 15 (each)