Project 3 – Sara Frankel Dynamic Drawing

sketch

//flower size
var fradius1 = 30;
var fradius2 = 60;
var fradius3 = 120;
//petal size
var pradius1 = 4;
var pradius2 = 80;
var pradius3 = 160;
//number of petals on flower
var numpetals = 6;
//Boolean if mouse on flower
var onFlower1 = false;
var onFlower2 = false;
var onFlower3 = false;
//color of flower
var fcolor1 = 'yellow';
var fcolor2 = 'yellow';
var fcolor3 = 'yellow';
//color of petal
var pcolor1 = 255; 
var pcolor2 = 255;
var pcolor3 = 255;
//color of text & boolean of if mouse is on text
var textcolor = 255;
var ontext = false;

function setup() {
    createCanvas(480, 640);
}

function draw() {
	noStroke();
	background('blue');
	//change background color according to mouseX
	if (mouseX <= width/2) {
		background('orange');
	}

	//to insert text and change the color of text according to position of mouse
	fill(textcolor);
	if (mouseX <= width/2) {
		text('Oopsie Daisy', 10,30);
		}	
	if (mouseX >= 10 & mouseY <= 30 && mouseX<=100 && mouseY >= 15) {
		if (!ontext) {
		textcolor = color(random(0,255), random(0,255), random(0,255));
		}  ontext = true;
		} else {
			ontext = false;
			textcolor = 255;
	}

	if (mouseX <= width & mouseY <= height) {
		numpetals = 2*mouseX/48 + 6; //changing the number of petals dependant on mouse
		pradius1 = mouseX/48 * 4 + 4; //modifying radius of petals based on mouse
		pradius2 = mouseX/48 * -8 + 80;
		pradius3 = mouseX/48 * -16 + 160;
	}
	
	//changing the color of the flowers based on the location of the mouse
	if ((mouseX - width/4) * (mouseX - width/4) + (mouseY - height*0.20) * (mouseY - height*0.20) < fradius1 * fradius1) {
		if(!onFlower1) {
			fcolor1 = random(0,255);
			pcolor1 = color(random(0,255), random(0,255), random(0,255));
		}
		onFlower1 = true;
	} else { 
		onFlower1 = false;
		fcolor1 = 'yellow';
		pcolor1 = 255;
	}
	fill(fcolor1);
	ellipse(width*0.25, height*0.20, fradius1, fradius1); // drawing the center of flower

	//changing the color of the flowers based on the location of the mouse
	if ((mouseX - width*0.75) * (mouseX - width*0.75) + (mouseY - height*0.30) * (mouseY - height*0.30) < fradius2 * fradius2) {
		if(!onFlower2) {
			fcolor2 = random(0,255);
			pcolor2 = color(random(0,255), random(0,255), random(0,255));
		}
		onFlower2 = true;
	} else  {
		onFlower2 = false;
		fcolor2 = 'yellow';
		pcolor2 = 255;
	}
	fill(fcolor2);
	ellipse(width*0.75, height*0.30, fradius2, fradius2);// drawing the center of flower

	//changing the color of the flowers based on the location of the mouse
	if ((mouseX - width*0.4) * (mouseX - width*0.4) + (mouseY - height*0.65) * (mouseY - height*0.65) < fradius3 * fradius3) {
			if(!onFlower3) {
				fcolor3 = random(0,255);
				pcolor3 = color(random(0,255), random(0,255), random(0,255));
			}
			onFlower3 = true;
		} else  {
			onFlower3 = false;
			fcolor3 = 'yellow';
			pcolor3 = 255;
		}
			fill(fcolor3);
	ellipse(width*0.4, height*0.65, fradius3, fradius3);// drawing the center of flower


	//flower 1 (top left)
	fill(pcolor1); //color and number of petals based upon the location of mouse 
	for (var i = 0; i < 24-numpetals; i++) { //flower that grows proportionately in the opposite direction as the other flowers
		var angle = i * radians(360/(24-numpetals));
		ellipse(width * 0.25 + (fradius1/2 + pradius1/2) * cos(angle), height * 0.20 + (fradius1/2 + pradius1/2) * sin(angle), pradius1, pradius1);
	}
	
	//flower 2 (top right)
	fill(pcolor2); //color and number of petals based upon the location of mouse 
	for (var i = 0; i < numpetals; i++) {
		var angle = i * radians(360/numpetals);
		ellipse(width * 0.75 + (fradius2/2 + pradius2/2) * cos(angle), height * 0.30 + (fradius2/2 + pradius2/2) * sin(angle), pradius2, pradius2);
	}
	//flower 3 (bottom)
	fill(pcolor3); //color and number of petals based upon the location of mouse 
	for (var i = 0; i < numpetals; i++) {
		var angle = i * radians(360/numpetals);
		ellipse(width * 0.4 + (fradius3/2 + pradius3/2) * cos(angle), height * 0.65 + (fradius3/2 + pradius3/2) * sin(angle), pradius3, pradius3);
	}

}

