CS 151: Project #12

Project 12: Extending Your Drawing System

Main course page

The assignment this week has two parts. First, demonstrate use of the 3D turtle and build some aggregate (interesting) 3D shapes. Second, pick one significant extension of the system and design and implement your own solution. The list of extensions given below is not all-inclusive, and you should feel free to pick your own. The key is to demonstrate how you can define a task, design a solution, and implement the solution so the computer can complete the task. Efficient and elegant solutions are the optimal outcome.


  1. Make at least two aggregate 3D shape classes (3D shapes made out of other shapes). Make test scenes that demonstrate each of the objects individually.

    Grab a screen shot of your scene and include it in your writeup.

  2. Make a 3D scene that incorporates your shapes. Choose whether to make an abstract, artistic, or realistic scene. Then try to minimize the amount of code you use to make the scene by making use of lists, loops, and computations.

    Grab a screen shot of your scene and include it in your writeup.

  3. Pick an extension. Describe the task carefully to yourself. Design a solution you think will work. Implement the solution. The difficulty of the task is not necessarily as important as following a structure process so you understand what the computer needs to do and how to do it.


  1. Pick an NPR style you have not yet implemented and design and implement it. Jackson Pollock's style of spatter painting, for example, might be interesting to try.
  2. Pick a few semi-complex shapes and create efficient designs for them. For example, how could you build a wire frame geodesic sphere?
  3. The turtle allows you to attach a function to the right mouse button. Whenever the user clicks the right mouse button, the function is called. How could you use this to make an interactive program? Note that you are free to add callbacks for the middlemouse button and button motion. Look in the 3D turtle python file for the details.
  4. Design a generic shape class that reads its string from a file. See if you can combine this with some interactivity so the user can edit a string and then look at the result immediately.

Code Handin

Hand in your code for this assignment using the Moodle drop box. There will be a drop box for each week's assignment. Hand in your python code file. If there are any specific images required for your system to work, zip them up with your code file.

Please do not place code anywhere public. Do not include it in your writeups on the wiki, for example.


Each of you should create your own wiki page for your writeup. The writeup can be brief, but should include the following components.

  1. A brief abstract (200 words or less) describing the project.
  2. A more detailed description of what you did. This week, focus on the problem you selected, how you planned your solution, and how you implemented it.
  3. Include any images or other output your program created. For this project, include screen captures of your scenes.
  4. Describe any extensions you implemented and show results for them.
  5. Give a brief (1 paragraph) description of what you learned.

Colby Wiki

Please put the label cs151s09proj12 on your writeup page (down below the editing window on the edit tab). Please make sure you type the label exactly as given above.