Adam He – Project 04 – String Art

sketch

/* Adam He
Section A
xiaotiah@andrew.cmu.edu
Project - 04 - String Art */


function setup() {
    createCanvas(300, 400);
    background(10);
}

function draw() {
    var changeX = 10;  // changing increment of x
    var changeY = 20;  // changing increment of y
    var lineX = 10;
    var lineY = -10;

    for (var m = 10; m <= 500; m += 10) { // 1st layer : sun beam
        stroke(240, 200, 120);
        strokeWeight(1.5);
        line(100, m, m, m);
        lineX += changeX;
        lineY += changeY;
    }

    for (var i = 0; i < 400; i += 10) { // 1st layer of the wave (light purple), filling the left bottom
        stroke(120, 80, 120);
        strokeWeight(1);
        line(0, i, i, 400);
        lineX -= changeX;
        lineY += changeY;
    }

    for (var j = 0; j <= 300; j += 10) {
        stroke(180, 80, 170); // 2nd layer of the wave (purple)
        strokeWeight(1.5);
        line(20, j, j, 300);
        lineX += changeX;
        lineY += changeY;

        stroke(230, 100, 70); // 3rd layer of the wave (orange)
        strokeWeight(1);
        line(50, j, j, 270);

        stroke(240, 40, 30); // 4th layer of the wave (red)
        line(70, j, j, 220);
    }
}

When I heard about string art, I had the impression that it is very wavy. With different layers of intersecting lines, the drawing starts to have three dimensional flow even though it is two dimensional. I wanted to to incorporate this into one of my favorite sports, surfing. I used different layers to show the movement of the waves, as well as rather systematic lines to show the bright sunlight at beaches.

Yingyang Zhou-Project-04-String-Art

string art

function setup() {
    createCanvas(400, 300);
    background(220);
}

function draw() {
  background(220);
    var amt = 0;
    var a = 0;
    var b = 0;
    var x1 = lerp(mouseX, 300, amt);
    var y1 = lerp(mouseY, 300, amt);
    var x2 = width;
    var y2 = height;
    var x1StepSize = 3;
    var y1StepSize = 10;
    var x2StepSize = 7;
    var y2StepSize = 8;
    var x3 = 0;
    var y3 = 0;
    var x3StepSize = 2;
    var x4 = lerp(0,400, amt);
    var y4 = lerp(0,300,amt);
    var r = 240;
    var g = 80;
    var b = 50;
    for(var i =0; i < 400; i++){
      amt += 0.1;
      x3 += x3StepSize;
      line(x3, height, x3+i, 0);
      line(x3, y3, x4, y4);
    }
    for(x1 == 0; x1 < width; x1+=x1StepSize){
      amt += 0.1;
      y1 += y1StepSize;
      x2 -= x2StepSize;
      y2 -= y2StepSize;
      r -= 3;
      b += 1;
      stroke(r, g, b);
      strokeWeight(0.5);
      line(x1, y1, x2, y2);
      line(y1, x1, y2, x2);
      line(0, height, x1, y1);
      line(width,0, x2, y2);
    }

}

By using lerp and for loop, there are ‘curve’ which made by straight lines, with mouse moving the color and position of lines will change with it.

Victoria Reiter – Project 04 – String Art

sketch

/*
Victoria Reiter
Section B
vreiter@andrew.cmu.edu
Project-04
*/

// establishes canvas dimensions
function setup() {
    createCanvas(400, 300);
}

