Extension 6.3: Flower Power (4 points)¶
A video demonstrating my solution can be found here.
extensions folder open the
recursivepatterns package. The following classes found there, and described in greater detail below, must be completed for this extension:
The ultimate goal is to complete the
flower method of the
Flower class so that it draws an image similar to the one shown below:
The colors shown in the above image are somewhat transparent, so that the color of an ellipse is allowed to bleed through the ellipse above it.
You can proceed by working on either class first. However, if you postpone
TransparentColor, you will see solid colors in your flower until you have completed that class.
Representing Color in Java¶
Opaque Color s in Java are made up of 3 components: red, green, and blue (hence the term RGB). The color of a pixel is made up of a combination of the intensities of each of red, green, and blue components. In computing it’s common for intensities range from 0 (meaning none of that color is present) to 255 (meaning as much as possible of that color is present). (The reason for 255 is the maximum is because computer use binary numbers. The “why” isn’t important not, but keep in mind that color values go from 0 to 255)
You create a new color for a pixel with the code:
new Color(redValue, greenValue, blueValue)
redValue is the intensity (an integer between 0 and 255) of red,
greenValue is the intensity of green, and
blueValue is the intensity of blue.
For example, you get the color black with
new Color (0,0,0) (0 intensity for all colors). You get red with
new Color (255,0,0) (highest intensity for red, 0 intensity for green and blue).
As is the case with most color models, Java’s Color objects are allowed to have a degree of transparency.
transparentColor method, as provided to you, ignores the
alpha parameter and returns the color provided as input.
You must change this behavior so that the color returned as the same red, green, and blue components as the provided color, but with the specified transparency.
Java makes this easy, because there is a constructor for Color that does the job. This task is given to you primarily to acquaint you with the process of looking through JavaDoc documentation to find a class or method you need.
- The 4 components of a Color instance can be accessed via these methods:
Follow the instructions provided in the
TransparentColor source code.
Before moving on, test your code by running
TransparentColor as a Java Application. You should see the colors solid at the upper right of the drawing window, and blended (more transparent) at the lower left.
Flower : Your task here is to complete the
flower method, whose parameters are described in the JavaDoc for the method. Some useful guildines follow:
StdDrawclass offers a
filledEllipsemethod, but you must set the color before calling it.
You should choose a random color for each ellipse you draw, and you are provided a
Colorobjects as input to your
If necessary, review the material in the text and slides that discusses how to pick a random integer. You would use that integer to index the
You must find the substructure in the flower pattern. To help with this, the following diagram shows the locations of each ellipse within a given level of recursion:
Analyze the above diagrams to infer the area taken up by each sub-ellipse that you must draw.
Remember that the
StdDrawcoordinate system has (0,0) at the lower-left, and (1,1) at the upper right.
StdDrawshapes take a center as their primary coordinate, and use half-widths and half-lengths for dimensions.