Objectives
The assignment this week has two parts. First, demonstrate use of the
3D turtle and build some 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.
Tasks
-
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.
-
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.
-
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 solution is required image 4.
Extensions
-
Design multiple 3D, parameterized L-systems. Explain the goal of your
design and the elements of the L-system that achieve it.
-
Pick an NPR style you like but have not yet implemented. Try Jackson
Pollack, for example. Make sure the style extends to 3D. (And, just
like last week, the dashed and broken styles don't count.)
-
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.
-
Make an additional scene.
-
Use the 3D turtle to create an interactive tool for creating
L-systems. Take user input from the command line to define base
strings and rules.
-
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
interactive program? (Try running the 3D turtle python file directly
and use the right mouse button, then look at the test method to see
how it's done.)
-
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. Put the label cs151s18project11
on 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 Courses server in your private directory in a folder
named project11.
Colby Wiki
In general, your writeup should follow the outline below.
- Title includes your name and clearly describes the project.
- Section headings are used to delineate distinct sections of the report.
- Abstract identifies key lecture concepts (e.g. code structres, data types, and libraries) relevant to the project.
- Abstract explains why key lecture concepts are important to achieving project goals.
- Abstract identifies program output(s), giving context to the project tasks.
- Solutions to tasks are described, focusing on how you used key lecture concepts to solve each task.
- Required images/outputs are present and clearly labeled.
- Reflection at the end of the report addresses how the lecture concepts mentioned in the abstract made this project possible. If you can think of a more elegant way to achieve the same results, please share!
- Sources, imported libraries, and collaborators are cited, or a note is included indicating that none were referenced.
-
Double-check this week's label. Make sure it is there.
© 2018 Caitrin Eaton.