Sooji Son and Ying Long Revised Design Statement: Our final product deviated from our original proposal, but the drawing does resemble a bullseye in the end. Instead of using darker and lighter version of rainbow colors, we have chosen to use the complements of the rainbow colors. In other words, the colors in the first and the third quadrants are the complements of the colors in the second and fourth quadrants. The complemented colors in the first and third quadrant and the original rainbow colors in second and fourth quadrants create a depth that we did not imagine before. In addition, as n gets bigger, the imaged started showing moiré effects. The unity that is created by the rhythm of repeating ellipses and the variety that is created by juxtaposing different colors in one picture plane create symmetry and balance. In addition, we have added color gradient in the background of the drawing. The gradient color is much darker than the original white background, which is ideal because it reduces the harsh brightness of the background. In the end, the addition of the background creates more harmony between the negative space and the positive space, without distracting the viewers from the bullseye. The proportion of the background is comparatively small to the proportion of the ellipses, therefore, putting an emphasis on the colorful ellipses. Revised Technique Statement: We used image-based procedures, local-binded recursion, local binded variables, color-transformation, color vector, image-compute! and modulo in this project. Also, in order to break down the project into simple problems, we have implemented two helper procedures. The first helper procedure, named draw-sector! selects a rectangle that is half the width and the height of the image, and selects an ellipse that has the width and height of the canvas. Then, only the intersecting selection will be filled with a given color, returning a drawing of a sector. Based on the quadrant that is chosen, the rectangle selection will move to the appropriate quadrant to do the selection. Although we could have used map to call the procedure four times, we decided, for readability and the lack of difference in performance between the two methods, to simply call this procedure four times in the main procedure to create an ellipse. The second helper procedure, round-to-1, rounds an inexact value to its tenth place. For instance, if the input value is 3.141592, the procedure will return 3.1. We decided to use this procedure because we have found out that our main procedure will return an orange canvas if the value of the shrink factor used in recursion is a long inexact number. We experienced this problem with even width and height, and n that is at least 2 less than the width and height. This helper procedure ensures that we never get an orange canvas without any ellipses. Our main procedure, image-series takes n, width, and height as inputs, and creates (n - 1) concentric ellipses with varying colors using recursion. Since for n=0 will return -1 ellipses, which is impossible, we have decided to return a canvas filled with a pink color. Similarly, for n=1, that is, when we have 0 ellipse, the procedure returns a canvas filled with a background gradient. From n=2, the procedure starts to return a series of ellipses. This will still give 1000 distinct images. The reason behind specializing input 0 and 1 is to show the blank canvas without anything being done to the background, and show the canvas with the gradient background, and then introduce the ellipses. The image will contain 0 to 997 concentric ellipses, depending on n. Because n will be the divisor in determining the shrink factors called delta-w and delta-h, we incremented n by 1, to make sure that we do not divide by 0, and name the incremented number layers. The two delta values are used in the recursion to shrink the width and height of the next ellipse that will be drawn. The constant shrinking factor delta-w is calculated by dividing (width - 2) by (layers * 2), and rounding it using the round-to-1 procedure. Using the height, delta-h is calculated the same way. The reason for subtracting 2 from the width and height is to ensure that our first helper procedure, which will select the half the width of the ellipse being drawn, has at least 1 as its width and height at the end. The approach to selecting different colors for each layer stayed the same; we created a vector containing colors of the rainbow, and used modulo to select one color. The gradient background that we newly implemented in this main procedure uses n, width, and height. Using image-compute! The gradient varies the red and blue components based on the column and row. The green component is varied using n and modulo, to ensure that the value stays within the 256 bound.