Taisei Manheim – Looking Outward – 03

The project I chose was Coded Clay by Brian Peters, a former architecture professor at Carnegie Mellon University.  As an architecture student I appreciate how he used architectural software such as Rhino and Grasshopper to parametrically design intricate pottery.  He starts by hand sketching the design that he wants and then he creates a custom Grasshopper script to design the movements of the 3D printer. The 3D printer was custom made by him in order to use clay and the tiny zig-zag movements with the path of the machine give the sense of the pottery being woven.  Once printed, the pieces have to dry for several days and then they are fired in a kiln twice, once before glazing and once afterwards. The idea for Coded Clay came from Brian Peter’s time in the Netherlands where he worked on 3D printing with clay within an architecture firm in Amsterdam.

Austin Garcia – Project 02 – Variable Face – 03


sketch

/*		Austin Garcia
		Section C
		aegarcia@andrew.cmu.edu
		Project - 02
*/
// Simple beginning template for variable face.
var eyeSize = 20;
var faceWidth = 60;
var faceHeight = 150;
var pupilSize = 5;
var randomColor = color(random(255),random(255),random(255));
//var eyebrowR = 225
//var eyebrowL = 115


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

function draw() {
    background(180);
    fill(245, 245, 220)
    ellipse(width / 2, height / 2, faceWidth,  faceHeight);
    var eyeLX = width / 2 - faceWidth * 0.25;
    var eyeRX = width / 2 + faceWidth * 0.25;
    var pupilLX = width / 2 - faceWidth * .25;
    var pupilRX = width / 2 + faceWidth * .25;
    ellipse(eyeLX, height / 2, eyeSize, eyeSize);
    ellipse(eyeRX, height / 2, eyeSize, eyeSize);
//  eyebrows
  //  line (eyeLX + 10, height - 100, eyeLX - 5, eyebrowL)
    //line (eyeRX + 10, height - 100, eyeLX - 5, eyebrowR)
//  pupils
    var randomColor = color(random(255),random(255),random(255));
    fill(randomColor)
    if  (mouseY > 150)
    fill(0)
    ellipse(pupilLX, height / 2, pupilSize, pupilSize);
    ellipse(pupilRX, height / 2, pupilSize, pupilSize);



  }
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(50, 100);
    faceHeight = random(100, 200);
    eyeSize = random(10, 30);
    pupilSize = random(2, 8);
  //  eyebrowL = random(100 - 120)
  //  eyebrowR = random(210 - 230)



}

Kimberlyn Cho- Project 02- Variable Face

I decided to draw a hotdog because of a sudden late night craving. After a few iterations of different hotdogs, I focused on varying the droopiness of the eyelids to portray a sleepy hotdog. 

variable

/* Kimberlyn Cho
Section C
ycho2@andrew.cmu.edu
Assignment-02 */

//background
var R = 179;
var G = 236;
var faceHeight = 700;
var droop = 180;
var mouthW = 60;
var mouthH = 10;

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

function draw() {
    //background
    background(R, G, 255);

    //face
    strokeWeight(5);
    fill(255, 121, 92);
    ellipse(320, 480, 350, faceHeight);

    //hands
    fill(255, 204, 102);
    ellipse(320 - 175, 225 + faceHeight * 0.4, 150, 200);
    ellipse(320 + 175, 225 + faceHeight * 0.4, 150, 200);

    //eyes
    strokeWeight(0);
    fill("white");
    var eyeLX = width / 2 - 350 * 0.15;
    var eyeRX = width / 2 + 350 * 0.15;
    var eyeLY = 480 - faceHeight * 0.3;
    ellipse(eyeLX, eyeLY, 40, 60);
    ellipse(eyeRX, eyeLY, 40, 60);
    fill("black");
    ellipse(eyeLX, eyeLY, 25, 50);
    ellipse(eyeRX, eyeLY, 25, 50);

    //eyelids
    strokeWeight(3);
    fill("green");
    arc(eyeLX, eyeLY, 45, 70, droop, 0, OPEN);
    arc(eyeRX, eyeLY, 45, 70, droop, 0, OPEN);

    //mouth
    strokeWeight(0);
    fill("yellow");
    ellipse(320, 480 - faceHeight * 0.15, mouthW * 3, mouthH * 6);
    fill("red");
    ellipse(320, 480 - faceHeight * 0.15, mouthW * 2, mouthH * 4);
    fill("white");
    ellipse(320, 480 - faceHeight * 0.15, mouthW, mouthH);


}

