//Sarah Choi
//Section D
//sychoi@andrew.cmu.edu
//Project-01-Face
function setup() {
createCanvas(600, 600);
background(38, 53, 186);
}
function draw() {
//face
fill(255, 240, 209);
ellipse(300,290,300,400);
//eyebrows
noFill();
strokeWeight(8);
stroke(31,28,14);
arc(225, 237, 120, 10, PI, TWO_PI);
arc(385, 237, 120, 10, PI, TWO_PI);
//eyes
fill(255);
strokeWeight(1);
arc(250, 277, 60, 60, PI, TWO_PI);
arc(360, 277, 60, 60, PI, TWO_PI);
arc(250, 280, 60, 60, PI, TWO_PI);
arc(360, 280, 60, 60, PI, TWO_PI);
strokeWeight(0);
line(220, 280, 280, 270);
line(330, 280, 390, 270);
strokeWeight(1);
fill(0);
circle(250, 266, 28, 28);
circle(360, 266, 28, 28);
fill(38, 34, 14);
circle(250, 266, 25, 25);
circle(360, 266, 25, 25);
fill(0);
circle(250, 266, 10, 10);
circle(360, 266, 10, 10);
stroke(255);
line(254, 258, 256, 260);
line(364, 258, 366, 260);
//nose
noFill();
stroke(0);
arc(308, 348, 60, 60, PI, PI + QUARTER_PI);
arc(308, 348, 60, 60, TWO_PI-QUARTER_PI, TWO_PI);
line(300, 348, 297, 351);
line(318, 348, 320, 351);
//mouth
arc(315, 375, 80, 80, QUARTER_PI, PI-HALF_PI);
line(280,415,315,415)
//hair
fill(31,28,14);
quad(300, 80, 120, 230, 120, 420, 120, 450);
quad(320, 80, 480, 230, 470, 420, 470, 450);
arc(200, 355, 200, 470, HALF_PI, PI+ HALF_PI,CHORD);
arc(400, 355, 200, 470, PI+ HALF_PI, HALF_PI,CHORD);
//hat
fill(177, 151, 216);
strokeWeight(0);
rect(190, 50, 220, 70);
ellipse(300, 150, 440, 100);
ellipse(300, 50, 220, 50);
noFill();
strokeWeight(5);
stroke(164, 137, 204);
arc(300, 72, 160, 20, TWO_PI, PI);
arc(193, 144, 180, 70, HALF_PI, PI);
arc(345, 124, 140, 40, TWO_PI, PI - HALF_PI);
stroke();
line(180, 50, 200, 150);
line(420, 50, 400, 150);
}
First, I approached this project as a way to play around with different types of shapes with a little bit more quality for design. I was able to overlap shapes and especially put in more detail in objects and facial characters such as the hat and eyes to make it more realistic.
]]>Here I am, added some interactive qualities to the self portrait as well, if you speak into the microphone it will transfer over to the actual animation.
var input;
var analyzer;
var volume = 0;
function setup() {
createCanvas(600, 600);
// Create an Audio input
mic = new p5.AudioIn();
// start the Audio Input.
// By default, it does not .connect() (to the computer speakers)
mic.start();
}
function draw() {
colorMode(RGB);
background(233, 255, 228);
// Get the overall volume (between 0 and 1.0)
var v = mic.getLevel();
// "Smooth" the volume variable with an easing function
volume += (v - volume) / 3;
// Draw an ellipse size proportionally to the volume
var mouthSize = map(volume, 0, 1, 20, 300);
print(mouthSize);
if(mouthSize < 26)
mouthSize = 0;
mouthSize = constrain(mouthSize, 0, 300);
noStroke();
//red pink rotating star in the back
push();
fill(255, 70, 231);
translate(width*0.5, height*0.5);
rotate(frameCount / 50.0);
star(0, 0, mouthSize+290, 180, 30);
pop();
//pink rotating star in the back
push();
fill(255, 13, 255);
translate(width*0.5, height*0.5);
rotate(frameCount / 50.0);
star(0, 0, mouthSize+250, 170, 30);
pop();
//inner rotating star
push();
fill(107, 255, 0);
translate(width*0.5, height*0.5);
rotate(frameCount / 50.0);
star(0, 0, mouthSize+220, 90, 30);
pop();
//hair
fill(54,17,17);
rect(150,270,300,300,20);
ellipse(300,240,300,300);
//head
fill(255, 215, 175);
ellipse(300, 300, 310, 360);
//eyebrows
strokeWeight(15);
stroke(54,17,17);
line(230,200,180,200);
line(420,200,370,200);
//eyes
noStroke();
fill(300);
ellipse(200, 250, 60, 60);
ellipse(400, 250, 60, 60);
//eyepuffs
fill(255, 215, 175);
ellipse(200, 325, 150, 100);
ellipse(400, 325, 150, 100);
//blush
fill(255, 108, 155, 70);
ellipse(200, 320, 90, 90);
ellipse(400, 320, 90, 90);
// nose
noFill();
stroke(214, 162, 126);
strokeWeight(3);
arc(300, 325, 50, 50, PI, 0);
//lens big
var eyeX;
var eyeY;
var lookUP;
noStroke();
fill(232, 134, 206);
lookUP = map(mouseY, 0, 600, 240, 260);
lookUP = constrain(lookUP, 240, 260);
eyeY = map(mouseX, 0, 600, 200 - 10, 200 + 10);
eyeY = constrain(eyeY, 200 - 10, 200 + 10);
ellipse(eyeY, lookUP, 50, 50);
eyeX = map(mouseX, 0, 600, 400 - 10, 400 + 10);
eyeX = constrain(eyeX, 400 - 10, 400 + 10);
ellipse(eyeX, lookUP, 50, 50);
//lens small
noStroke();
fill(232, 12, 202);
ellipse(eyeY, lookUP, 35, 35);
ellipse(eyeX, lookUP, 35, 35);
//pupil
noStroke();
fill(0);
ellipse(eyeY, lookUP, 25, 25);
ellipse(eyeX, lookUP, 25, 25);
//white in the eye smaller
noStroke();
fill(300, 150);
ellipse(eyeY - 5, lookUP - 10, 15, 15);
ellipse(eyeX - 5, lookUP - 10, 15, 15);
//white in the eye stronger
noStroke();
fill(300);
ellipse(eyeX - 5, lookUP - 10, 10, 10);
ellipse(eyeY - 5, lookUP - 10, 10, 10);
//cheeks lines
noFill();
stroke(166, 39, 76, 70);
strokeWeight(3);
arc(400, 320, 94, 90, PI, 0);
noFill();
stroke(166, 39, 76, 70);
strokeWeight(3);
arc(200, 320, 94, 90, PI, 0);
//blush lines
strokeWeight(5);
stroke(255, 70, 231, 70);
line(180, 290, 185, 320);
line(200, 290, 205, 320);
line(220, 290, 225, 320);
strokeWeight(5);
stroke(255, 70, 231, 70);
line(380, 290, 385, 320);
line(400, 290, 405, 320);
line(420, 290, 425, 320);
//eye creases
stroke(166, 39, 76, 20);
strokeWeight(3);
arc(200, 240, 68, 60, PI, 0);
noFill();
//eye creases
stroke(166, 39, 76, 20);
strokeWeight(3);
arc(400, 240, 68, 60, PI, 0);
noFill();
// Get the overall volume (between 0 and 1.0)
var v = mic.getLevel();
// "Smooth" the volume variable with an easing function
volume += (v - volume) / 3;
// Draw an ellipse size proportionally to the volume
var mouthSize = map(volume, 0, 1, 10, 300);
fill(0)
ellipse(300, 400, mouthSize, mouthSize / 2);
}
function star(x, y, radius1, radius2, npoints) {
var angle = TWO_PI / npoints;
var halfAngle = angle/2.0;
beginShape();
for (var a = 0; a < TWO_PI; a += angle) {
var sx = x + cos(a) * radius2;
var sy = y + sin(a) * radius2;
vertex(sx, sy);
sx = x + cos(a+halfAngle) * radius1;
sy = y + sin(a+halfAngle) * radius1;
vertex(sx, sy);
}
endShape(CLOSE);
}
]]>I identify myself as a pretty basic looking person. I find myself being too lazy to do much makeup so at most times, I just do my brows in my morning. In addition, a key part of me is how much I like boba. I chose to incorporate it as a part of my self portrait. The key thing that I focused on was positioning and layering. Since I am familiar with working with layers on Adobe Photoshop, it was fun to play around with layers again in this project.
Rachel Shin – Project 01 – Face
//Rachel Shin
//15-104 (Section B)
//reshin@andrew.cmu.edu
//Project-01
function setup() {
createCanvas(600, 600);
background(157,190,196);
text("Rachel Shin. 15-104 Section B. reshin@andrew.cmu.edu. Project-01", 10, 15);
}
function draw() {
//hair
noStroke();
fill('black');
rect(175,150,250,450);
//face
noStroke();
fill(219,214,178);
ellipse(300, 320, 200, 260);
noStroke();
fill(219,214,178);
//hair part 2 bangs
noStroke();
fill('black');
rect(175,180,250,120);
//eyebrows
noStroke();
fill(56,54,41);
ellipse(250, 320, 40, 5);
noStroke();
fill(56,54,41);
ellipse(350,320,40,5);
//eyes brown
noStroke();
fill(56,54,41);
ellipse(250, 340,20,20);
noStroke();
fill(56,54,41);
ellipse(350,340, 20, 20);
//nose
noStroke();
fill(56,54,41);
triangle(300, 360, 290, 380, 300, 380);
//mouth and boba
noStroke();
fill(128, 79, 78);
ellipse(300, 400, 10, 10);
noStroke();
fill(128, 79, 78);
rect(295, 400, 10, 50);
noStroke();
fill(255,255,255);
ellipse(300, 450, 100, 15);
noStroke();
fill(255,255,255);
rect(250, 450, 100, 150);
//bobas
noStroke();
fill('black');
ellipse(300, 570, 10, 10);
noStroke();
fill('black');
ellipse(260, 580, 10,10);
noStroke();
fill('black');
ellipse(340, 590, 10,10);
noStroke();
fill('black');
ellipse(280, 585, 10, 10);
noStroke();
fill('black');
ellipse (320, 585, 10, 10);
}
]]>function setup() {
createCanvas(200, 20);
background(220);
text("p5.js vers 0.9.0 test.", 10, 15);
}
function draw() {
createCanvas(600,600);
fill(255,255,255);
noStroke();
rect(0,0,width, height);
//triangle 1 blue
fill(100,120,200);
noStroke();
triangle(0,0,width,0,width,height);
//triangle 2 green
fill(100,150,150);
noStroke();
triangle(0,0,0,height,width,height);
//semi-circle 1
fill(190,80,50);
noStroke();
arc(width/2, height/2, width, height, PI/4, 5*PI/4, CHORD);
//semi circlen 2
fill(230,170,100);
noStroke();
arc(width/2, height/2, width, height, 5*PI/4,PI/4, CHORD);
//semi circle 1 small
fill(100,150,150);
noStroke();
arc(width/2, height/2, 3*width/4, 3*height/4, PI/4, 5*PI/4, CHORD);
//semi circle 2 small
fill(100,120,200);
noStroke();
arc(width/2, height/2, 3*width/4, 3*height/4, 5*PI/4, PI/4, CHORD);
// eye circle 1
fill(230,190,180);
noStroke();
arc(width/4, height/4, width/5, height/5, 0, 2*PI,CHORD);
// eye circle 2
fill(200,140,210);
noStroke();
arc(3*width/4, 3*height/4, width/5, height/5, 0, 2*PI,CHORD);
// eye circle 1
fill(235,235,236);
noStroke();
arc(width/4, height/4, width/5, height/5, PI/4, 5*PI/4,CHORD);
// eye circle 2
fill(70,80,130);
noStroke();
arc(3*width/4, 3*height/4, width/5, height/5, PI/4, 5*PI/4,CHORD);
}
I wanted to make a smile/face something dynamic with two sides, but whole, almost like a ying and yang. Identity as both hidden and revealed.
The colors are based off a favorite Matisse painting of mine.
]]>function setup() {
createCanvas(600, 600);
background('hsl(160, 100%, 50%)');
}
function draw() {
noStroke();
fill(0);
quad(0, 600, 0, 365, 35, 300, 35, 600);
quad(35, 300, 100, 250, 100, 600, 35, 600);
quad(100, 250, 100, 600, 250, 600, 250, 350);
triangle(250, 600, 250, 350, 305, 600);
noStroke();
fill(125);
quad(250, 350, 100, 250, 150, 175, 300, 260);
quad(260, 290, 335, 275, 375, 250, 290, 255);
noStroke();
fill(225);
quad(290, 255, 375, 250, 365, 180, 150, 175);
quad(150, 175, 325, 40, 343, 115, 200, 177);
triangle(343, 115, 365, 180, 175, 180);
triangle(365, 180, 385, 170, 340, 110);
noStroke();
fill(195);
triangle(325, 40, 250, 25, 150, 35);
triangle(325, 40, 250, 100, 150, 35);
quad(150, 35, 250, 100, 250, 325, 150, 325);
triangle(250, 325, 280, 325, 250, 280);
triangle(150, 325, 100, 250, 150, 150);
triangle(100, 250, 150, 150, 150, 90);
triangle(150, 90, 150, 35, 130, 180);
}
I decided to approach this project by using a different composition than is typical in self-portraits. This side profile provided the opportunity to explore more angular forms, which I achieved with quad and triangle functions. I thought the restriction of elements allowed for experimentation with abstraction, so I further highlighted that requirement by using a limited color palette and geometric forms that belong to the same family.
]]>function setup() {
createCanvas(500,600);
background(255,229,204);
}
function draw() {
fill(242,215,215);
ellipse(140,130,100,50);
ellipse(360,130,100,44);
fill('black');
ellipse(140,130,40,40);
ellipse(360,130,40,40);
fill('brown');
triangle(250,150,190,310,310,310);
fill('black');
strokeWeight(3);
line(170,60,200,80);
line(145,60,175,80);
line(120,60,150,80);
line(95,60,125,80);
line(70,60,100,80);
line(45,60,75,80);
line(330,60,300,80);
line(355,60,325,80);
line(380,60,350,80);
line(405,60,375,80);
line(430,60,400,80);
line(455,60,425,80);
fill('red');
rect(100,380,300,80);
line(100,420,400,420);
}
I drew the most simplest self-portrait with only certain notable characteristics. Bushy eyebrows, smaller right eye, and big lips. Although no one might think this is my self portrait, but I tried to keep it as simple as possible while including some distinctiveness.
*I do not know how to modify the frame size, the whole frame disappears when I try data-width and data-height **Fixed
]]>The process and resulting product were interesting. The restriction to around ten graphic elements really forced me to focus on the most basic aspects of my face, with it being simplified enough to fit the requirements but contain enough features so that viewers could kind of see how it could be a portrait of my face. Even with the restriction, I was able to make the portrait a bit interesting with the use of colors.
function setup(){
createCanvas(400,400);
frameRate(.7);
}
function draw() {
background(random(250),random(95),random(95));
noStroke();
fill(242, 226, 124);//yellow
ellipse(200,200, 300,300);//yellow circle
ellipse(200,200, 5,5);//yellow for shirt
fill(46,2,2);//brown
ellipse(200,210, 160,200);//hair base
quad(97,299, 120,207, 280,207, 303,299);//hair bottom quad
fill(242, 226, 124);//yellow
ellipse(200,300, 195,80);//yellow for shirt
fill(238, 179, 118);//darker tan
ellipse(200,290, 90,70);//chest
fill(245, 186, 125);//tan
ellipse(200,200, 125,140);//face
fill(46,2,2);//brown
quad(210,124, 200,150, 136,190, 143,155);//left bang
quad(190,124, 200,150, 264,190, 257,155);//right bang
quad(155,150, 185,120, 215,120, 245,150);//filler
fill(255);
ellipse(175,200, 35,35);//left eyeball
ellipse(225,200, 35,35);//right eyeball
fill(46,2,2);//brown
ellipse(175,200, 25,25);//left eyeball inner
ellipse(225,200, 25,25);//right eyeball inner
}
]]>//Carly Sacco
//Section C
//csacco@andrew.cmu.edu
//Project-01: Self Portrait (Face)
function setup() {
createCanvas(600, 400);
background(187,191,223)
stroke('white')
strokeWeight(15)
line(20,0, 20,400)
line(80,0, 80,400)
line(140,0,140,400)
line(200,0,200,400)
line(260,0, 260,400)
line(320,0, 320,400)
line(400,0,400,400)
line(460,0,460,400)
line(520,0,520,400)
line(580,0,580,400)
noStroke();
stroke(197,197,197)
strokeWeight(5)
line(25,0,25,400)
line(85,0,85,400)
line(145,0,145,400)
line(205,0,205,400)
line(265,0, 265,400)
line(325,0, 325,400)
line(405,0,405,400)
line(465,0,465,400)
line(525,0,525,400)
line(585,0,585,400)
noStroke();
}
function draw() {
//dress
fill(148,148,148);
rect(215,220,170,300,90,90,15,15);
strokeWeight(1);
//right arm
noFill(148,148,148);
stroke(1);
arc(306,335,135,80, 0, 3.14/2);
arc(306,325,100,60,0, 3.14/2);
//left arm
noFill();
stroke(1);
arc(260,340,60, 30, 3/4, 3.14);
arc(254,357,70,40, 3/4, 3.14);
//hair
noStroke();
fill(93,66,45);
rect(230,90,140,200,40,40,0,0);
stroke(1);
//neck
fill(190, 129, 102);
rect(280,200,40,40);
//hair on shirt
noStroke();
fill(148,148,148);
rect(280,240,40,50);
stroke(1);
//head
fill(194,137,112);
rect(250,100,100,110,30,30,80,60);
//hair on top of head
noStroke();
fill(93,66,45);
arc(290,115,110, 50, 3.14*.75,0, CHORD);
fill(93,66,45);
arc(335,115, 60, 30, 160, 20, CHORD);
stroke(0);
//eyes
fill('black');
ellipse(280,150,15,10);
ellipse(320,150,15,10);
fill('white');
ellipse(280,150,5,5);
fill('white');
ellipse(320,150,5,5);
//nose
noFill(194,137,112);
stroke(5);
arc(300,165,10,5, 1.57, 3.14);
//mouth
noFill();
strokeWeight(2);
arc(300,185,40,20, 0, 3.14);
strokeWeight(1);
//flower stem
fill('green');
rect(285,330,10,80);
//flower
noStroke();
fill(249, 191, 47);
rect(267,295,45,45);
quad(288,285,315,320,285,350,260,320);
fill('brown');
ellipse(287,319,17,17);
stroke(1);
//hand
fill(206,160,140);
rect(270,350,40,30,15,15);
}
Through making this self portrait I learned how useful some of the simple components can be used to create different shapes to represent myself.
]]>/* Austin Garcia
Section C
aegarcia@andrew.cmu.edu
Project - 01
*/
function setup() {
createCanvas(600, 600);
background(200);
strokeWeight(0);
rect(150, 400, 200, 450);
strokeWeight(1);
ellipse(300, 300, 360, 440);
arc(220, 250, 80, 80, 0, PI + QUARTER_PI, CHORD);
arc(400, 250, 80, 80, 0, PI + QUARTER_PI, CHORD);
fill(77, 31, 10);
strokeWeight(0);
ellipse(230, 270, 25, 25);
ellipse(414, 270, 25, 25);
stroke(77, 31, 10)
noFill();
strokeWeight(25)
bezier(180, 140, 250, 50, 350, 150, 380, 100);
bezier(180, 145, 250, 50, 350, 150, 390, 110);
bezier(180, 145, 250, 90, 350, 100, 400, 110);
bezier(150, 180, 250, 90, 350, 100, 400, 110);
bezier(150, 180, 250, 90, 350, 90, 400, 110);
bezier(180, 140, 250, 50, 350, 150, 400, 90);
bezier(180, 140, 250, 50, 350, 150, 400, 90);
bezier(180, 140, 250, 50, 350, 80, 380, 100);
strokeWeight(2)
line(320, 260, 340, 390)
fill(194, 114, 107)
ellipse(300, 440, 100, 60);
strokeWeight(0);
fill(255);
ellipse(300, 420, 60, 20);
ellipse(300, 460, 60, 20);
//triangle(200, 140, 350, 60, 430, 140);
//arc(300, 300, 280, 80, 0, HALF_PI);
/* NOTES FROM CLASS rect(320 - mouseX, 10, 50, 100)
rect(mouseX, height / 2, 50, 100) use height / 2 to place in middle
rect(random(50) + 100, height / 2, 50, 100)
rect(width - 55, height - 55, 50, 50) Places rectangle at 55,55 within
canvas
CONDITIONALS
if (expression) {
statement;
}
if (mouseX > 100)
background("green")
*/
// x, y, w, h
}
function draw() {
}
]]>function setup() {
createCanvas(400,300);
background(155, 228, 250)
// hair background
fill('black')
ellipse(170, 130, 180, 205);
//face and upper shoulders
fill(168, 84, 29)
noStroke()
rect(147, 110, 50, 120);
fill(87, 47, 21)
ellipse(170, 130, 85, 105);
fill(168, 84, 29)
ellipse(170, 110, 120, 135);
fill(168, 84, 29)
ellipse(170, 215, 170, 50);
//facial features
//blush
fill(181, 98, 91)
ellipse(130, 130, 40, 20);
fill(181, 98, 91)
ellipse(210, 130, 40, 20);
//eyes
fill(0, 0, 0)
ellipse(195, 100, 20, 20);
fill('white')
ellipse(200, 97, 5, 5);
fill(0, 0, 0)
ellipse(145, 100, 20, 20);
fill('white')
ellipse(148, 97, 5, 5);
arc(170, 145, 30, 30, 100, PI);
fill(97, 58, 30);
noStroke();
arc(173, 127, 30, 30, 10, PI + QUARTER_PI);
// blouse
fill('blue')
quad(83, 213, 257, 215, 275, 275, 60, 276);
//curl
noFill();
strokeWeight(4);
stroke(0, 0, 0);
bezier(150, 42, 80, 95, 190, 100, 125, 140);
//curl bubbles
//left curls
noFill();
stroke('black');
strokeWeight(6);
ellipse(150, 40, 30, 30);
noFill();
stroke('black');
strokeWeight(6);
ellipse(130, 50, 30, 30);
noFill();
stroke('black');
strokeWeight(10);
ellipse(110, 70, 35, 40);
noFill();
stroke('black');
strokeWeight(10);
ellipse(95, 110, 45, 50);
noFill();
stroke('black');
strokeWeight(10);
ellipse(95, 150, 40, 50);
noFill();
stroke('black');
strokeWeight(10);
ellipse(105, 180, 40, 50);
//right curls
noFill();
stroke('black');
strokeWeight(6);
ellipse(190, 40, 30, 30);
noFill();
stroke('black');
strokeWeight(8);
ellipse(215, 50, 30, 30);
noFill();
stroke('black');
strokeWeight(10);
ellipse(235, 80, 35, 40);
noFill();
stroke('black');
strokeWeight(10);
ellipse(245, 115, 45, 40);
noFill();
stroke('black');
strokeWeight(10);
ellipse(245, 150, 40, 40);
noFill();
stroke('black');
strokeWeight(10);
ellipse(235, 180, 40, 40);
}
function draw(){
}
]]>