//Zhuoying Lin
//section a
//zhuoyinl@andrew.cmu.edu
//project1
function setup() {
createCanvas(400, 400);
background(220);
}
function draw() {
fill(86, 63,2);
noStroke();
arc(200, 200, 200, 275, PI, 0, CHORD);
arc(100, 200, 100, 150, 0, PI, CHORD);
arc(300, 200, 100, 150, 0, PI, CHORD);
fill(220)
noStroke();
arc(75, 200, 50, 50, 0, PI, CHORD);
arc(325, 200, 50, 50, 0,PI, CHORD);
fill(227, 202, 175);
noStroke();
ellipse(200, 200, 150, 190);
noFill();
strokeWeight(10);
stroke(78, 51, 22);
curve(135, 180, 155, 155, 175, 155, 195, 180);
curve(200, 180, 220, 155, 240, 155, 260, 180);
strokeWeight(5);
line(145, 170, 180, 180);
line(180, 180, 145, 190);
line(215, 180, 250, 170);
line(215, 180, 250, 190);
fill(83,70,249);
noStroke();
triangle(197, 190, 180, 220, 215, 220);
fill(255,144,144);
noStroke();
arc(197, 235, 60, 70, 0, PI, CHORD);
fill(235, 233, 233);
noStroke();
rect(185, 235, 10, 10);
rect(200, 235, 10, 10);
}
Month: September 2016
Looking Outwards 03
Line Number – Jennifer Jacobs MIT 2015
![](http://web.media.mit.edu/~jacobsj/images/linenumber3.png)
I think what I admired the most about this project was how intricate and expressive it was. I normally wouldn’t relate these types of projects to computer generated art, and to see that this was created with an algorithm really inspired me to gain more perspective on what is achievable through this median.
The art was created from a series of simple shapes, and if you look closely it is noticeable. The algorithm isn’t given, but it is very possible to create similar forms of art using specific shapes, and I think that’s very interesting.
I also think that even though it was algorithmically generated art, it still does present the artists own vision and style. Although it is generated, there is still an element of control in the constraints of generation, which I think shows the artists personality.
Hannah K-Project-02
// Variables Needed for Face
// Variable to create ellipse (circle) for eyes
var eyeSize = 25;
// Variables regarding width and height of ellipse for face
var fW = 400;
var fH = 540;
// Variable to create ellipse (circle) for nose
var noseSize = 6;
// Variables regarding width and height of rectangle for mouth
var mW = 80;
var mH = 50;
// Variables needed to change color of face features
// Left eye color
var RleftEyeColor = 120;
var GleftEyeColor = 100;
var BleftEyeColor = 75;
// Right eye color
var RrightEyeColor = 50;
var GrightEyeColor = 75;
var BrightEyeColor = 125;
// Nose color
var RnoseColor = 75;
var GnoseColor = 75;
var BnoseColor = 75;
// Mouth color
var RmouthColor = 50;
var GmouthColor = 75;
var BmouthColor = 125;
// Face color
var RfaceColor = 50;
var GfaceColor = 75;
var BfaceColor = 125;
function setup() {
createCanvas(480, 640);
}
function draw() {
background(0,0,0);
// Drawing face outline
fill(RfaceColor,GfaceColor,BfaceColor);
ellipse(width/2, height/2, fW, fH);
// Drawing left eye (pupil)
fill(RleftEyeColor,GleftEyeColor,BleftEyeColor);
stroke(10);
ellipse(width/2-fW*0.25, height/2, eyeSize, eyeSize);
// Drawing right eye (pupil)
fill(RrightEyeColor,GrightEyeColor,BrightEyeColor);
stroke(10);
ellipse(width/2+fW*0.25, height/2, eyeSize, eyeSize);
// Drawing nose
fill(RnoseColor,GnoseColor,BnoseColor);
stroke(5);
rect(width/2, height/2, noseSize, noseSize);
// Drawing mouth
fill(255,255,255);
rect(width/2, height/2+fH*0.25, mW, mH);
}
function mousePressed() {
// Face changes
eyeSize = random(15, 30);
fW = random(325, 400);
fH = random(525, 600);
noseSize = random(5, 30);
mW = random(50, 75);
mH = random(50, 75);
// Left eye color
RleftEyeColor = random(25,150);
GleftEyeColor = random(25,150);
BleftEyeColor = random(25,150);
// Right eye color
RrightEyeColor = random(25,150);
GrightEyeColor = random(25,150);
BrightEyeColor = random(25,150);
// Nose color
RnoseColor = random(25,150);
GnoseColor = random(25,150);
BnoseColor = random(25,150);
// Mouth color
var RmouthColor = 50;
var GmouthColor = 75;
var BmouthColor = 125;
// Face color
var RfaceColor = 50;
var GfaceColor = 75;
var BfaceColor = 125;
}
Using variables in this project turned out to be much more challenging than I expected. Many of the variables I tried to use did not initially work as I intended, and I felt like I was doing a lot more guessing and checking (similar to figuring out the coordinates in last week’s project). I had originally made a sketch of some of the kind of faces I wanted to make, but because I struggled so much with the variables, I ended up making a very basic face.
Jinhee Lee; Project-02: Variable Faces
Biggest thing I noticed afterwards – didn’t draw any sketches. Using variables didn’t serve to just compact the code and make it easier to manipulate the visual with just a few changes, but also allowed me to make relative measurements as opposed to exact measurements for every conceivable feature.
//Jinhee Lee
//Section C
//jinheel1@andrew.cmu.edu
//Project-02
//beginning template for face
var eyeSize = 10;
var eyeColor = "white";
var faceWidth = 200;
var faceHeight = 300;
var faceColor = "white";
var noseColor = "white";
var smileWidth = 50;
//beginning face mostly white for a blank canvas
function setup() {
createCanvas(640, 480);
}
function draw() {
background('purple');
fill(faceColor); //changing face/skin color
ellipse(width/2,height/2,faceWidth,faceHeight); //changing face size
var eyeLX = width/2 - faceWidth/4; //varying eyes' position
var eyeRX = width/2 + faceWidth/4;
fill(255); //white color for eyeball
ellipse(eyeLX,height/2,3*eyeSize,2*eyeSize); //drawing eyeballs
ellipse(eyeRX,height/2,3*eyeSize,2*eyeSize);
strokeWeight(5); //drawing iris
stroke(eyeColor); //changing iris color
fill(0); //making the black pupil
ellipse(eyeLX,height/2,eyeSize,eyeSize); //varying eye size for pupil and iris
ellipse(eyeRX,height/2,eyeSize,eyeSize);
strokeWeight(1);
stroke(0);
//above two functions reset to default
var noseTY = height/2 - faceWidth/8; //varying nose length
var noseBY = height/2 + faceWidth/5;
fill(noseColor); //changing nose color
triangle(width/2,noseTY,width/2 - faceWidth/10,noseBY,width/2 + faceWidth/10,noseBY);
fill(135,45,45); //default color for mouth
arc(width/2,height/2 + faceHeight/3,smileWidth,faceWidth/6,0,PI,CHORD); //draws mouth with varied width
}
function mousePressed() {
faceWidth = random(150,300);
faceHeight = random(200,400);
eyeSize = random(10,20);
eyeColor = random(["#00CED1","#20B2AA","#CD853F","#8B4513","#C0C0C0","#FF0000"]);
faceColor = random(["#FFE4C4","#DEB887","#DAA520","#FFDAB9","#8B4513",]);
noseColor = random(["orange","yellow","green","blue","purple"]);
//meanwhile, in a parallel universe where people's noses are a random color from OY G. BIV
//and Rudolph, the only red-nose is their ruler
}
Disregard those two last comments in the code.
Brandon Darreff – Looking Outwards 2
I appreciate the amount of complexity and depth Jean Pierre Hebert was able to achieve in his piece “olive branch,” completed in 1990 utilizing a single drawing instrument and line weight. Hebert, an Algorist and pioneer of digital art, programs printing devices such as custom-built devices and plotters using computer codes he has developed himself to produce incredibly detailed drawings such as this one. By combining programming languages and simple mathematics, he successfully bridges both digital and analog mediums in a way that transforms how we think about art. Overall, it easy to hypothesize how his method of creating artwork has greatly influenced digital art practices in use today.
ShanWang-Project02-VariableFaces
Besides the shape and size of the elements in the face, I also explored the variations of gradient and the effect it has on the visual appeal.
sketch
//Shan Wang
//Section A
//shanw1@andrew.cmu.edu
//Project-02
var bgColor = 20
var faceEdge = 0
var eyeSize = 5;
var faceWidth = 100;
var faceHeight = 150;
var faceColor = 130;
var eyeColor = 225;
var eyeLidSize = 25;
function setup() {
createCanvas(640, 480);
}
function draw() {
background(bgColor);
//draw face contour
fill(faceColor-20);
stroke(faceColor-20);
ellipse(width / 2, height / 2, faceWidth+10, faceHeight+10);
//draw face
fill(faceColor);
stroke(faceColor);
ellipse(width / 2, height / 2, faceWidth, faceHeight);
//draw eyes
fill(eyeColor);
stroke(eyeColor);
var eyeLX = width / 2 - faceWidth * 0.25;
var eyeRX = width / 2 + faceWidth * 0.25;
var eyeY = height / 2;
ellipse(eyeLX, eyeY, eyeSize, eyeSize);
ellipse(eyeRX, eyeY, eyeSize, eyeSize);
//draw eyelid
stroke(bgColor+40);
strokeWeight(eyeLidSize/10);
line(eyeLX-eyeLidSize/2,eyeY-eyeSize/2,eyeLX+eyeLidSize/2,eyeY-eyeSize/2);
line(eyeRX-eyeLidSize/2,eyeY-eyeSize/2,eyeRX+eyeLidSize/2,eyeY-eyeSize/2);
}
function mousePressed() {
bgColor = random(0,100);
eyeSize = random(5,20);
eyeLidSize = random(faceWidth/5,faceWidth/4);
faceColor = random(120,170);
eyeColor = random(225,255);
faceWidth = random(120, 240);
faceHeight = random(140,200);
}
Project-02-Variable Face – Sara Lyons
//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
//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);
}
Brandon Darreff – Project-02-Variable-Face
//Brandon Darreff
//Section A
//bdarreff@andrew.cmu.edu
//Project-02-Variable-Face
//left figure hair color
var r1 = 199;
var g1 = 161;
var b1 = 87;
//right figure hair color
var r2 = 152;
var g2 = 136;
var b2 = 215;
//left eye size
var eyeWidth1 = 12;
var eyeHeight1 = 10;
//right eye size
var eyeWidth2 = 10;
var eyeHeight2 = 12;
//left mouth size
var mouthWidth1 = 20;
var mouthHeight1 = 10;
//right mouth size
var mouthWidth2 = 15
var mouthHeight2 = 8
//setup canvas size
function setup() {
createCanvas(640, 480);
}
//fill background with color and design
function draw () {
background (112, 169, 169);
stroke(200);
strokeWeight(2);
noFill();
ellipse(200, 250, 300, 300);
ellipse(350, 175, 200, 200);
ellipse(550, 350, 100, 100);
noStroke();
//head & neck left
fill(231, 200, 163);
beginShape();
vertex(125, 350);
curveVertex(115, 400);
curveVertex(135, 310);
curveVertex(135, 290);
curveVertex(120, 260);
curveVertex(115, 230);
curveVertex(125, 200);
curveVertex(160, 170);
curveVertex(190, 170);
curveVertex(230, 190);
curveVertex(238, 210);
curveVertex(230, 230);
vertex(240, 270);
vertex(230, 280);
curveVertex(230, 310);
curveVertex(200, 310);
curveVertex(190, 330);
curveVertex(180, 400);
vertex(125, 350);
endShape();
//head & neck right
beginShape();
vertex(530, 350);
curveVertex(540, 400);
curveVertex(520, 310);
curveVertex(520, 290);
curveVertex(535, 260);
curveVertex(540, 230);
curveVertex(530, 200);
curveVertex(495, 170);
curveVertex(465, 170);
curveVertex(425, 190);
curveVertex(417, 210);
curveVertex(425, 230);
vertex(415, 270);
vertex(425, 280);
curveVertex(425, 310);
curveVertex(455, 310);
curveVertex(465, 330);
curveVertex(475, 400);
vertex(530, 350);
endShape();
// shirt left
fill(255);
beginShape();
vertex(80, 480);
curveVertex(80, 480);
curveVertex(78, 420)
curveVertex(100, 360);
curveVertex(120, 350);
curveVertex(150, 360);
curveVertex(190, 350);
curveVertex(200, 370);
curveVertex(220, 400);
curveVertex(210, 480);
vertex(220, 480);
vertex(80, 480);
endShape();
// shirt right
fill(0);
beginShape();
vertex(560, 480);
curveVertex(560, 480);
curveVertex(562, 420)
curveVertex(540, 360);
curveVertex(520, 350);
curveVertex(490, 360);
curveVertex(450, 350);
curveVertex(440, 370);
curveVertex(420, 400);
curveVertex(430, 480);
vertex(420, 480);
vertex(560, 480);
endShape();
//hair left
fill(r1, g1, b1);
stroke(0);
strokeWeight(1);
beginShape();
vertex(115, 260);
curveVertex(115, 260);
curveVertex(110, 220);
curveVertex(115, 170);
curveVertex(130, 160);
curveVertex(125, 150);
curveVertex(160, 140);
curveVertex(220, 155);
curveVertex(270, 150);
curveVertex(230, 180);
curveVertex(265, 175);
curveVertex(220, 200);
curveVertex(160, 180);
curveVertex(165, 220);
curveVertex(150, 260);
curveVertex(115, 260);
vertex(115, 260);
endShape();
//hair right
fill(r2, g2, b2);
stroke(0);
strokeWeight(1);
beginShape();
vertex(540, 260);
curveVertex(540, 260);
curveVertex(555, 220);
curveVertex(550, 170);
curveVertex(540, 160);
curveVertex(505, 150);
curveVertex(460, 150);
curveVertex(415, 180);
curveVertex(445, 200);
curveVertex(485, 210);
curveVertex(500, 220);
curveVertex(485, 260);
curveVertex(540, 260);
vertex(540, 260);
endShape();
//left eye
fill(255);
stroke(0);
strokeWeight(0.5);
//variable shape
ellipse(220, 235, eyeWidth1, eyeHeight1);
//pupil
noStroke();
fill(0);
ellipse(224, 235, 6, 6);
//highlight
fill(255);
ellipse(226, 235, 2, 2);
//right eye
fill(255);
stroke(0);
strokeWeight(0.5);
//variable shape
ellipse(433, 235, eyeWidth2, eyeHeight2);
//pupil
noStroke();
fill(0);
ellipse(431, 235, 6, 6);
//highlight
fill(255);
ellipse(429, 235, 2, 2);
//left mouth
fill(172, 97, 130);
ellipse(218, 285, mouthWidth1, mouthHeight1);
//right mouth
fill(211, 129, 137);
ellipse(435, 290, mouthWidth2, mouthHeight2);
// left sleeve
stroke(230);
strokeWeight(1);
fill(248);
ellipse(150, 480, 80, 200);
//right sleeve
stroke(50);
fill(25);
ellipse(500, 480, 80, 200);
}
function mousePressed() {
//left figure hair color change
r1 = random(75, 200);
g1 = random(75, 200);
b1 = random(75, 200);
//right figure hair color change
r2 = random(130, 250);
g2 = random(130, 250);
b2 = random(130, 250);
//left eye size
eyeWidth1 = random(10, 18);
eyeHeight1 = random(4, 14);
//right eye size
eyeWidth2 = random(8, 18);
eyeHeight2 = random(4, 14);
//left mouth size
mouthWidth1 = random(10, 20);
mouthHeight1 = random(0, 15);
//right mouth size
mouthWidth2 = random(8, 20);
mouthHeight2 = random(0, 10);
}
With the face variable assignment, I utilized two portraits and adjusted facial features of each figure individually to make it appear they are having a conversation.
Brian Bizier – Looking Outwards 02
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.