For this project, I decided to use daisies as my inspiration. At first I was kind of confused as to how I was going to execute this image, but after planning it out and figuring out the appropriate code for each movement, I was able to successfully draw this out.

Jonathan Liang – Project 03 – Dynamic Drawing

Move the cursor left and right and also try clicking the mouse.

sketch

//Jonathan Liang
//Section A 
//jliang2@andrew.cmu.edu
//Project-03-Dynamic Drawing


var head = 350;
var mouthColor = 0;
var col = {
	r: 255,
	g: 0,
	b: 0,
};
var flag = true;

function setup() {
    createCanvas(640, 480);
}

function draw() {
	col.r = random(0, 255);
	col.g = random(0, 255);
	col.b = random(0, 255);

//background
	if (flag == true) {
		background(col.r, col.b, col.g);
	}	else {
		background('black');
	}
	

//left ear
	noStroke();
	fill('white');
	ellipse(180, 115, 140, 140);

	noStroke();
	fill(188, 166, 222);
	ellipse(215, 125, 65, 80);
	ellipse(188, 108, 105, 80);

	noStroke();
	fill(252, 250, 92);
	ellipse(140, 95, 30, 50);
	ellipse(169, 125, 61, 65);

	noStroke();
	fill('white');
	ellipse(180, 140, 45, 45);
	ellipse(220, 90, 30, 30);

	strokeWeight(15);
	stroke('black');
	noFill();
	ellipse(185, 130, 55, 75);

//right ear
	noStroke();
	fill('white');
	ellipse(460, 115, 140, 140);

	noStroke();
	fill(156, 226, 233);
	ellipse(460, 140, 90, 33);
	ellipse(490, 126, 42, 44);

	noStroke();
	fill(237, 97, 155);
	ellipse(415, 145, 35, 125);
	ellipse(445, 96, 75, 75);

	noStroke();
	fill('white');
	ellipse(440, 120, 45, 65);
	ellipse(490, 100, 45, 40);

	strokeWeight(13);
	stroke('black');
	noFill();
	ellipse(460, 115, 42, 42);

	strokeWeight(17);
	stroke('black');
	noFill();
	ellipse(430, 150, 42, 42);




//constants for head
	noStroke();
	fill('white');
	ellipse(320, 240, head, 250);

	noStroke();
	fill(128, 255, 191);
	ellipse(180, 260, 40, 25);

	noStroke();
	fill(255, 225, 77);
	ellipse(460, 260, 40, 25);

	noStroke();
	fill('pink');
	ellipse(180, 260, 30, 15);

	noStroke();
	fill('pink');
	ellipse(460, 260, 30, 15);

//smile
	noStroke();
	if (flag == true) {
		fill('black');
	}	else {
		fill(col.r, col.b, col.g);
	}
	arc(320, 275, 312, 165, 0, PI, CHORD);
	


//teeth
	strokeWeight(1);
	stroke('white');
	noFill();
	line(164, 275, 184, 315);
	line(184, 315, 204, 275);
	line(204, 275, 230, 340);
	line(230, 340, 260, 275);
	line(260, 275, 290, 355);
	line(290, 355, 320, 275);
	line(320, 275, 350, 355);
	line(350, 355, 380, 275);
	line(380, 275, 410, 340);
	line(410, 340, 436, 275);
	line(436, 275, 456, 315);
	line(456, 315, 476, 275);

	

//left eye
	translate(180, 100);
	var m = max(min(mouseX, 200), 0);
	var size = m * 150.0 / 200.0;
	var eyeColor = mouseX / (640 / 225);



	strokeWeight(5);
	stroke(237, 97, 155);
	if (flag == true) {
		fill('black');
	}	else {
		fill(col.r, col.b, col.g);
	}
	ellipse(20 + m * 90.0 / 200.0, 100.0,
         size * .9, size * .9);

//right eye
	translate(130, 0);

	strokeWeight(3);
	stroke('cyan');
	if (flag == true) {
		fill('black');
	}	else {
		fill(col.r, col.b, col.g);
	}
	size = 350 - 2 * size;
    ellipse(20 + m * 90.0 / 200.0, 100.0,
         size * .40, size * .40);

//left pupil
	translate(-130, 0);
	var m = max(min(mouseX, 200), 0);
	var size = m * 150.0 / 200.0;
	var eyeColor = mouseX / (640 / 225);



	strokeWeight(10);
	stroke(255 - eyeColor, 51, 51);
	noFill();
	ellipse(20 + m * 90.0 / 200.0, 100.0,
         size * .19, size * .19);

//right pupil
	translate(130, 0);

	strokeWeight(7);
	stroke(170, 255 - eyeColor, 0);
	noFill();
	size = 350 - 2 * size;
    ellipse(20 + m * 90.0 / 200.0, 100.0,
         size * .04, size * .04);

    
}