function draw() {
    // background color
    background(65);

    // gives values to some variables
    var x1 = 0;
    var x2 = 0;
    var y1 = 0;
    var y2 = 0;
    var g = 40;

    // angle for sin function
    var a = 0;

    // value of increment for angle in sin function
    var inc = PI / 32;

    // draws sin function
    for (var x1 = 0; x1 < width; x1 += 2) {

        // color blue
        stroke(0, 0, 255);

        line(x1 * 1.5, g, x1 * 1.5, g + sin(a + PI / 2) * 50);
        // calculates growth of angle
        a = a + inc;
        x1 += 1;
        g += 2.5;
    }

    // draws bottom left curve, the pretty lilac colored one
    for (x1 = 0; x1 < width; x1++) {
        x1 += 5;
        y2 += 5;

        // color lilac
        stroke(165, 125, 235);

        // draws curve
        line(x1, height, x2, y2);
    } 

    // draws sunset-colored curve on right side of screen
    for (x1 = 0; x1 < width; x1++) {
        x1 = x1 + 4;
        y2 += 5;

        // draws sunset-color
        stroke(244, 66, 0);

        // draws curve
        line(x1, y1, width, y2 - 75);
    } 

    // draws maroon-colored lines in middle of screen
    for (var i = 30; i < width; i += 10) {
        i += 8;

        // color maroon
        stroke(130, 9, 41);

        // draws curve
        line(width - i, height, i * .25, 0);
    }

}

Was able to create several curved lines, including using the sin function to draw a sin curve in blue. Able to draw the bottom left and the right curves as, well, curves, and the center cross of lines in maroon.

Jenni Lee — Project 04 — String Art


Jenni Lee — Project 04 — Dynamic Drawing

/* Jenni Lee
Section E
jennife5@andrew.cmu.edu
Project-04
*/

function setup() {
  createCanvas(800, 600);
  background(175);
  noLoop ();
}

function draw() {
  var i;
  for (i = 0; i < width; i += 10) {

// line connecting from top boundary line, starting from 0 and increment by 10 pixels, 
// to right boundary line, from top to bottom, increment by evenly divided height
    stroke (219, 79, 149);
    line (i, 0, width, lerp (0, height, i/width)); // lerp is to evenly divide the height with corresponding increment on width
    
    stroke (135, 96, 116);
    line (width - i, 0, 0, lerp (0, height, i/width));

    stroke (239, 218, 229);
    line (i, height, width, height - lerp (0, height, i/width));

    stroke (155, 59, 107);
    line (width - i, height, 0, height - lerp (0, height, i/width));

// line connecting from top boundary line, starting from 0 and increment by 10 pixels, 
// to right boundary line, from top to middle of height, increment by evenly divided height/2
    stroke (135, 96, 116);
    line (i, 0, width, lerp (0, height/2, i/width));
      
    stroke (219, 79, 149);
    line (width - i, 0, 0, lerp (0, height/2, i/width));
 
    stroke (155, 59, 107);
    line (i, height, width, height - lerp (0, height/2, i/width));

    stroke (239, 218, 229);
    line (width - i, height, 0, height - lerp (0, height/2, i/width));
    
// line connecting from top boundary line, starting from 0 and increment by 10 pixels, 
// to right boundary line, from top to 1/4 of height, increment by evenly divided height/4
    stroke (239, 218, 229);
    line (i, 0, width, lerp (0, height/4, i/width));
   
    stroke (219, 79, 149);
    line (width - i, 0, 0, lerp (0, height/4, i/width));
 
    stroke (135, 96, 116);
    line (i, height, width, height - lerp (0, height/4, i/width));

    stroke (155, 59, 107);
    line (width - i, height, 0, height - lerp (0, height/4, i/width));    
  }
}

Pink is my favorite color, so for this project, I wanted to play around with various shades of pink. Upon reflection of this piece, it’s almost a bit reminiscent of a rose of some sort of red/pink-ish flower. It took me a couple sketches for me to fully map out how I wanted to set everything up, as it was initially difficult for me to conceptualize everything, but ultimately, it was an enjoyable project.

Rachel Lee- Project 04- String Art- Section E

sketch

/* Rachel Lee
Section E
rwlee@andrew.cmu.edu
Project- 04: String Art 
*/

// global variables 
var increment = 10; // spacing between different line segments

function setup() {
    createCanvas(400, 300);
    background(250, 155, 130);
}

