Dynamic Drawing – sehenry

While working on this project, I had a lot of trouble figuring out what the boundaries and positions of my shapes would be and which actions should they do. With a couple of restarts, I finally decided what my art would look like and I am very happy with the result. It took me a little bit but I got it done!

sketch

//Seth Henry

//Section B 10:30 Tuesday

//sehenry@andrew.cmu.edu

//Assignment- Dynamic Drawing





var cirDiam = 200
var sqLength = 200
var B = 100
var sizeR = 60
var sizeE =60



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

function draw() {
	colR = map(mouseX, 0, width, 0, 100); //sliding left and right will change background from black to blue
	colG = map(mouseX, 0, width, 20, 150);
	colB = map(mouseX, 0, width, 10, 200);
	background(colR, colG, colB);


	if (mouseX > width/2) { //if mouse is on the right half of the screen, an ellipse will apear
		fill(B);
		ellipse(width/2, height/2, cirDiam, cirDiam);
	} 

	if (mouseX < width/2){ //if mouse is on the left half of the screen, a rect will appear
	fill(B); 
	rectMode(CENTER);
	rect(width/2, height/2, sqLength, sqLength);
	}


push(); //small circle spinning clockwise
	fill(random(0,255));
	rotate(millis()/1000);
	ellipse(160, 360, sizeE, sizeE);
	pop(); 

	push(); //small circle spinning counterclockwise
	fill(random(0,255));
	rotate(-millis()/1000);
	ellipse(480, 360, sizeE, sizeE);
	pop();
	  

	var oppositeX = width-mouseX //Similar to old project (Allows circles and rectangles to be placed opposite of one another)
	var oppositeY = height -mouseY
 
    fill(255); //opposite X rectangle
    rect(mouseX, height/2, sizeR, sizeR);
 
    fill(0); //opposite X ellipse
    ellipse(oppositeX, height/2, sizeE, sizeE);

    
    fill(255); //opposite Y rectangle
   	rect(width/2, mouseY, sizeR, sizeR);
	

    fill(0); //opposite Y ellipse
    ellipse(width/2, oppositeY, sizeE, sizeE);

    textAlign(CENTER); //allows my name to follow the mouse and grow or shrink depending on placement
    textStyle(BOLD);
    textSize(mouseY-mouseX);
    text("SethHenry", mouseX, mouseY);


    push(); //rotates the rectangle found in the middle
    fill(B);
    translate(width/2, height/2);
    rotate(radians((mouseX/2)%180));
    rect(0,0, 50, 50);
    pop();

}

function mousePressed() { //if mouse is pressed...
	if (dist(mouseX, mouseY, width/2, height/2) < 100 ) {
		B=random(0,255); //the color of the non spinning circles and the rectangles will change color
		sizeR=random(10,100); // the size of the opposite rectangle will change size
		sizeE=random(10,100); // the size of the opposite ellipse will change color


		
	}

}


GarrettRauck-Project-3

sketch

//Garrett Rauck
//Section C
//grauck@andrew.cmu.edu
//Project-03

/////////////////////////////
//GLOBAL VARS
/////////////////////////////
//colors
var positive, negative, hold;
// triangles
var triangle1LegLength, triangle1P1X, triangle1P1Y, triangle1P2X, triangle1P2Y,
    triangle1P3X, triangle1P3Y;
// lines
var linesPerQuadrant, lineSpacingX, lineSpacingY, x1, y1, x2, y2;

/////////////////////////////
//HELPER FNS
/////////////////////////////
function mousePressed() {
	hold = positive;
	positive = negative;
	negative = hold;
}

/////////////////////////////
//RUN!
/////////////////////////////
function setup() {
	//canvas setup
    createCanvas(640, 480);
    textFont("Courier New");
    textAlign(CENTER);

    //init vars
    positive = 255;
    negative = 0;
    linesPerQuadrant = 10;
    lineSpacingX = (width/2)/linesPerQuadrant;
    lineSpacingY = (height/2)/linesPerQuadrant;
}

