xxxxxxxxxx
163
/*self portrait
by Michal Shahaf
09/29/22
*/
var x = 200;
var y = 300;
var cSize = 50; //circle size
var rectH = 100; //rect height
var rectW = 100; //rect width
var ellipseX = 130; // fingers x
var ellipseW = 15; // fingers width
var fingerSize = 40;
var glassesLineH = 260; //glasses line height
var shineLineH = 144; // Shine line Height
var bodyColor = "NavajoWhite";
var shirtColor = "DarkMagenta";
var bodyShade = "tan";
let valueSun = "yellow";
let valueSky = "Navy";
function setup() {
createCanvas(400, 600);
}
function draw() {
background(valueSky);
//sun
fill(valueSun);
noStroke();
circle(x + 130, y - 230, cSize * 2);
//cloud
fill("white");
circle(x - 170, y - 220, cSize - 10);
circle(x - 135, y - 220, cSize + 20);
circle(x - 100, y - 220, cSize - 10);
//hair
fill("black");
rect(x - 120, y - 80, rectH + 140, rectW + 200);
//neck
fill(bodyShade);
rect(x - 15, y + 110, rectH - 75, rectW - 70);
//head
fill(bodyColor);
ellipse(x, y - 20, 220, 270);
//chicks
fill("pink");
circle(x - 70, y + 10, cSize - 10);
circle(x + 75, y + 10, cSize - 10);
//nose
fill(bodyShade);
circle(x + 2, y + 15, cSize - 30);
//mouth
stroke("black");
noFill();
strokeWeight(3);
arc(x + 3, y + 60, 20, 20, 39, PI + QUARTER_PI, OPEN);
arc(x + 13, y + 70, 13, 13, 31, PI + QUARTER_PI, OPEN);
//glasses
let eyeX = map(mouseX, 0, width, -20, 0);
// eyeX = eyeX + width / 2; //center
var centeredEyeX = eyeX + width / 2;
fill("black");
rectMode(CENTER);
rect(centeredEyeX - 40, y - 40, rectH - 40, rectW - 60);
rect(centeredEyeX + 40, y - 40, rectH - 40, rectW - 60);
strokeWeight(9);
line(centeredEyeX - 10, glassesLineH, centeredEyeX + 20, y - 40); // middle
line(centeredEyeX - 65, glassesLineH, width / 2 - 105, y - 65); // left
line(centeredEyeX + 70, glassesLineH, width / 2 + 105, y - 65);
rectMode(CORNER);
//shine
strokeWeight(6);
stroke("white");
line(shineLineH + eyeX, y - 53, x - 17 + eyeX, y - 30);
line(shineLineH + eyeX, y - 43, x - 26 + eyeX, y - 25);
line(shineLineH + 80 + eyeX, y - 53, x + 63 + eyeX, y - 30);
line(shineLineH + 80 + eyeX, y - 43, x + 54 + eyeX, y - 25);
//hat
fill("DarkOrange");
noStroke();
quad(x - 140, y - 80, x + 140, y - 80, x + 100, y - 120, x - 100, y - 120);
fill("orange");
quad(x - 70, y - 160, x + 70, y - 160, x + 100, y - 120, x - 100, y - 120);
//shirt
fill(shirtColor);
rect(x - 90, y + 140, rectH + 70, rectW + 100, 20);
//left hands
fill(bodyShade);
rect(x - 122, y + 170, rectH - 65, rectW - 20);
//right hands
fill(bodyColor);
rect(x + 78, y + 170, rectH - 65, rectW + 30);
//sleevs
fill(shirtColor);
rect(x - 125, y + 140, rectH - 60, rectW - 60, 7);
rect(x + 75, y + 140, rectH - 60, rectW - 60, 7);
//left arm
fill(bodyColor);
rect(x - 123, y + 210, rectH - 50, rectW - 60, 5);
//cup
fill("white");
quad(x - 80, y + 270, x - 30, y + 270, x - 10, y + 130, x - 100, y + 130);
fill("tan");
quad(x - 75, y + 265, x - 35, y + 265, x - 20, y + 160, x - 89, y + 160);
fill("darkGreen");
quad(x - 100, y + 130, x - 10, y + 130, x, y + 124, x - 110, y + 124);
//straw
strokeWeight(12);
stroke("green");
line(x - 55, y + 124, x - 45, y + 80);
line(x - 45, y + 80, x + 1, y + 75);
//logo
fill("green");
circle(x - 55, y + 190, cSize - 20);
//fingers
strokeWeight(2);
stroke("Sienna");
fill(bodyColor);
ellipse(ellipseX, y + 245, fingerSize, ellipseW);
ellipse(ellipseX, y + 235, fingerSize, ellipseW);
ellipse(ellipseX, y + 225, fingerSize, ellipseW);
ellipse(ellipseX, y + 215, fingerSize, ellipseW);
}
function mousePressed() {
if (valueSun === "yellow") {
valueSun = 255;
valueSky = "Navy";
} else {
valueSun = "yellow";
valueSky = "skyBlue";
}
function keyPressed() {
save("self-portrait-interactive2.png");
}
}