function draw() {
	strokeWeight(random (0.3, 1)); //randomizes stroke weights within 
	//curve and 'grid' elements (vertical and horizontal inner mesh layer)

// top right swoop
    for (var a = 0; a < width; a += increment) {
        stroke(240, 200, 90);
        strokeWeight;
        line(a, 0, width, a);
	}

// bottom left swoop
    for (var b = 0; b < height; b += increment) {
   	    stroke(160, 190, 225);
   	    strokeWeight;
   	    line(b, height, 0, b); 
   }

// inner mesh layer top right 
    for (var c = 50; c < width; c += increment) { //curve starts at 50 pixels across screen
    	stroke(150, 200, 200);
    	strokeWeight;
    	line(c, 0, 300, c); //curve begins to taper at 300 pixels (width) 
    } 

// inner mesh layer bottom left
    for (var d = 50; d < height; d += increment) { // starts 50 pixels down left side of screen
        stroke(150, 215, 120);
        strokeWeight;
        line(0, d, d, height); 
    } 

// vertical inner mesh layer
    for (var d = 80; d < height; d += increment) { 
        stroke(215, 215, 120);
        strokeWeight;
        line(d, 0, d, height); // lines begin at 80 pixels from left side of screen
    } 

// horizontal inner mesh layer
    for (var e = 0; e < width; e += increment) {
    	stroke(210, 205, 80);
    	strokeWeight;
    	line(0, e, width, e);
    }

}

For my String Art project, I was inspired by one of my favourite artists, Naum Gabo. I initially based my piece on his sculpture Linear Construction No. 1, but decided to add my own flair with color, and vary the types of shapes that were layered in the inner ‘mesh’ panels. While challenging, this project was really fun to experiment with– I especially liked seeing how randomising the stroke weight affected the dynamics of the piece.

Sarah Yae Project 4 Section B


Project 4

//Sarah Yae
//Section B
//smyae@andrew.cmu.edu
//Project-04

function setup() {
    createCanvas(400, 300);
 }

function draw() {
    background(29,41,81);

 //variables
	var a = 0;
	var b = 0;
	var c = 0;
	var d = 0;
	var e = 0;
	var f = 0;
	var g = 0;
	var h = 0;
	var s = 10;
	var t = 10;
	var u = 10;
	var v = 10;
	var w = 10;
	var s1 = 10;
	var s2 = 10;
	var s3 = 10;
	var s4 = 10;
	var s5 = 10;
	var s6 = 10;
	var s7 = 10;
	var s8 = 10;
	var s9 = 10;
	var s10 = 10;


//Star 
	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ();
		ellipse (s, 10, 5, 5);
		s += 10;
	}

	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ();
		ellipse (t, 30, 5, 5);
		t += 10;
	}

	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ();
		ellipse (u, 50, 5, 5);
		u += 10;
	}

	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ();
		ellipse (v, 70, 5, 5);
		v += 10;
	}

	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ();
		ellipse (w, 90, 5, 5);
		w += 10;
	}

	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ();
		ellipse (s1, 110, 5, 5);
		s1 += 10;
	}

	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ();
		ellipse (s2, 130, 5, 5);
		s2 += 10;
	}

	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ();
		ellipse (s3, 150, 5, 5);
		s3 += 10;
	}

	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ();
		ellipse (s4, 170, 5, 5);
		s4 += 10;
	}

	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ();
		ellipse (s5, 190, 5, 5);
		s5 += 10;
	}

	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ();
		ellipse (s6, 210, 5, 5);
		s6 += 10;
	}

	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ();
		ellipse (s7, 230, 5, 5);
		s7 += 10;
	}

	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ();
		ellipse (s8, 250, 5, 5);
		s8 += 10;
	}

	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ()
		ellipse (s9, 270, 5, 5);
		s9 += 10;
	}
	
	for (i = 0; i <= 38; i++) {
		fill ('Yellow');
		noStroke ();
		ellipse (s10, 290, 5, 5);
		s10 += 10;
	}