function draw() {
	//clear drawing
	background(negative);

	// draw triangles
	fill(positive);
	triangle1LegLength = height-mouseY;
	triangle1P1X = mouseX;
	triangle1P1Y = height-triangle1LegLength;
	triangle1P2X = mouseX - triangle1LegLength;
	triangle1P2Y = height;
	triangle1P3X = mouseX + triangle1LegLength;
	triangle1P3Y = height;
	triangle(triangle1P1X, triangle1P1Y,
		     triangle1P2X, triangle1P2Y,
		     triangle1P3X, triangle1P3Y);
	triangle2LegLength = mouseY;
	triangle2P1X = mouseX;
	triangle2P1Y = triangle2LegLength;
	triangle2P2X = mouseX - triangle2LegLength;
	triangle2P2Y = 0;
	triangle2P3X = mouseX + triangle2LegLength;
	triangle2P3Y = 0;
	triangle(triangle2P1X, triangle2P1Y,
		     triangle2P2X, triangle2P2Y,
		     triangle2P3X, triangle2P3Y);

	stroke(positive);
	//vary stroke weight based on mouse distance from center
	strokeWeight(dist(mouseX,mouseY,width/2,height/2)/height);
	// draw lines
	for (var i = 0; i < linesPerQuadrant + 1; i++) {
		x1 = width/2;
		y1 = height/2 - i*lineSpacingY;
		x2 = width/2 - (mouseX/lineSpacingX/2-i)*lineSpacingX;
		y2 = height/2;
		line(x1,y1,x2,y2); //quadrant 1
		line(x1,y1,width-x2,y2); //quadrant 2
		line(x1,height-y1,x2,height-y2); //quadrant 3
		line(x1,height-y1,width-x2,y2); //quadrant 4
	};

	// text
	fill(negative);
	push(); //isolate transformations for upper text
		translate(mouseX, mouseY-height/2);
	    rotate((mouseX/width)*TWO_PI);
	    text("click to invert", 0, 0);
	pop();
	push(); //isolate transformations for lower text
		translate(mouseX, mouseY+height/2);
	    rotate((mouseX/width)*TWO_PI);
	    text("click to invert", 0, 0);
	pop();
}

After viewing some examples of dynamic drawings online, I decided that I wanted to use strictly black and white artwork and use the geometry to create dynamism in the drawing. I did a did some scratch-work in my sketchbook to try to figure out some of the math behind the geometry I wanted to create; however, to be honest, I was not able to get the “string art” to transition exactly as I wanted it to. After spending a good chunk of time trying to figure it out, I decided to just roll with it. Cheers.

img_1614
Scratch-work done in my sketchbook as I attempted to work out some of the math behind the graphic.

Grace Cha- 03- Dynamic Drawing

 *Move Mouse Horizontally*

sketch

//Grace Cha
//Section C
//heajinc@andrew.cmu.edu
//Project-03-Dynamic Drawing

var modifier = 50;
var miniCircle = 80;

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

