Due: Friday, May 5, 2017, 11:59 pm

3D Scenes

The assignment this week has two parts. First (task 1 - 3), demonstrate use of the 3D turtle and build some interesting 3D shapes. Second (task 4), 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 four new 3D shape classes, like a box or a house. Use strings, just like you did for the square and triangle classes. You can use parameterized strings, which should make the task easier.

    An image with examples of all of your 3D shapes is required image 1. In this image, demo at least 2 different styles.

  2. Make at least one of your functions recursive. These functions can be the required methods of your classes or the methods for your extensions.

    Screenshots of these functions should be included in your writeup.

  3. Make a 3D scene that incorporates your shapes. Your scene can be abstract, artistic, or realistic. Try to maximize the complexity of the scene, while minimizing the amount of code you have to write. For this task, spend some time thinking about your design before you start to code. Talk about your design in your writeup. Note that complexity may not mean lots of objects. Having lots of small stuff will slow down the interactive viewing.

    Two images of your scene from different points of view are required images 2 and 3.

  4. Do something interesting within this context. Make sure you have a clear description of the task. Design a solution you think will work and then implement the solution. The difficulty of the task is not necessarily as important as following a structured process so you understand what the computer needs to do and how to do it. The design of your solution should be part of your writeup. Note: you can choose something from the list of extensions, if you would like. If you are wondering how we will grade it, then keep this is mind: we don't simply count the number of extensions you do. We look at the quality. If this task allows you to do something spectacular, then it may get you over the 25/30 mark.

    An image demonstrating your improved code is required image 4.


Write-up and Hand-in

Turn in your code by putting it into your private hand-in directory on the Courses server. All files should be organized in a folder titled "Project 11" and you should include only those files necessary to run the program. We will grade all files turned in, so please do not turn in old, non-working, versions of files.

Make a new wiki page for your assignment. Put the label cs151s17project11 in the label field on the bottom of the page. But give the page a meaningful title (e.g. Ying's Project 11).

In general, your intended audience for your write-up is your peers not in the class. Your goal should be to be able to use it to explain to friends what you accomplished in this project and to give them a sense of how you did it. Follow the outline below.

To check whether you've made your code snippets and the associated text clear, you may ask yourself the following questions:

© 2017 Ying Li. Page last modified: .