//Salmon String Line 
	for (i = 0; i <= 100; i++) {
		stroke ('Salmon');
		strokeWeight (0.5);
		line (a, 0, 0, height-b);
		a += 10;
		b += 10;
	}

//Lavendar String Line
	for (i = 0; i <= 100; i++) {
		stroke (187,180,214);
		strokeWeight (0.5);
		line (width-c, 0, width, height-d);
		c += 10;
		d += 10;
	}

//Light Green String Line
	for (i = 0; i <= 100; i++) {
		stroke (191,228,118);
		strokeWeight (0.5);
		line (e, height, width, width-f);
		e += 10;
		f += 10;
	}

//Blue String Line 
	for (i = 0; i <= 100; i++) {
		stroke (148,168,208);
		strokeWeight (0.5);
		line (height-g, height, 0, height-h);
		g += 10;
		h += 10;
	}
}

This project reflects a concept of the outer space; the circles represent stars, and the strings are almost like the different dimensions of the space. I had fun making art out of the loop function!

Project – 04 Sara Frankel String Art

sketch

var y1 = 0;
var y2 = 0;
var x1 = 0;
var x2 = 0;
var x3 = 0;

function setup() {
    createCanvas(400, 300);  
	background(0);
	for(var i = 0; i < 100; i++) { //for loop that is redrawing all of the lines
		y1 = lerp(height, 0, i/100); //increments lines at specific ratios
		x1 = lerp(0, width, i/100);
		y2 = lerp(0, height, i/100);
		x2 = lerp(width, 0, i/100);
		x3 = lerp(0, width, i/25);
		colorMode(HSB); // changes color values to those of saturation, not RGB
		strokeWeight(0.25); //decreases thickness of line
		stroke (280,map(100-i,100,0,60,0),100); //line of code that gradiates the color proportionally
		line(width, height/3, x3 - 1400, height * 2);
		colorMode(RGB); //color values back to RGB
		line(i,(height/2)+height*sin(map(i,0,100,0,2*PI))*.25,5*i,(height/2)-height*sin(map(i,0,100,0,2*PI))*.25); //creates lines that draw along a sin curve
		stroke(color(255));
		strokeWeight(0.5);
		line(x1 * i, y1, 0, 0);
		strokeWeight(1);
		stroke(color('#0B2838'));
		line(width/2, y1, x2, height/2);
		strokeWeight(2);
		stroke(color('#1F2654'));
		line(width/2, y2, x1, height/3);
		strokeWeight(0.05);
		stroke('pink');
		strokeWeight(1);
		line(width/2, height/2, x1, height * 0.125 - 50);
		stroke(color('10'));
		line(width/3, y2, x1, height/3);
		stroke(color('#513B70'));
		line(width/2 + 50, y2, x1, height/3);
		strokeWeight(0.25);
		stroke(color('#8E5D91'));
		line(width/2, y2, x1, height/4);
		strokeWeight(1);
		stroke(color('#B589A0'));
		line(width/2, y1, x2, height/4);
		line(width/2, height/2, x1, -height/8);

	}
}

I enjoyed doing this project as I really love looking at the play of negative space that tricks our eyes that these straight lines create a curved one. I also particularly enjoy experiencing and seeing the play of a color palette and how each color plays into the next.

Christine Chen-Project-04-String Art


Christine Chen-Project-04-String Art

/*
Christine Chen
Section E
cyc1@andrew.cmu.edu
Assignment-04-B 
*/

function setup() {
    createCanvas(400, 300);
}