function draw() {

  //BACKGROUND CHANGING 
	var colorR = map(mouseX, 0, width, 145, 0);
    var colorG = map(mouseX, 0, width, 211, 0);
    var colorB = map(mouseX, 0, width, 246, 0);
    background(colorR, colorG, colorB); 
    noStroke();


// MINI UNMOVING CIRCLES
    stroke("#14BC98");
    strokeWeight(5);
    ellipse(miniCircle, height/2, 10,10); // FARTHEST LEFT CIRCLE
    ellipse(7 * miniCircle, height/2, 10,10); // FARTHEST RIGHT CIRCLE
    ellipse(width/2,3 * height/4, 10,10);  //BOTTOM CIRCLE
    ellipse(width/2, height/4, 10,10); 


    fill(60, 120, 140);


//CIRCLE GROWTHS
// BOTTOM RIGHT CIRCLE GROWTH
    ellipse(3 * width/4, 3 * height/4, modifier, modifier);
    
    // BOTTOM LEFT CIRCLE GROWTH
    ellipse(width/4, 3 * height/4, modifier, modifier);

    // TOP RIGHT CIRCLE GROWTH
    ellipse(3 * width/4, height/4, modifier, modifier);

    // TOP LEFT CIRCLE GROWTH
    ellipse(width/4, height/4, modifier, modifier);

    // BOTTOM RIGHT CIRCLE GROWTH
    ellipse(3 * width/4, 3 * height/4, modifier, modifier);

    // CENTER CIRCLE GROWTH
    ellipse(width/2, height/2, modifier, modifier);

    if (mouseX >= width/2) {
    modifier = modifier + .5; //GROWTH
    } else{
    modifier = modifier - .5; //DECREASING
    }
    if (modifier <0){
      modifier = (-1) * modifier; // RESTRICT FROM GOING NEGATIVE
    }
    if (modifier > 100){
    modifier = modifier - .5;
    }

// CENTER CHUNK
	push();
	translate(width/2, height/2);
	rotate(-mouseX,10);
	fill(0,196,172);
	noStroke();
	quad(30, 300, 86, 20, 69, 63, 30, 90)
    noFill();
    stroke("#FDFEFD");
    stroke("#74E19F");
    strokeWeight(10);
    arc(50, 55, 50, 50, PI+QUARTER_PI, TWO_PI); 
	  pop();

// CENTER "X" SHAPED POLYGON
   push();
   translate(width/2, height/2);
   rotate(mouseX/70,10); //MAKES IT MOVE A LITTLE SLOWER
   fill("#358290");
   stroke("#FDFEFD");
   strokeWeight(5);
   quad(30, 100, 86, 20, 80, 63, 30, 90)
   pop();

//  CENTER ARCS 
    push();
    translate(width/2, height/2);
    rotate(mouseX/20,60); //ROTATION IS SLOWER
    stroke("#FDFEFD");
    strokeWeight(5);
    noFill();
    ellipse(0,0,10,10); //CENTER CIRCLE
    noFill();
    //ellipse(0,0, 120,120); //BIG CIRCLE
    arc(50, 55, 50, 50, PI+QUARTER_PI, TWO_PI);
    pop();

// TOP LEFT CHUNK
    push();
    var fillR = map(mouseX, 0, width,205, 185); // SHAPE COLOR CHANGES
    var fillG = map(mouseX, 0, width, 255, 245);
    var fillB = map(mouseX, 0, width, 246, 0);
    fill(fillR, fillG, fillB);
	translate(width/4, height/4);
	rotate(-mouseX/30,10);
    stroke("#14BC98");
    strokeWeight(5);
    quad(38, 31, 86, 20, 69, 63, 30, 76)
    quad(20, 31, 10, 10, 20, 40, 20, 76)
    ellipse(0,0,10,10); //CENTER CIRCLE
    noFill();
    ellipse(0,0, 120,120); //BIG CIRCLE
    pop();

//BOTTOM RIGHT CHUNK
    push();
    var fillR = map(mouseX, 0, width,205, 185); // SHAPE COLOR CHANGES
    var fillG = map(mouseX, 0, width, 255, 245);
    var fillB = map(mouseX, 0, width, 246, 0);
    fill(fillR, fillG, fillB);
    translate( 3 *width/4, 3* height/4);
    rotate(mouseX/30,10);
    stroke("#14BC98");
    strokeWeight(5);
    quad(38, 31, 86, 20, 69, 63, 30, 76)
    quad(20, 31, 10, 10, 20, 40, 20, 76)
    ellipse(0,0,10,10); //CENTER CIRCLE
    noFill();
    ellipse(0,0, 120,120); //BIG CIRCLE
    pop();

// Top RIGHT CHUNK
    push();
	translate(3 * width/4, height/4);
	rotate(-mouseX/1,10);
	stroke("#FDFEFD");
	strokeWeight(5);
    quad(38, 31, 86, 20, 69, 63, 30, 76)
    quad(20, 31, 10, 10, 20, 40, 20, 76)
    ellipse(0,0,10,10);//CENTER CIRCLE
    pop(); 

//  BOTTOM LEFT CHUNK
    push();
    translate( width/4, 3 * height/4);
	rotate(mouseX/1,10);
	stroke("#FDFEFD");
	strokeWeight(5);
    quad(38, 31, 86, 20, 69, 63, 30, 76)
    quad(20, 31, 10, 10, 20, 40, 20, 76)
    ellipse(0,0,10,10);//CENTER CIRCLE
    pop();
  
}

This project was inspired by hurricane movements.  Back at home (Texas), it is hurricane season so I thought I would like to replicate the spinning movements that are shown on the news. This project consisted of mostly trial and error and switching small aspects across the board.  I played around with different speeds, colors, size, and direction of movements.

Diana Connolly – Looking Outwards 3

