CS 151: Project #11

### Project 11: 3D Scenes

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 four 3D shape classes, like a box or a pyramid. Use strings, just like you did for the square and triangle classes. However, you can now use parameterized strings, which should make the task easier.

An image with examples of all of your 3D shapes in 2 different styles is required image 1.

2. 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.

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

3. Pick an extension. 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 followed 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 write.

An image demonstrating your extension is required image 5.

### Extensions

• Design multiple 3D, parameterized L-systems.
• Pick an NPR style you like but have not yet implemented. Try Jackson Pollack, for example.
• Make your scene an aggregate shape and demonstrate that you can create several instances of your scene of different sizes and location.
• Pick some semi-complex shapes and create efficient designs for them. Wire frame geodesic spheres, or dodecahedrons, for example, are interesting shapes with lots of regularity to them.
• Use the 3D turtle to create an interactive tool for creating L-systems.
• The 3D turtle allows you to attach a function to the right mouse button. Whenever the user clicks the right mouse button in the window, the function gets called. How could you use this to make an interative program? (Try running the 3D turtle python file directly and use the right mouse button.)
• 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.

### Writeup

Make a new wiki page for your assignment. Give the page a useful title using English words. Put the label cs151s10proj11 in the label field at the bottom of the page. Each of you needs to make your own writeup.

In addition to making the wiki page writeup, put the python files you wrote on the Academics server in your handin directory.