function mousePressed() {
    //background
    R = random(150, 200);
    G = random(200, 250);
    faceHeight = random(600, 780);
    droop = random(HALF_PI + QUARTER_PI, PI + QUARTER_PI);
    mouthW = random(50, 70);
    mouthH = random(5, 15);

}

 

Jasmine Lee – Project 02 – Variable Face

bear

//Jasmine Lee
//Section C
//jasmine4@andrew.cmu.edu
//Project-02 (Variable Faces)

var wind = 10;
var windv = 10;
var r = 210;
var g = 134;
var b = 50;
var bodyx = 250;
var bodyy= 300;
var underbelly = 60;
var earx = 100;
var eary = 100;
var headx = 220;
var heady = 220;
var eyesize = 5;
var browtilt = 10;

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

function draw() {
    background (189, 238, 255);

    //cloud-left
    noStroke();
    fill(255, 255, 255);
    ellipse(140 + wind, 230 + windv, 230, 60);
    ellipse(60 + wind, 210 + windv, 45, 40);
    ellipse(100 + wind, 210 + windv, 60, 80);
    ellipse(150 + wind, 210 + windv, 80, 95);
    ellipse(190 + wind, 210 + windv, 60, 65);
    ellipse(230 + wind, 210 + windv, 30, 20);
    ellipse(75 + wind, 247 + windv, 70, 30);
    ellipse(150 + wind, 253 + windv, 100, 32);
    ellipse(215 + wind, 245 + windv, 50, 23);

    //cloud-right
    noStroke();
    fill(255, 255, 255);
    ellipse(540 - wind, 230 - windv, 230, 60);
    ellipse(460 - wind, 210 - windv, 45, 40);
    ellipse(500 - wind, 210 - windv, 60, 80);
    ellipse(550 - wind, 210 - windv, 80, 95);
    ellipse(590 - wind, 210 - windv, 60, 65);
    ellipse(630 - wind, 210 - windv, 30, 20);
    ellipse(475 - wind, 247 - windv, 70, 30);
    ellipse(550 - wind, 253 - windv, 100, 32);
    ellipse(615 - wind, 245 - windv, 50, 23);

    //body
    noStroke();
    fill(r, g, b);
    ellipse(320, 470, bodyx, bodyy);

    //bodywhite
    noStroke();
    fill(255, 255, 255);
    ellipse(320, 470, bodyx - underbelly, bodyy - underbelly);

    //ears
    noStroke();
    fill(r, g, b);
    ellipse(220, 200, earx, eary);
    ellipse(420, 200, earx, eary);

    //earwhites
    noStroke();
    fill(255, 255, 255);
    ellipse(215, 215, earx / 2, eary / 2);
    ellipse(435, 215, earx / 2, eary / 2);

    //head
    noStroke();
    fill(r, g, b);
    ellipse(320, 270, headx, heady);

    //eyes
    noStroke();
    fill(0);
    ellipse(250, 280, 35 + eyesize, 35 - eyesize);
    ellipse(390, 280, 35 + eyesize, 35 - eyesize);
    
    //eyeshine
    noStroke();
    fill(255, 255, 255);
    ellipse(260, 270, 15, 15);
    ellipse(400, 270, 15, 15);
    ellipse(265, 280, 5, 5);
    ellipse(405, 280, 5, 5);

    //nose
    noStroke()
    fill(255, 209, 216);
    ellipse(320, 300, 30, 5);

    //mouth
    stroke(1);
    fill(0);
    line(310, 340, 330, 330);
    line(330, 340, 310, 330);

    //eyebrows
    stroke(1);
    fill(0);
    line(230, 245, 280, 245 + browtilt);
    line(410, 245, 360, 245 + browtilt);
}