Lustre, 2015
My friend Rehan Butt created a clothing line named Lustre for the 2015 Lunar Gala show with two of his friends, using algorithms to help produce their clothes. Their clothing line was termed by the audience as being the “origami line” because thick white paper was laser cut and then folded in geometric shapes to fit the models. The algorithms to do this were as follows: The team scanned each of their models using an ABB robot equipped with a camera to take many photos of each person, to then be compiled on AutoDesk’s 123D Catch for the sake of creating a 3D mesh model. With the 3D model of each person, the team was able to fit their 2D drawings of the clothing designs onto the 3D models, using the program Rhino to create the shapes of the clothes digitally. Taking it from 2D to 3D required an algorithm to determine where the volume of the clothing would be, and thus where to create the folds. These algorithms helped to manifest the team’s artistic sensibilities in the line’s final form because they used software and math to create the geometric shapes of the clothes, which all required high levels of detail, as well as consistency with the other geometric components. Once these geometric paper components were cut and folded, the team added iridescent, multi-chrome fabric accents to each of the clothing pieces. I absolutely loved this juxtaposition between the two polarized components, as the fluidity and colorfulness of the fabric contrasted with the rigidity and stark whiteness of the paper. I thought that the overall look of each piece was very enticing, and effective in highlighting the key features of both the paper elements and the fabric elements. Below are images of a few of the pieces, as well as a video of the models walking from the 2015 show!

Link to Rehan’s website page about the clothing line: http://rehanbutt.com/fashion

untitled-1
5 selected images from Lustre


Video of Lustre being modeled in the 2015 Lunar Gala show

Janet Lee Looking Outwards-03

The project that I found the most inspirational was the jewelry item project by Rachel Binx and Sha Hwang (year not mentioned). I was inspired mostly because it had a sentimental meaning to the customer who was buying the jewelry. The algorithm that the creators used was to aim for the sentimental value I suppose. The creators’ artistic sensibilities were that they aimed to make a meaningful product such as the cities that meant a lot to the customers and they produced it by using graphs. Most of the time it is hard to connect graphs and accessories because two of them seem so different from each other. That is why this particular jewelry project has inspired me.

Parametric 3D Form


meshu-rachel

Kyle Lee Looking Outward 3

standley-1

When I first saw this project, I was immediately drawn in. I think there are three things that I most admire about this project. First is the intricate detail and form of the “stained glass window.” Needless to say that Eric Standley did a terrific job in forming a compelling and intriguing structure. Furthermore, I find the fact that this beautifully complex piece is done with simple paper makes this project even more fascinating. Finally, the craft is marvelous. In my design classes, I have come to greatly appreciate and be sensitive to fine craft. I strive to reach fine craft in my drawings, physical project, and every aspect of my work and this project certainly is an inspiration.

The basic algorithms underneath this project are all fairly simple and not to far from the simple drawing that we have been doing in class. Each layer by itself is comprised of simple shapes and curves. Its the advanced layering that really makes this project more than just a visual. Standley didn’t actually map this out in 3D, but drew each layer separately. His ability to visualize multiple negative spaces effectively is truly expressed through this proeject.

Jess Medenbach-Looking Outwards-3

Frank Stella is an abstract artist who has been making work since the 1950’s. Initially making work that was minimalist illustration, paintings and abstract sculpture, Stella has recently moved on to creating images in 3D computer programs and then printing those out to be huge scale 3D sculptures.

I find this work to be really inspiring because he is making use of new technology to further artistic impulses and ideas he has already been working on for 50+ years. The flexibility of a computer program to extend those impulses and grant the ability to think even bigger is really inspiring.

One can now take an image they would draw and render it out with dimensionality while still playing with philosophical ideas and emotional impulses the way one would with painting, illustration or metal sculpture. Instead of the work in a computer program being dictated by the constraints of the program itself, he conceives of the idea or the feeling first and then uses the tools to render it out. Due to the comparative ease of 3D printing, he is then able to make these ideas larger scale and with more complexity, which I find very inspiring.

ink_032014_04-250x312

Project-02-Variable Face – Sara Lyons

saral-variableface

//variables for face
var eyeSize = 35;
var pupilSize = 10;
var hairLength = 250;
var hairWidth = 100;
var browY = 120
var browLength = 25;
var browWidth = 50;

    //create the canvas