function mousePressed() {
	if (flag == true) {
		flag = false;
	} else {
		flag = true;
	}




}

I am a big fan of Takeshi Murakami’s work and especially of his style Superflat. My project is taking his style and trying to bring it to life and have elements move. This project was difficult to start because of its open-ended nature. However, I did appreciate that aspect because it allowed me to experiment with many things.

Yingyang Zhou-Project-03-Dynamic-Drawing

Dynamic cubes

//Yingyang Zhou
//Section A
//yingyanz@andrew.cmu.edu
//Project-03


var cubeL = 50;
var dark = 150;
var angleA = 0;
var angleB = 0;
var angleC = 0;
var spacing = 50;
var i = 0;


function setup() {
  createCanvas(640, 480);
  background(0);
  frameRate(30);
}

function draw() {
  var x = 0;
  var y = 0;
  var speed = mouseX/width*4;
  var colour = 150 +mouseX/width*255;
  var dia = mouseX/width*20;
  var l = 0;

  //background change as mouse move
  background(max(120, 200-colour), max(30, 200-colour), max(10, 200-colour));
  noStroke();

  // mouse path
  fill(30, 30, 150)
  ellipse(pmouseX,pmouseY, dia, dia);


  if(mouseX < width & mouseY < height){

    push();
    translate(width/2, height/2);
    rotate(radians(angleA))
    fill(colour);
    scale(constrain(mouseX/width, 0.8, 1.5), constrain(mouseX/width, 0.8, 1.5));
    quadA = quad(x, y, x+cubeL, y-cubeL/2, x, y-cubeL, x-cubeL, y-cubeL/2);
    fill(colour-dark);
    quadB = quad(x, y, x, y+cubeL, x-cubeL, y+cubeL/2, x-cubeL, y-cubeL/2);
    fill(colour-2*dark);
    quadC = quad(x, y, x, y+cubeL, x+cubeL, y+cubeL/2, x+cubeL, y-cubeL/2);
    angleA = angleA + speed;
    pop();

    push();
    translate(width/2+2*cubeL, height/2+2*cubeL);
    rotate(radians(angleB));
    scale(0.8, 0.8);
    fill(colour);
    scale(constrain(mouseX/width, 0.8, 1.5), constrain(mouseX/width, 0.8, 1.5));
    quadA = quad(x, y, x+cubeL, y-cubeL/2, x, y-cubeL, x-cubeL, y-cubeL/2);
    fill(colour-dark);
    quadB = quad(x, y, x, y+cubeL, x-cubeL, y+cubeL/2, x-cubeL, y-cubeL/2);
    fill(colour-2*dark);
    quadC = quad(x, y, x, y+cubeL, x+cubeL, y+cubeL/2, x+cubeL, y-cubeL/2);
    angleB = angleB + 0.9*speed;
    pop();


    push();
    translate(width/2-2*cubeL, height/2+2*cubeL);
    rotate(radians(angleC));
    scale(0.8, 0.8);
    fill(colour);
    scale(constrain(mouseX/width, 0.8, 1.5), constrain(mouseX/width, 0.8, 1.5));
    quadA = quad(x, y, x+cubeL, y-cubeL/2, x, y-cubeL, x-cubeL, y-cubeL/2);
    fill(colour-dark);
    quadB = quad(x, y, x, y+cubeL, x-cubeL, y+cubeL/2, x-cubeL, y-cubeL/2);
    fill(colour-2*dark);
    quadC = quad(x, y, x, y+cubeL, x+cubeL, y+cubeL/2, x+cubeL, y-cubeL/2);
    angleC = angleC + 1.1*speed;
    pop();

    push();
    translate(width/2+2*cubeL, height/2-2*cubeL);
    rotate(radians(angleB));
    scale(0.8, 0.8);
    fill(colour);
    scale(constrain(mouseX/width, 0.8, 1.5), constrain(mouseX/width, 0.8, 1.5));
    quadA = quad(x, y, x+cubeL, y-cubeL/2, x, y-cubeL, x-cubeL, y-cubeL/2);
    fill(colour-dark);
    quadB = quad(x, y, x, y+cubeL, x-cubeL, y+cubeL/2, x-cubeL, y-cubeL/2);
    fill(colour-2*dark);
    quadC = quad(x, y, x, y+cubeL, x+cubeL, y+cubeL/2, x+cubeL, y-cubeL/2);
    angleB = angleB + 0.8*speed;
    pop();

    push();
    translate(width/2-2*cubeL, height/2-2*cubeL);
    rotate(radians(angleC));
    scale(0.8, 0.8);
    fill(colour);
    scale(constrain(mouseX/width, 0.8, 1.5), constrain(mouseX/width, 0.8, 1.5));
    quadA = quad(x, y, x+cubeL, y-cubeL/2, x, y-cubeL, x-cubeL, y-cubeL/2);
    fill(colour-dark);
    quadB = quad(x, y, x, y+cubeL, x-cubeL, y+cubeL/2, x-cubeL, y-cubeL/2);
    fill(colour-2*dark);
    quadC = quad(x, y, x, y+cubeL, x+cubeL, y+cubeL/2, x+cubeL, y-cubeL/2);
    angleC = angleC + 1.2*speed;
    pop();

    push();
    translate(width/2+5*cubeL, height/2);
    rotate(radians(angleA));
    scale(0.5, 0.5);
    fill(colour);
    quadA = quad(x, y, x+cubeL, y-cubeL/2, x, y-cubeL, x-cubeL, y-cubeL/2);
    fill(colour-dark);
    quadB = quad(x, y, x, y+cubeL, x-cubeL, y+cubeL/2, x-cubeL, y-cubeL/2);
    fill(colour-2*dark);
    quadC = quad(x, y, x, y+cubeL, x+cubeL, y+cubeL/2, x+cubeL, y-cubeL/2);
    angleA = angleA + speed;
    pop();

    push();
    translate(width/2-5*cubeL, height/2);
    rotate(radians(angleA));
    scale(0.5, 0.5);
    fill(colour);
    scale(constrain(mouseX/width, 0.8, 1.5), constrain(mouseX/width, 0.8, 1.5));
    quadA = quad(x, y, x+cubeL, y-cubeL/2, x, y-cubeL, x-cubeL, y-cubeL/2);
    fill(colour-dark);
    quadB = quad(x, y, x, y+cubeL, x-cubeL, y+cubeL/2, x-cubeL, y-cubeL/2);
    fill(colour-2*dark);
    quadC = quad(x, y, x, y+cubeL, x+cubeL, y+cubeL/2, x+cubeL, y-cubeL/2);
    angleA = angleA + speed;
    pop();


    //circles
    i = i+50
    for (var i = 0; i < 1000; i += 50){
      noFill();
      stroke(0, 0, 255);
      strokeWeight(0.5);
      alpha
      ellipse(mouseX, mouseY, 150+i, 150+i);
      }
  }
}