function draw() {
    background(136, 164, 255); //background blue

    var increment = 7.5;
    //the smaller the increment it, the denser the lines

    //Blue pyramid-like lines in the center
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.9);
        stroke(0, 80, 105); 
        line (a, height, width - a, 0);
    }

    //LEFT LINES
    //rotate
    push(); 
    translate(width/2, height/2); 
    angleMode(DEGREES);
    rotate(90); 
    translate(-width/2, -height/2); 
        
    
    //Left side upper corner 
    //counting from outer blue lines to inner red lines
    //1st
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.4);
        stroke(0, 80, 105);
        line (0, a, a, 400);
    }
    
    //2nd 
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.4);
        stroke(50, 80, 105); 
        line (0, a, a, 300);
    }
    
    //3rd 
    for (var a = 0; a < width + 100; a = a + increment) {
        strokeWeight(0.4);
        stroke(100, 80, 105); 
        line (0, a, a, 250);
    }
    
    //4th
    for (var a = 0; a < width + 100; a = a + increment) {
        strokeWeight(0.4);
        stroke(150, 80, 105); 
        line (0, a, a, 220);
    }
    
    //5th
    for (var a = 0; a < width + 100; a = a + increment) {
        strokeWeight(0.4);
        stroke(255, 80, 105); 
        line (0, a, a, 200);
    }
    
    //Left side lower corner 
    //counting from outer blue lines to inner red lines
    //1st
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.4);
        stroke(0, 80, 105); 
        line (width, a, width - a, 400);
    }
    
    //2nd
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.4);
        stroke(50, 80, 105); 
        line (width, a, width - a, 300);
    }
    
    //3rd
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.4);
        stroke(100, 80, 105); 
        line (width, a, width - a, 250);
    }
    
    //4th
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.4);
        stroke(150, 80, 105); 
        line (width, a, width - a, 220);
    }
    
    //5th
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.4);
        stroke(255, 80, 105); //red line color
        line (width, a, width - a, 200);
    }

    pop(); 


    //RIGHT LINES
    //rotate
    push(); 
    translate(width/2, height/2); 
    angleMode(DEGREES);
    rotate(270); 
    translate(-width/2, -height/2); 
         
     
    //Right side lower corner
    //counting from outer blue lines to inner red lines
    //1st
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.4);
        stroke(0, 80, 105);
        line (0, a, a, 400);
    }
     
    //2nd 
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.4);
        stroke(50, 80, 105); 
        line (0, a, a, 300);
    }
     
    //3rd 
    for (var a = 0; a < width + 100; a = a + increment) {
        strokeWeight(0.4);
        stroke(100, 80, 105); 
        line (0, a, a, 250);
    }
     
    //4th
    for (var a = 0; a < width + 100; a = a + increment) {
        strokeWeight(0.4);
        stroke(150, 80, 105); 
        line (0, a, a, 220);
    }
     
    //5th
    for (var a = 0; a < width + 100; a = a + increment) {
        strokeWeight(0.4);
        stroke(255, 80, 105); 
        line (0, a, a, 200);
    }
     
    //Right side upper corner
    //counting from outer blue lines to inner red lines
    //1st
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.4);
        stroke(0, 80, 105); 
        line (width, a, width - a, 400);
         }
     
    //2nd
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.4);
        stroke(50, 80, 105); 
        line (width, a, width - a, 300);
    }
     
    //3rd
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.4);
        stroke(100, 80, 105); 
        line (width, a, width - a, 250);
    }
     
    //4th
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.4);
        stroke(150, 80, 105); 
        line (width, a, width - a, 220);
    }
     
    //5th
    for (var a = 0; a < width; a = a + increment) {
        strokeWeight(0.4);
        stroke(255, 80, 105); //red line color
        line (width, a, width - a, 200);
    }

    pop(); 
}

I think this project is particularly hard because it is so difficult to visualize what your codes are going to draw. However, once I got a part of my lines to work, it was easier to plan out what I want to create with the part I had. After playing around with my strings for a while, I finally settled with this piece where the left and right strings wraps around the middle to emphasize the forms of the pyramid-like strings in the center. Having the wrapping strings at the top and bottom isn’t as visually interesting and having the wrapping strings on four sides is just too much.

Catherine Coyle – Project 04 – String Art

cathstringart

// Catherine Coyle
// ccoyle@andrew.cmu.edu
// section C
// Project-04-String Art