function mousePressed() {
    wind = random(10, 100);
    windv = random(10, 100);
    r = random(210, 180);
    g = random(134, 150);
    b = random(33, 112);
    bodyx = random(250, 300);
    bodyy = random(330, 350);
    underbelly = random(80, 120);
    earx = random(120, 140);
    eary = random(100, 120);
    headx = random(235, 270);
    heady = random(220, 250);
    eyesize = random(1, 5);
    browtilt = random(-15, 15);
}

For this assignment, I had fun creating a teddy bear. I think they’re very cute as stuffed animals and wanted to recreate one whose expressions could change from angry to sad.

Sarah Kang – Project 02 – Variable Face

ugly

//sarah kang
//section c
//sarahk1@andrew.cmu.edu
//project-02

var faceWidth = 180;
var earDim = 40;
var earhole = 20;
var eyebrows = 170;
var nostril = 7;
var hairlength = 30;
var hairR = 0;
var hairG = 0;
var hairB = 0;
var shirtR = 0;
var shirtG = 0;
var shirtB = 0;

function setup() {
	createCanvas(400, 400);
	background(255, 242, 246);
}

function draw() {
	noStroke();

	//body
	fill(shirtR, shirtB, shirtG);
	ellipse(200, 350, 100, 200);

	//ears
	fill('tan');
	ellipse(115, 200, earDim, earDim);
	ellipse(285, 200, earDim, earDim);
	fill(171, 133, 103);
	ellipse(115, 200, earhole, earhole);
	ellipse(285, 200, earhole, earhole);

	//face
	fill('tan');
	ellipse(200, 200, faceWidth, 180);

	//hair
	fill(hairR, hairG, hairB);
	rect(200, 100, 7, hairlength);

	//eyes 
	fill('white');
	ellipse(165, 200, 30, 15);
	ellipse(235, 200, 30, 15);
	fill('black');
	ellipse(165, 200, 15, 15);
	ellipse(235, 200, 15, 15);

	//nostrils
	ellipse(190, 220, nostril, nostril);
	ellipse(210, 220, nostril, nostril);

	//brows
	stroke(0);
	noFill();
	arc(165, eyebrows, 30, 10, PI, 0, OPEN);
	arc(235, eyebrows, 30, 10, PI, 0, OPEN);

	//mouth
	stroke(176, 60, 79);
	strokeWeight(2);
	arc(200, 240, 30, 30, 0, PI, CHORD);
}

function mousePressed(){
	faceWidth = random(180, 220);
	earDim = random(40, 100);
	earhole = random(40, 80);
	eyebrows = random(140, 180);
	hairlength = random(20, - 80);
	nostril = random(4, 14);
	hairR = random(0, 225);
	hairB = random(0, 225);
	hairG = random(0, 225);
	shirtR = random(0, 225);
	shirtB = random(0, 225);
	shirtG = random(0, 225);
}



I enjoyed playing around with different variables for my face. Adjusting the colors to only display certain shades that were still discernible was pretty difficult, so I decided to completely randomize the colors instead.

Carly Sacco – Project 02 – Variable Face


sketch

//Carly Sacco
//Section C
//csacco@andrew.cmu.edu
//Project - 02 

var eyeSize = 20
var leftLeg = 20
var rightLeg = 20
var mouthSize = 40

var armX = 365
var armY = -90

var backColor = 100