The way to make this dynamic is using your mouse,  I started from creating images that has kind of 3D affect. All the cube start from the same position, when the mouse moved, they’ll have a rotating speed which various, so they are going to end at different position eventually. When mouse move outside of canvas, it will turn to the circle image.

Jamie Dorst Project 03 Dynamic Drawing

sketch

/*
Jamie Dorst
Section A
jdorst@andrew.cmu.edu
Project-03
*/

// variables
var saturation1 = 50
var hue1 = 0
var radius = 50
var lineX1 = 100

var ballX1 = 320
var ballY1 = 240
var ballX2 = 240
var ballY2 = 320
var ballX3 = 150
var ballY3 = 300


function setup() {
    createCanvas(640, 480);
    text("p5.js vers 0.7.1 test.", 10, 15);
}

function draw() {
    stroke(255);
    strokeCap(PROJECT);
    colorMode(HSB);
    background(hue1, saturation1, 100);

    // change background color as mouse moves
    // change mouseY to change hue
    // change mouseX to change saturation
    if (mouseX >= 0 & mouseX <= width && mouseY >= 0 && mouseY <= height) {
        saturation1 = mouseX / 5
        hue1 = mouseY
    }

    // draw white line when mouse goes over it
    // lines are 30 away from each other, all the same length
    // stroke increases by 0.2 with each line
    if (mouseX >= 70) {
        line(70, 40, 70, 440);
        strokeWeight(2);
    }
    if (mouseX >= 100) {
        line(100, 40, 100, 440);
        strokeWeight(2.2);
    }
    if (mouseX >= 130) {
        line(130, 40, 130, 440);
        strokeWeight(2.4);
    }
    if (mouseX >= 160) {
        line(160, 40, 160, 440);
        strokeWeight(2.6);
    }
    if (mouseX >= 190) {
        line(190, 40, 190, 440);
        strokeWeight(2.8);
    }
    if (mouseX >= 220) {
        line(220, 40, 220, 440);
        strokeWeight(3);
    }
    if (mouseX >= 250) {
        line(250, 40, 250, 440);
        strokeWeight(3.2);
    }
    if (mouseX >= 280) {
        line(280, 40, 280, 440);
        strokeWeight(3.4);
    }
    if (mouseX >= 310) {
        line(310, 40, 310, 440);
        strokeWeight(3.6);
    }
    if (mouseX >= 340) {
        line(340, 40, 340, 440);
        strokeWeight(3.8);
    }
    if (mouseX >= 370) {
        line(370, 40, 370, 440);
        strokeWeight(4);
    }
    if (mouseX >= 400) {
        line(400, 40, 400, 440);
        strokeWeight(4.2);
    }
    if (mouseX >= 430) {
        line(430, 40, 430, 440);
        strokeWeight(4.4);
    }
    if (mouseX >= 460) {
        line(460, 40, 460, 440);
        strokeWeight(4.6);
    }
    if (mouseX >= 490) {
        line(490, 40, 490, 440);
        strokeWeight(4.8);
    }
    if (mouseX >= 520) {
        line(520, 40, 520, 440);
        strokeWeight(5);
    }
    
    // erase black line when mouse goes over it
    // lines are 30 away from each other, 15 away from the white lines, all the same length
    stroke(0, 0, 0);

    if (mouseX <= 115) {
        line(115, 40, 115, 440);
    }
    if (mouseX <= 145) {
        line(145, 40, 145, 440);
    }
    if (mouseX <= 175) {
        line(175, 40, 175, 440);
    }
    if (mouseX <= 205) {
        line(205, 40, 205, 440);
    }
    if (mouseX <= 235) {
        line(235, 40, 235, 440);
    }
    if (mouseX <= 265) {
        line(265, 40, 265, 440);
    }
    if (mouseX <= 295) {
        line(295, 40, 295, 440);
    }
    if (mouseX <= 325) {
        line(325, 40, 325, 440);
    }
    if (mouseX <= 355) {
        line(355, 40, 355, 440);
    }
    if (mouseX <= 385) {
        line(385, 40, 385, 440);
    }
    if (mouseX <= 415) {
        line(415, 40, 415, 440);
    }
    if (mouseX <= 445) {
        line(445, 40, 445, 440);
    }
    if (mouseX <= 475) {
        line(475, 40, 475, 440);
    }
    if (mouseX <= 505) {
        line(505, 40, 505, 440);
    }
    if (mouseX <= 535) {
        line(535, 40, 535, 440);
    }
    if (mouseX <= 565) {
        line(565, 40, 565, 440);
    }

    // draw medium ball
    // same as background color
    noStroke();
    fill(hue1, saturation1, 100);
    ellipse(ballX1, ballY1, 100, 100);
    // ball coordinates relative to mouse coordinates
    ballX1 = mouseX + 150
    ballY1 = mouseY * 3 - 400

    // draw biggest ball
    // same as background color
    ellipse(ballX2, ballY2, 180, 180);
    // ball coordinates relative to mouse coordinates
    ballX2 = mouseX / 2 + 200
    ballY2 = mouseY / 4 + 200

    // draw smallest ball
    // same as background color
    ellipse(ballX3, ballY3, 60, 60);
    // ball relative to mouse coordinates
    ballX3 = mouseX * 3 - 300
    ballY3 = mouseY / 2
}

