Assignment 3.1

posted Jun 23, 2010, 9:05 PM by Unknown user
I used the following code to recreate and expand upon mr. dickie's image. The image is drawn in all 4 corners with a grayscale radial gradient in the center, and the line's stroke color is set to the x or y value of the line, resulting in a rainbow type pattern.
Here is the image:
 
 
Here is the code:

 
void setup() {
  size(400, 400);    //set size to 400 x 400 pixels
  background(0,0,0);  //set initial background color to black
}

//function to create radial gradient emanating from point (centerx, centery)
void createGSRadialGradient(int centerx, int centery)
{
  colorMode(RGB, width);  //set mode to rgb from 0 - 400 (screen width)
  for(int i = width; i >= 0; i-=1) {  //set up for loop, decrement from outside-in
    stroke(width-i);         //set stroke color to increase as diameter decreases 
    fill(0,0,0,0);           //no fill color
    ellipseMode(CENTER);     //elipses are declared by centerpoint
    ellipse(centerx, centery, i, i);  //draw the ellipse
  }
}
 
void draw() {
  createGSRadialGradient(width/2, width/2);  //create gradient centered on screen
  colorMode(HSB, width);    //set color mode to HSB so that hue is defined by just 1 variable
  int j = width;          //declare extra enumeration variable
  
  /* the following code works first by setting up a loop to either
     decrease or increase the 2 enumeration variables, setting the
     hue to one of them so the color gradually changes (rainbow style),
     then drawing a line. The points are each comprised of 2 scalars,
     one being one of the enumeration variables, and the other being
     a boundary (0 or width). which is which will depend on the corner
     being drawn */
  
  //draw mesh object in top-left corner
  for(int i = 0; i <= width; i += 10) {
    stroke(400-i, 400, 200);      //rainbow color, 100% saturation, 50% brightness
    line(i, 0, 0, j);
    j -= 10;
  }
  //draw mesh object in bottom-right corner
  for(int i = width; i>= 0; i -= 10) {
    stroke(i, 400, 200);
    line(width, j, i, width);
    j += 10;
  }
  
  j = 0;  //reset enumeration 
  //draw mesh object in top-right
  for(int i = 0; i <= width; i += 10) {
    stroke(400-i, 400, 200);
    line(width, i, j, 0);
    j += 10;
  }
  //draw mesh object in bottom left
  for(int i = width; i >= 0; i -= 10) {
    stroke(i, 400, 200);
    line(0, i, j, width);
    j -= 10;
  }
}
     
void mousePressed() {
  //save screenshot when mouse is pressed
  saveFrame("screenshot-##.png");
}

Comments