function setup() {
    createCanvas(640, 480);
}
function draw () {
    background(100, 100, backColor);
	
	//body
	fill(255, 255, 255);
	noStroke();
	//ellipse(325,300,150,150);
	//rect(250, 200,150, 60, 60);
	rect(250, 150, 150, 275, 90, 90, leftLeg, rightLeg);
	
	//eyes
	fill(0);
	ellipse(300, 200, 15, eyeSize);
    ellipse(350, 200, eyeSize, 15);	
	
	//mouth
	fill(0);
	ellipse(325, 250, mouthSize, mouthSize);
	
	//leftarm
	fill(255);
    rotate(PI / 3.0);
    rect(armX, armY, 40, 60, 90, 0, 90, 0);
	rect(armX + 55, armY - 160, 40, 60, 0, 90, 0, 90);
}
function mousePressed() {
	leftLeg = random(30, 90);
	rightLeg = random(90, 30);
	eyeSize = random(10, 45);
	mouthSize = random(40,80);
	armX = random(365, 380);
	armY = random(-80, -100);
	backColor = random(0, 300);
}

After I decided I wanted my variable face to represent a ghost, I thought of all the aspects of the ghost that could change. This lead to me create randomized variations of changes to the body, face, and arms.

Aaron Lee – Project-02 – Variable Faces

sketch

/*
Aaron Lee
//Section C
//sangwon2@andrew.cmu.edu
Project-02-variable faces
*/

//variables
var x = 5;
var y = 5;
var r = 255;
var g = 255;
var b = 255;
var eyeSize = 20;
var faceWidth = 100;
var faceHeight = 150;


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


function draw() {
   background(r,g,b);

   //eyes
   var eyeLX = width / 2 - faceWidth * 0.35;
   var eyeRX = width / 2 + faceWidth * 0.35;
   ellipse(eyeLX, height / 2 + x, eyeSize, eyeSize + x);
   ellipse(eyeRX, height / 2 + y, eyeSize, eyeSize + y);

   //face
   noFill();
   beginShape();
   curveVertex(width / 2, 160);
   curveVertex(width / 2, 160);
   curveVertex(width - 160  + x, 200 + x);
   curveVertex(width - 120 + x, height / 2 + x);
   curveVertex(width - 160 + x, height - 200 + x);
   curveVertex(width / 2, height - 160 + x);
   curveVertex(160 + x, height - 200 + x);
   curveVertex(120 + x, height / 2 + x);
   curveVertex(160 + x, 200 + x);
   curveVertex(width / 2, 160);
   curveVertex(width / 2, 160);
   endShape();

   //hat
   fill(50);
   rect(width / 5 + x, height / 8 + 50 + x, width / 2 + 50 + y, 100 + y);

   //nose
   noFill();
   beginShape();
   curveVertex(width / 2, height /2);
   curveVertex(width / 2, height /2);
   curveVertex(width / 2 + x, 350 + x);
   curveVertex(width / 2, 370);
   curveVertex(width / 2, 370);
   endShape();

   //mouth
   noFill();
   beginShape();
   curveVertex(width / 2 - 20, height - 230);
   curveVertex(width / 2 - 20, height - 230);
   curveVertex(width / 2 - 10 + y, height - 230 + y);
   curveVertex(width / 2 + 10 + x, height - 230 + x);
   curveVertex(width / 2 + 20, height - 230);
   curveVertex(width / 2 + 20, height - 230);
   endShape();
}


function mousePressed() {
    // when the user clicks, these variables are reassigned
    faceWidth = random(75, 150);
    faceHeight = random(100, 200);
    eyeSize = random(10, 30);
    x = random(-30,30);
    y = random(-30,30);
    r = random(0,255);
    g = random(0,255);
    b = random(0,255);
}

I utilized curveVertx () command to create smooth transitions of the curves.

Nawon Choi— Looking Outward 02

Generative Art— Georg Nees

After looking through various generative art/artists, I found one that really stood out to me. It was Georg Nees’ Schotter. I admire its simplicity— the algorithm incrementally increases the amount of disorder in two variables: position and rotation. All other factors remain the same, the size of each square, and the number of squares in each row. I love the way that the orderly squares gradually descend into chaos, as if it’s falling apart, or crumbling away.

Georg Nees was actually a mathematician and physicist who also worked as a software engineer at Siemens. He is known today as one of the pioneers of computer graphics and art. It’s fascinating to see how someone with a non-traditional “art” background could be one of the first to create generative computer art. It’s also interesting to see the way his background informed his art— his works are very well thought-out and calculated to create aesthetic compositions.