I started this project by making the background change and then adding the lines. Then I had the idea to add the circles so that it looked like they weren’t really there, it was just their silhouettes matching the background. I first made the balls bounce around because I thought that looked cool, but then I realized we weren’t supposed to have any elements that were random, so I changed it so that they are attached to the mouse coordinates. I also tried making the line position a variable so that I wouldn’t have to type in numbers for every line, but I couldn’t figure out a way to make that work.

Kyle Leve-Project-03-Dynamic-Drawing

sketch

// Kyle Leve
// Section A
// kleve@andrew.cmu.edu
// Project-03-Dynamic-Drawing

var dirSq = 1;
var dirCir = 1;
var sqX = 150, sqY = 220;
var cirX = 400; cirY = 220;
var speed = 2;
var angleSq = 0;
var angleCir = 0;
var sqWidth = 130;
var sqHeight = 150;
var cirWidth = 150;
var cirHeight = 190;
var dirSqW = 1, dirSqH = 1, dirCirW = 1, dirCirH = 1;

function setup() {
    createCanvas(600, 480);
}

function draw() {
	if (mouseX <= 100) { //change the background at different mouse locations
		background('red');
	}
	if (100 < mouseX & mouseX <= 200) {
		background('orange');
	}
	if (200 < mouseX & mouseX <= 300) {
		background('yellow');
	}
	if (300 < mouseX & mouseX <= 400) {
		background('green');
	}
	if (400 < mouseX & mouseX <= 500) {
		background('blue');
	}
	if (500 < mouseX & mouseX <= 600 || mouseX > 600) {
		background('purple');
	}

	fill(0); // black square around the blue square
	push();
	translate(sqX, sqY);
	rotate(radians(angleSq));
	rectMode(CENTER);
	rect(0, 0, sqWidth, sqHeight);
	pop();

	fill('blue'); //blue square
	push();
	translate(sqX, sqY);
	rotate(radians(angleSq)); //make the squares spin
	rectMode(CENTER);
	rect(0, 0, 100, 100);
	pop();
	angleSq = angleSq + 1;
	if (mouseY >= 300) { //change the spin direction of mouseY is greater than 300
		angleSq = angleSq - 2;
	}

	if (mouseX >= 300) { //makes the square go up and down and bounce off walls
		sqY += dirSq * speed;
	if (sqY > height - 100 || sqY < 0) {
		dirSq = -dirSq;
	}
	}

	if (mouseX < 300) { //makes the square go left and right and bounce off walls
		sqX += dirSq * speed;
	if (sqX > width - 100 || sqX < 0) {
		dirSq = -dirSq;
	}
	}

	sqWidth += dirSqW * speed; //makes the black square's width grow and shrink
	if (sqWidth > 300) {
		dirSqW = -dirSqW;
		sqWidth = 300;
	} else if (sqWidth < 100) {
		dirSqW = -dirSqW;
		sqWidth = 100;
	}

	sqHeight += dirSqH * speed; //makes the black square's height grow and shrink
	if (sqHeight > 300) {
		dirSqH = -dirSqH;
		sqHeight = 300;
	} else if (sqHeight < 100) {
		dirSqH = -dirSqH;
		sqHeight = 100;
	}

	fill(0); //black circle
	push();
	translate(cirX, cirY);
	rotate(radians(-angleCir)); //makes the black circle spin in the opposite direction from the square 
	ellipseMode(CENTER);
	ellipse(0, 0, cirWidth, cirHeight);
	pop();

	fill('red'); //red circle
	push();
	translate(cirX, cirY);
	rotate(radians(-angleCir)); //makes the red circle spin in the opposite direction from the blue square
	ellipseMode(CENTER);
	ellipse(0, 0, 120, 150);
	pop();
	angleCir = angleCir + 1;
	if (mouseY >= 300) { //changes spin direction
		angleCir = angleCir - 2;
	}

	if (mouseX >= 300) { //makes the circle go left and right when the square goes up and down
		cirX += dirCir * speed;
	if (cirX > width - 60 || cirX - 60 < 0) {
		dirCir = -dirCir;
	}
	}
	if (mouseX < 300) { //makes the cirle go up and down when the square goes left and right
		cirY += dirCir * speed;
	if (cirY > height - 75 || cirY - 75 < 0) {
		dirCir = -dirCir;
	}
	}

	cirWidth += dirCirW * speed; //makes the black circle's width grow and shrink
	if (cirWidth > 300) {
		dirCirW = -dirCirW;
		cirWidth = 300;
	} else if (cirWidth < 120) {
		dirCirW = -dirCirW;
		cirWidth = 120;
	}
	cirHeight += dirCirH * speed; //makes the black circle's height grow and shrink
	if (cirHeight > 300) {
		dirCirH = -dirCirH;
		cirHeight = 300;
	} else if (cirHeight < 150) {
		dirCirH = -dirCirH;
		cirHeight = 150;
	}

}

