Friday, May 6th 2011
The goal of this project was to manipulate our interpreter and shapes programs in order to run in a three dimensional interface and subsequently create new shapes and images which exhibit the limits of the three dimensional interface.
The goal of task one was to introduce and draw three dimensional shapes in the different image styles introduced last project. This was achieved by adding several new elements into the interpreter function such that it could recognize commands for turning the turtle cursor in three dimensional space. As can be seen below I then converted four of my shapes into three dimensional images, namely my "M","A","T", and my box were all altered such that they incorporate three dimensional commands.
This image is an image of a box drawn in three different styles, broken, jitter, and normal style.
This image is an image of my three dimensional "M" drawn in three different styles, broken, jitter, and normal style.
This image is an image of my three dimensional "A" drawn in three different styles, broken, jitter, and normal style.
This image is an image of my three dimensional "T" drawn in three different styles, broken, jitter, and normal style.
The goal of the second task was to then use the new shapes added to the shapes program in order to create a realistic or abstract scene. As can be seen below I drew an image of my name surrounded by two boxes.
This is an image of my scene from one angle, in front of the letters.
This is an image of my scene from another angel, behind the letters.
The goal of the third task was to go above and beyond and do one of the extensions. For this three dimensional Lsystems were explored and several novel systems were introduced.
The original goal was to create an image which created a nano-tube with a length based on the number of input iterations. This, however, proved particularly difficult and as a result forced me to explore many different methods as well as Lsystems. Ironically, my most interesting Lsystems were the result of my failed attempts rather than the actual nanotube. Below is an example of my final Lsystem drawing a nano-tube.
This nano tube can be drawn by running Task3.py with lsystem, systemnewNANO4, and an angle of 60 degrees (it is also scalable and placeable).
I will refrain from demonstrating the lsystems themselves because as it turns out the base structures and rules are very complex and tend to be extremely long.
The coolest Lsystems, however, were those accidentally created. The most interesting thing about these sudo-nano lsystems was that they exhibited interesting shapes from above. You can view them below.
Images 8 and 9.
These images were the result of running the systemnewNANO4 lsystem with an angle of 90 rather than 60.
Images 10 and 11.
These images were the result of one of the attempts at creating a nano-tube lsystem, systemnewNANO3.
Images 12 and 13.
These images were the result of running another failed attempt at creating a nano-tube lsystem, systemnewNANO (this one looks particularly similar to DNA).
This final Lsystem was the result of running a previously created parametrized 2D Lsystem with added 3D aspects. This one took advantage of many different aspects of our interpreter and as a result behaved in a very bizarre manner. When you increase the number of iterations it becomes more and more like a mushroom cloud. This is an example of systemnewL2.txt being run via Task 3.
This project demanded a new level of spacial reasoning in order to make use of three dimensional coding. In this light, the most challenging and, thus, most instructive aspect of this project was the process of learning how to use the three dimensional commands appropriately.