var rightY = 0;
var leftY;
var colorV = 0;
var bgColor = 0;

function setup() {
	createCanvas(400, 300);
	leftY = height;
}

function draw() {
	background(200);
	// background gradient done w lines
	// the line gets smaller and lighter each round making a gradient
	for(var thickness = height*2; thickness > 1; thickness = thickness*.8) {
		strokeWeight(thickness);
		stroke(bgColor/2, bgColor/2, bgColor);
		line(0, height, width, height);
		bgColor += 20;
	}	
	strokeWeight(.5);
	// corner curves
	for(var topX = 0; topX < width; topX += 4) {
		// as one side of the line increases the other decreases making a curve
		// here are curves near the four corners
		stroke(colorV, 255-colorV, 150);
		line(width, leftY, width-topX, 0);
		line(topX, height, width, width-rightY);
		rightY += 4;
		line(topX, 0, 0, leftY);
		line(0, leftY, height-topX, height);
		leftY -= 4;
		// the color is continuously changing to make a gradient
		colorV += 2.5;
	}
	// yellow middle lines
	strokeWeight(1);
	stroke(253, 255, 137);
	for(var midX = 0; midX < width/2 - 50; midX += 8) {
		line(width/2 - 50, height/2 - 50 + midX, width/2 + 50 -midX, height/2 - 50);
		line(width/2 + 50, height/2 + 50 - midX, width/2 - 50 +midX, height/2 + 50);
	}
	noLoop();
}

I thought this was a really fun project! I didn’t do any sketches this time, instead I just experimented with different numbers to figure out how to make a curve and then added the curves in the middle. Additionally, I thought it would be cool to have a gradient background so I did this by using lines in a for-loop to follow the rest of the theme of the project.

ChristineSeo-Project04

sketch

// Christine Seo
// Section C
// mseo1@andrew.cmu.edu
// Project-04

function setup() {
  createCanvas(300, 400);
  mouseClicked();
}

function draw() {
  
}

function mouseClicked() {
  background(245, 229, 254);
  noStroke();
  
	    push();
	  for(var x = 0; x <= width; x += 30){ //rainbow dashes
	   for(var y = 0; y <= height; y += random(90)){
  	
     var r = random(220);
     var r1 = random(0, 5);
     var r2 = random(10, 40);
     
     colorMode(HSB,200); 
		 var colorC = color(r,r2,220);
		 fill(colorC);
     	ellipse(x, y, r, r1);
	   }
	  }
	  pop();

	 push();
	for (var y = 0; y < height; y += random(80)){ 
    
    strokeWeight(random(1, 5));
    stroke(250);
    line(0, 0, y-80, height/2); //top white lines
    line(width, height, y-80, height/2); //lower white lines
	  }
	pop();

	strokeWeight(random(1, 5));//midline in center
    stroke(250);
	line (0,height/2,width,height/2);


    push();
	for (var y = 0; y < height; y += random(40)){ //dark gray lines left bottom corner
    
    strokeWeight(random(1, 5));
    stroke(100);
    line(0, y, y+10, height);
  	}
	pop();
  
     push();
	for (var x = 0; x < width; x += random(40)){ //dark gray lines right top corner
    strokeWeight(random(1, 5));
    stroke(100);
    line(x, 0,width, x+10);
	  }
	pop();

    push();
  for (var x = 0; x < width; x += random(20)){ // light gray lines right top corner
    strokeWeight(random(1, 2));
    stroke(160);
    line(x-35, 0,width, x+35);
    }
  pop();

    push();
  for (var y = 0; y < height; y += random(20)){ // light gray lines left bottom corner
    
    strokeWeight(random(1, 2));
    stroke(160);
    line(0, y-35, y+35, height);
    }
  pop();
 
  

}

For this project, I wanted to play having a color scheme as well as use different corners of the canvas to create lines. When clicked, the movement of the lines are random (with restriction). Although getting the gist of using for() was difficult at first, I was able to get a hang of it and create something that I think is very successful.