Doing the project I wanted to experiment with different movements rather than having a stationary picture. I decided to use a lot of the recent topics we learned such as rotation, motion, and variables to create two objects that behaved in contrary motion with each other. I found it very interesting to have to create one object and have the other object be based on how to first object was behaving.

Kyle Leve – Looking Outwards- 03

“Robot, Doing Nothing” visual

A project that I came across that I find interesting is “Robot, Doing Nothing” by Emmanuel Gollob and Johannes Braumann. What I found intriguing about this project is that it was conducted all in the time in which Gollob and Braumann were doing nothing. I feel that this demonstrates that even when someone is doing nothing, their brain is still active and formulating new ideas and projects to work on. Nevertheless, looking at the project itself fascinated me. There was nothing particularly complicated or complex about what is going on, however I found myself being relaxed my what I was watching. The slow rotations of the machine as well as the different colored strings made what I was watching very soothing. I could see this technology being used in the future in calm settings in which someone goes to relax. I can see many therapeutic applications with this machinery that can be used to reduce anxiety and stress.

Link: https://vimeo.com/233122890

Katherine Hua – Project-03 – Dynamic Drawing

sketch

/* Katherine Hua
Section A
khua@andrew.cmu.edu
Project-03-Drawing Variables*/

var x = 0;
var y = 0;


var width1 = 50;
var height1 = 50;
var width2 = 150;
var height2 = 150;
var width3 = 400;
var height3 = 400;

var xRGB = 255/600
var yRGB = 255/600

function setup() {
    createCanvas(600, 600);
    background(0);
}

