Finalized Statements: Codename Echo Lima Sierra Alpha Sarah Trop, Adam Hudson, and Edward Hsieh Part 1: Design Statement Our project aims to experiment with two levels of visual design: the composition of different shapes in repetition and the variation of color with these shapes. We created code that generates images reminiscent of snowflakes based on the central organization of the shapes. The negative space in the images should help create the illusion of falling snowflakes while the positive space in the image will be the shapes that make up the snowflakes themselves. The shape of the polygon varies between 3 set polygons: triangles, squares, and hexagons. Each snowflake is constructed of a polygon that is repeated externally and internally. On the external level, the repeated polygon is shrunk and positioned relative to the original polygon; these repeated polygons will extend to two external copies. Internally, the polygon is repeated and shrunk, but only continue within the original polygon; these repeated polygons will continue to a set amount of repetition, and these internal fractals are either of level 1, 2, 3, 4 or 5. To create more variations on our image, there is also the possibility for there to be up to 3 total snowflakes in the composition. The placement and scale of these snowflakes remains consistent, the only change is how many are present in a given image. Color also varies, to a certain degree. The main color of the snowflake could be any of 29 different variations on blue, purple, turquoise, and lavender, and within the snowflake the color lightens as the fractal builds internal levels of shapes, creating an internal gradient. The background of the image will be iterated over from the bottom left corner starting with a darker form of the initial color and then turn to black as it moves to the opposite corner, creating an external gradient. We have also varied the size of the brushes, shrinking the size of the brush drawing the shapes once the image gets down below a certain size. This helps the fractals stay defined as shapes instead of looking like unspecific blobs of color. However, due to the nature of our drawings, they tend to look better at larger image sizes. The visual appeal of our images stems from the rhythm and scale of the compositional shapes. In a natural snowflake, the color can seem to shift because of the nature of ice and how it reflects light. The color gradient generated as the fractal builds is meant to represent that natural variation. The variety of polygonal shapes combined with the different levels of internal repetition ensure that each “unique snowflake” will present the viewer with interesting variations of proportionality as well as unity between the scaled polygons. Depending on the number of external levels present, there might also be interesting patterns generated from polygon overlap. Furthermore, in the case of multiple snowflakes, the placement of the additional polygons will allow us to manipulate the balance found throughout the image. We intentionally offset the scaled snowflakes so that the image wouldn’t be confined to uninteresting linear, symmetrical patterns and also help simulate snowfall patterns found in nature. The background color gradient should help to reduce the tedium produced by monocolor backgrounds (black). Part 2: Technique Statement     Our project is based on 3 major algorithmic techniques: drawing with turtle graphic instructions, using numeric recursion to create geometric shapes (to be drawn with turtles), and coloring the images by recursively dividing the spaces and assigning appropriate colors. We also made heavy use of vectors and modulo to store lists of different factors and cycle through them to select specific elements, respectively. Additionally,  we varied the background color through the use of image-compute-pixels! We wrote the main procedure using fractals to create our initial polygon. Through recursion, we developed the internal levels of the initial polygon by varying the positions, rotations, and sizes of the fractal polygons relative to the initial polygon. The depth of the initial polygon (or number of internal levels) depends on the amount of recursive calls given. The range for these levels go from 1 to 5. We then wrapped n around 5 (using modulo) and used vector-ref to take the number outputted by modulo to find the number of internal levels from the internal level vector. The external repetition of the polygon consists of a different process. We took the initial polygon, proportionally shrunk it, and then repeated it outside the initial polygon. The positioning of these repeated polygons depend on the width, height, and shape of the original polygon. Moreover, the repeated polygons have the same amount of internal levels as the initial polygon. We decided to set the external repetition to 2 to simplify the drawing process, which uses turtles to draw our shapes within the fractal coding. There are a total of 3 shapes to choose from. The shape depends on a numeric value which is the sides parameter of turtle-polygon! (turtle-polygon! is based on problem 5 from Exam 3). These values are either 3, 4, or 6 (triangle, square, or hexagon).  By wrapping n around 3, we obtain a value that corresponds to a value in a constructed sides-vector which consists of 3, 4, and 6 (which corresponded to the resulting shape). This modulo procedure is similar to the one utilized for selecting internal levels. The shape does not vary within a given image. The repetitive and fractal nature of the shapes then construct the physical resemblance of a snowflake. Note: We initially planned to include pentagons in our set of polygons to choose from but have since decided to remove them from the available options. Although we did manage to create successful baseline pentagon images, the math proved to be too complicated once we increased the level of external repetition and we ran out of time to fully implement it. For color, we have a set vector (referred to as color-vector) of 29 choices determined by n. As such, we will wrap n around 29, and then match that result to the corresponding position in the color-vector. The background will always be the same pattern, but the color will vary. By computing the pixels over the image, the bottom-left corner will be a darker form of the color chosen from the color-vector; the color will then go from its darker form to black as it moves towards the top-right corner. Lastly, the number of snowflakes in the background varies. There can be anywhere from 1 to 4 total snowflakes in a given image. There is always a main snowflake slightly off-center, but the number of the 3 other potential snowflakes will vary. For all background snowflakes, the first, second, and third snowflakes will all have a set position and size relative to each other.  The only variation found in the background snowflakes is their occurrence. We determine the amount of background snowflakes by wrapping n around 3 and then match that result to the position in the frequency vector (exactly like the vector-ref selection procedures above), and then compose an image based upon balancing all three snowflakes into the confines of the width and height of the image, while remaining aesthetically pleasing. Note on scaling: Our images do scale, but that scaling is based on the height of the image since all of our snowflakes must have consistent side length. They do not “stretch” or “squish” as a rectangle might, since the proportions must be set for the snowflakes to be created properly. All the above factors mean that that we will have a final pool of 29 colors, 3 shapes, 5 levels of internal repetition, and 4 levels of external snowflake frequency to choose from. Based on the principle of relatively prime factors, this ensures that we will have a theoretical total of 1,740 images, all of which are unique to one another by at least one key factor--a different polygon, a different amount of internal repetition, different numbers of total snowflakes on the image, etc.