function setup() {
    createCanvas(640, 480);
}
	//build the basic face
function draw() {
    background(200, 50, 50);
    //hair
    rectMode(CORNER);
    noStroke();
    fill(240);
    rect(width / 4, height / 5, hairWidth,  hairLength);
    fill(5);
    rect(width / 4, height / 5, hairWidth / 2, hairLength);
    //mouth
    fill(10);
    strokeWeight(5);
    rectMode(CENTER);
    rect(width / 2, 275, 150, 35);
    //eyes
    var eyeLX = (width / 4) + hairWidth
    var eyeRX = eyeLX + hairWidth
    fill(5);
    ellipse(eyeLX, height / 3, eyeSize, eyeSize);
    ellipse(eyeRX, height / 3, eyeSize, eyeSize);
    //pupils
    fill(255);
    ellipse(eyeLX, height / 3, pupilSize, pupilSize);
    ellipse(eyeRX, height / 3, pupilSize, pupilSize);
    //brows
    stroke(5)
    strokeWeight(15)
    line(240, browY, 280, browY);
  	line(340, browY, 380, browY); 
  	}

    //create mouse functions: when the mouse is clicked, 
    //the size or position of these elements change value.
function mousePressed() {
     eyeSize = random(20, 70);
     browY = random(140, 90);
     pupilSize = random(3, 30);
}

I created a number of variables as I built this face, inspired by modular 1960s design styles. After building the face, I spent a while experimenting with randomizing the size and position of all the elements and chose the three (eye size, pupil size, and eyebrow position) that I found most strongly affected the expressive qualities of the face.

Christine Kim – Project -02

sketch

//Christine Kim
//Section A (Tuesdays 9:00)
//haewannk@andrew.cmu.edu
//Project-02

var eyeWidth = 13;
var eyeHeight = 15;
var faceWidth = 130;
var faceHeight = 150;
var noseWidth = 7
var noseHeight = 10
var eyebrowsWidth = 10
var eyebrowsHeight = 3 
var mouthWidth = 13
var mouthHeight = 5
var cheekWidth = 15;
var cheekHeight = 5;
 
function setup() {
    createCanvas(640, 480);
}
 
function draw() {
    background(198,234,162);
    noStroke();
    fill(241,212,177);
    
    //face
    ellipse(width / 2, height / 2, faceWidth,  faceHeight);
    
    //eyes
    fill(73,45,37);
    ellipse(287,220, eyeWidth, eyeHeight);
    ellipse(355,220, eyeWidth, eyeHeight);

    //nose
    fill(186,155,129);
    ellipse(width/2,height/2,noseWidth,noseHeight);

    //eyebrows
    fill(86,47,44);
    ellipse(288,200,eyebrowsWidth,eyebrowsHeight);
    ellipse(353,200,eyebrowsWidth,eyebrowsHeight);

    //mouth
    fill(198,59,24);
    ellipse(width/2,280,mouthWidth,mouthHeight);

    //cheek
    fill(229,142,195);
    ellipse(280,240,cheekWidth,cheekHeight);
    ellipse(360,240,cheekWidth,cheekHeight);
}
 
function mousePressed() {
    // when the user clicks, these variables are reassigned
    // to random values within specified ranges. For example,
    // 'faceWidth' gets a random value between 75 and 150.
    faceWidth = random(75, 150);
    faceHeight = random(100, 200);
    eyeWidth = random(7, 20);
    eyeHeight = random(5,20)
    noseWidth = random(5,20);
    noseHeight = random(7,30);
    eyebrowsWidth = random(7,20);
    eyebrowsHeight = random(3,8);
    mouthWidth = random(5,20);
    mouthHeight = random(2,15);
    cheekWidth = random(5,20);
    cheekHeight = random(3,8);
}

Brian Bizier – Looking Outwards 02

objfragmentaris_2015_11_29_011210_429

This is a piece of work by artist Frederik Vanhoutte. It appealed to me for a number of reasons. First, you have the pop culture reference, making me think of Any Warhol. Second, you have a series of repetition that I tend to associate with the music of Philip Glass. There’s also something about it that reminds me of religious sculpture. I imagine the code that created this piece utilizes multiple variables that reference one another, interlocking if you will. This piece tells me that the author is socially conscious and is adept at manipulating familiar images in new ways.