function draw() {
	background(0);
	rectMode(CENTER); //making it so that the x,y indicates the center of the rectangle instead of the top left corner
	angleMode(DEGREES); //changing mode from radians to angles
	translate(300, 300); // the elements will rotate with this point acting as the center

	var squarerotatemap = map(mouseX, 0, width, 0, 360); //mouseX will control the movement of the spinning elements

//inner
	noFill(); 
	strokeWeight(1);

    stroke(abs(mouseX-mouseY) * yRGB, mouseY * yRGB, mouseX * xRGB); //color will change based on mouse position on canvas

    // the following are drawing squares rotates at different angles that are spinning depending on the mouse position
	push();
	rotate(0 + squarerotatemap);
	rect(x, y, mouseX/12, mouseY/12); //mouseX controls the size of the square

	push();
	rotate(30);
	rect(x, y, mouseX/12, mouseY/12);
	pop();

	push();
	rotate(60);
	rect(x, y, mouseX/12, mouseY/12);
	pop();

	push();
	rotate(90);
	rect(x, y, mouseX/12, mouseY/12);
	pop();

	push();
	rotate(120);
	rect(x, y, mouseX/12, mouseY/12);
	pop();

	push();
	rotate(150);
	rect(x, y, mouseX/12, mouseY/12);
	pop();


//middle1
	stroke(mouseX * xRGB, abs(mouseX-mouseY)* xRGB, mouseY * yRGB);

	rotate(0+ squarerotatemap);
	rect(x, y, mouseX/4, mouseY/4);

	push();
	rotate(15);
	rect(x, y, mouseX/4, mouseY/4);
	pop();

	push();
	rotate(30);
	rect(x, y, mouseX/4, mouseY/4);
	pop();

	push();
	rotate(45);
	rect(x, y, mouseX/4, mouseY/4);
	pop();

	push();
	rotate(60);
	rect(x, y, mouseX/4, mouseY/4);
	pop();

	push();
	rotate(75);
	rect(x, y, mouseX/4, mouseY/4);
	pop();

	push();
	rotate(90);
	rect(x, y, mouseX/4, mouseY/4);
	pop();

	push();
	rotate(105);
	rect(x, y, mouseX/4, mouseY/4);
	pop();

	push();
	rotate(120);
	rect(x, y, mouseX/4, mouseY/4);
	pop();

	push();
	rotate(135);
	rect(x, y, mouseX/4, mouseY/4);
	pop();

	push();
	rotate(150);
	rect(x, y, mouseX/4, mouseY/4);
	pop();

	push();
	rotate(165);
	rect(x, y, mouseX/4, mouseY/4);
	pop();

//outer
	stroke(mouseX * yRGB, mouseY * xRGB, abs(mouseX-mouseY)* xRGB);


	rotate(0 + squarerotatemap);
	rect(x, y, mouseX/2, mouseY/2);

	push();
	rotate(15);
	rect(x, y, mouseX/2, mouseY/2);
	pop();

	push();
	rotate(30);
	rect(x, y, mouseX/2, mouseY/2);
	pop();

	push();
	rotate(45);
	rect(x, y, mouseX/2, mouseY/2);
	pop();

	push();
	rotate(60);
	rect(x, y, mouseX/2, mouseY/2);
	pop();

	push();
	rotate(75);
	rect(x, y, mouseX/2, mouseY/2);
	pop();

//outerouter

	stroke(abs(mouseX-mouseY) * yRGB, mouseX * yRGB, mouseX * xRGB);

	rotate(0 + squarerotatemap);
	rect(x, y, mouseX, mouseY);

	push();
	rotate(105);
	rect(x, y, mouseX, mouseY);
	pop();

	push();
	rotate(120);
	rect(x, y, mouseX, mouseY);
	pop();

	push();
	rotate(135);
	rect(x, y, mouseX, mouseY);
	pop();

	push();
	rotate(150);
	rect(x, y, mouseX, mouseY);
	pop();

	push();
	rotate(165);
	rect(x, y, mouseX, mouseY);
	pop();



//inner
	noFill();
	strokeWeight(1);
	stroke(mouseX * xRGB, abs(mouseX-mouseY)* xRGB, mouseY * yRGB);

	push();
	rotate(0 + squarerotatemap);
	rect(x, y, 300-mouseX/10, 300-mouseY/10);

	push();
	rotate(30);
	rect(x, y, 300-mouseX/10, 300-mouseY/10);
	pop();

	push();
	rotate(60);
	rect(x, y, 300-mouseX/10, 300-mouseY/10);
	pop();

	push();
	rotate(90);
	rect(x, y, 300-mouseX/10, 300-mouseY/10);
	pop();

	push();
	rotate(120);
	rect(x, y, 300-mouseX/10, 300-mouseY/10);
	pop();

	push();
	rotate(150);
	rect(x, y, 300-mouseX/10, 300-mouseY/10);
	pop();


//middle
	stroke(mouseX * xRGB, abs(mouseX-mouseY)* xRGB, mouseY * yRGB);

	rotate(0+ squarerotatemap);
	rect(x, y, mouseX/3, mouseY/3);

	push();
	rotate(15);
	rect(x, y, mouseX/3, mouseY/3);
	pop();

	push();
	rotate(30);
	rect(x, y, mouseX/3, mouseY/3);
	pop();

	push();
	rotate(45);
	rect(x, y, mouseX/3, mouseY/3);
	pop();

	push();
	rotate(60);
	rect(x, y, mouseX/3, mouseY/3);
	pop();

	push();
	rotate(75);
	rect(x, y, mouseX/3, mouseY/3);
	pop();

	push();
	rotate(90);
	rect(x, y, mouseX/3, mouseY/3);
	pop();

	push();
	rotate(105);
	rect(x, y, mouseX/3, mouseY/3);
	pop();

	push();
	rotate(120);
	rect(x, y, mouseX/3, mouseY/3);
	pop();

	push();
	rotate(135);
	rect(x, y, mouseX/3, mouseY/3);
	pop();

	push();
	rotate(150);
	rect(x, y, mouseX/3, mouseY/3);
	pop();

	push();
	rotate(165);
	rect(x, y, mouseX/3, mouseY/3);
	pop();
}