Katrina Hu – Looking Outwards – 02

Growing Objects

Laplacian Zoetrope, 3D-printed using ABS plastic

The exhibition “Growing Objects,” designed by Jessica Rosencrantz in 2014, replicates natural growth processes using simulations and 3D printed sculptures. The piece is very effective at replicating the structural patterns in nature. I admire the complexity and accuracy of the work.

The algorithm used to generate these works of art are made by using scientific theories and models of natural pattern formation. It is very successful in allowing viewers to visualize the complex growth processes that occur in nature. The project also aims to encourage viewers to think about new ways that design and growth can influence the environment in the future.

Nawon Choi— Project-02 Variable Face

nawonc-variable-face

// Nawon Choi
// Section C
// nawonc@andrew.cmu.edu
// Project-02 Variable Faces

var sushiX = 233;
var sushiType = "egg";
var browHeight = 147;
var browAngle = 0;
var eyeballSize = 33;
var eyeSize = 1.5;


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

function draw() {
    // background
    noStroke();
    fill("#E3CBC8");
    rect(0, 0, 640, 250); 

    // hair
    noStroke();
    fill("#6A6159");
    ellipse(304, 250, 394, 500);

    noStroke();
    fill("#6A6159");
    ellipse(382, 249, 302, 465);

    // head
    noStroke();
    fill("#F2E3C2");
    ellipse(325, 236, 356, 423);

    // fringe
    noStroke();
    fill("#6A6159");
    quad(124, 182, 270, 125, 373, 30, 198, 61);

    noStroke();
    fill("#6A6159");
    triangle(223, 57, 294, 16, 373, 30);

    // eyebrows
    strokeWeight(10);
    stroke("#8F847B");
    noFill();
    beginShape();
    curveVertex(183, browHeight + browAngle);
    curveVertex(183, browHeight + browAngle);
    curveVertex(213, browHeight - browAngle);
    curveVertex(278, browHeight + browAngle);
    curveVertex(278, browHeight + browAngle);
    endShape();

    strokeWeight(10);
    stroke("#8F847B");
    noFill();
    beginShape();
    curveVertex(365, browHeight + browAngle);
    curveVertex(365, browHeight + browAngle);
    curveVertex(430, browHeight - browAngle);
    curveVertex(460, browHeight + browAngle / 2);
    curveVertex(460, browHeight + browAngle / 2);
    endShape();

    // eyes
    noStroke();
    fill("#ffffff");
    ellipse(224, 193, 57 * eyeSize, 46 * eyeSize);

    noStroke();
    fill("#ffffff");
    ellipse(417, 193, 57 * eyeSize, 46 * eyeSize);

    // eyeballs
    var leftEye = 224;
    var rightEye = 417;
    var eyeHeight = 200;
    var sushiCenter = sushiX + 88;

    if (sushiCenter < 201) {
        leftEye = 201,
        rightEye = 394;
    } else if (sushiCenter >= 201 & sushiCenter <= 225) {
        leftEye = sushiCenter,
        rightEye = 394;
    } else if (sushiCenter > 225 & sushiCenter < 394) {
        leftEye = 240,
        rightEye = 394;
    } else if (sushiCenter >= 394 & sushiCenter <= 418) {
        leftEye = 240,
        rightEye = sushiCenter;
    } else {
        leftEye = 240,
        rightEye = 418;
    }

    noStroke();
    fill("#6A6159");
    ellipse(leftEye, eyeHeight, eyeballSize, eyeballSize);

    noStroke();
    fill("#6A6159");
    ellipse(rightEye, eyeHeight, eyeballSize, eyeballSize);

    noStroke();
    fill("#FAFAFA");
    ellipse(leftEye-4, eyeHeight-4, 12, 12);

    noStroke();
    fill("#FAFAFA");
    ellipse(rightEye-4, eyeHeight-4, 12, 12);

    // table
    noStroke();
    fill("#AA827C");
    rect(0, 250, 640, 134);

    noStroke();
    fill("#9B736D");
    rect(0, 384, 640, 30);

    noStroke();
    fill("#E1ACA4");
    rect(0, 414, 640, 86);
    
    // rice
    noStroke();
    fill("#F3EEE9");
    rect(sushiX, 250, 175, 80, 29);

    if (sushiType == 'egg'){
        // egg
        noStroke();
        fill("#F2BD39");
        rect(sushiX-20, 224, 214, 53, 7);

        noStroke();
        fill("#F8D683");
        rect(sushiX-20, 224, 214, 20, 7);

        // seaweed
        noStroke();
        fill("#424944");
        rect(sushiX+72, 220, 30, 24);

        noStroke();
        fill("#27312B");
        rect(sushiX+72, 244, 30, 33);

        noStroke();
        fill("#151916");
        rect(sushiX+72, 277, 30, 53);
    } else if(sushiType == 'salmon'){
        // salmon
        noStroke();
        fill("#EC9326");
        rect(sushiX-20, 224, 214, 53, 7);

        var space = 32;
        var sushiY = sushiX + 19;

        strokeWeight(10);
        stroke('#F6CCAF');
        line(sushiX, 229, sushiY, 272);

        strokeWeight(10);
        stroke('#F6CCAF');
        line(sushiX + space, 229, sushiY + space, 272);

        strokeWeight(10);
        stroke('#F6CCAF');
        line(sushiX + space * 2, 229, sushiY + space * 2, 272);

        strokeWeight(10);
        stroke('#F6CCAF');
        line(sushiX + space * 3, 229, sushiY + space * 3, 272);

        strokeWeight(10);
        stroke('#F6CCAF');
        line(sushiX + space * 4, 229, sushiY + space * 4, 272);

        strokeWeight(10);
        stroke('#F6CCAF');
        line(sushiX + space * 5, 229, sushiY + space * 5, 272);
    } else if(sushiType == 'tuna') {
        // tuna
        noStroke();
        fill("#F2464A");
        rect(sushiX - 20, 224, 214, 53, 7);

        var space = 30;
        var sushiY = sushiX + 17;

        strokeWeight(5);
        stroke('#FFA2A9');
        line(sushiX + 35 - space, 229, sushiY - space, 272);

        strokeWeight(5);
        stroke('#FFA2A9');
        line(sushiX + 35, 229, sushiY, 272);

        strokeWeight(5);
        stroke('#FFA2A9');
        line(sushiX + space + 35, 229, sushiY + space, 272);

        strokeWeight(5);
        stroke('#FFA2A9');
        line(sushiX + space * 2 + 35, 229, sushiY + space * 2, 272);

        strokeWeight(5);
        stroke('#FFA2A9');
        line(sushiX + space * 3 + 35, 229, sushiY + space * 3, 272);

        strokeWeight(5);
        stroke('#FFA2A9');
        line(sushiX + space * 4 + 35, 229, sushiY + space * 4, 272);

        strokeWeight(5);
        stroke('#FFA2A9');
        line(sushiX + space * 5 + 35, 229, sushiY + space * 5, 272);
    }

}

function mousePressed() {
    // variables are reassigned when user clicks
    let sushis = ['egg', 'salmon', 'tuna']
    floats = [1.0, 1.1, 1.2, 1.3, 1.4, 1.5];
    colors = ['#6A6159', '#c795b5', '#1d3f75', '#c9b75b', '#cc7a4e', '#6d1873'];
    sushiX = random(38, 430);
    sushiType = random(sushis);
    eyeballSize = random (23, 43);
    eyeSize = random (floats);
    browHeight = random(137, 160);
    browAngle = random(0, 10);


}

I made three different kinds of sushi and made them correlate to different string variables, “egg”, “salmon”, and “tuna”. I also tried to make the position of the eyes correspond to the location of the sushi so that the eyes would follow the sushi. It was fun playing around with different variables to see what types of expressions could be made just by switching around different values.

I showed this to a friend and they mentioned that it kind of looks like sushi going along a conveyor belt!