My design is meant to look like as if you’re looking into a kaleidoscope. This project really helped me get more familiar with understanding how variables work and how the mouse position can work in relation to other elements of the design.

Curran Zhang- LookingOutwards-3

Four chair designs generated from the usage of AI

The chAIr Project was created through the collaborations of Philipp Schmitt, Steffen Weiss, and two neural networks. The point of this project as to reverse the roles of chairs and human and switch up the normal perspective of everyday objects. As designs for chairs become more functional and efficient for the everyday usage, the idea of creating a chair without those constraint was put into play. Through the usage of AI, 20th-century chair designs were contained in a data set and the best quality of the chairs were pulled out. The best quality is no longer based on functional or efficiency but based off what is the prettiest and most visually captivating. Through the creations of AI, there were chairs that looked nothing like furniture or not functional at all.

Generative designs created to complete the final concept

This project was interesting as it tries to let observers have a perspective that is complete opposite that of a human perspective. Although the chairs generated hold no function as a chair, this project stimulated us into thinking what would be the “prettiest” chair without normal constraints of functionality. I believe that kind of thinking should be implemented in all designer’s concepts. Creating a perspective that doesn’t follow the observers’ assumption; creating chairs that are not for sitting or creating space that shouldn’t exist. Having observers questioning their predetermined thoughts help push designs to a new level.

Four chairs that does not need to follow the concept of sitting

The chAIr Project – Reversing the role of human and machine in the design process

Katherine Hua – Looking Outwards – 03

Singapore’s Jewel Changi Airport features an art installation called “Kinetic Rain” created by German design house ART+COM. The installation is meant to offer a calming effect in the busy Singapore airport terminal. This visual experience of fluidity, distinctive shapes, elegant and refined movements was brought to life through parametric computational algorithms and digital fabrication. Kinetic Rain is made of up more than a thousand bronze droplets attached to the ceiling through steel wires. The steel wires are connected to a computer program that can control how the bronze droplets rise and fall. The computer designed movement creates slow, fluid to create refined yet simple shapes, from abstract to three-dimensional forms. I admire how this art installation was able to use parametric digital design and parametric fabrication methods to explore the how the computer can be used to be more than just a tool. The creator’s of artistic sensibilities are reflected in Kinetic Rain as they use computers as an artistic medium that explores the technological and scientific aspects.

Kinetic Rain by ART+COM, 2012

Looking Outwards – 03 Min Lee

Skyline is a computer-generative music video by Raven Kwok created using many core principles which were used to generate beautiful visual patterns, one of the principles being Voronol tesselation, a geometric model that is used by many computational artists. The geometric patterns in the music video create a behavioral diagram that shifts itself not only according to the audio of the song but also to the animated sequences of the vocalist singing.

What I find amazing about this project is the artist’s ability to use large amounts of geometric shapes to seamlessly create visual stimulation to represent not only the instrumental, but to also use those same shapes to create a smoky figure of the vocalist. The vocalist’s face is fully recognizable as a person if not only for a split second before once again seamlessly changing into an array of different shapes and inkblot-like figures. The creator’s artistry shines through in his ability to not only create computer-generative, but to also use music as a part of his medium.

Source: http://parametricworld.tumblr.com/post/129838926923/prostheticknowledge-skyline-music-video-for