Originally, the wannabe artist in me wanted to make my self portrait look as organic and realistic as possible. But, when that failed, it was very helpful for me to break down every part of the portrait into certain shapes that would suit specific features. I used the quad function for the face shape for a more structured jaw, a combination of rect and ellipse for the hair and body, and so on.
Although challenging, I felt like this assignment helped me learn more about the different functions I could use in Processing, and hopefully next time I can figure out how to use beginShape.
Here’s the code:
float hairR; float hairG; float hairB; PImage lips; void setup(){ size(500, 500); lips = loadImage("lips.png"); hairR = 139; hairG = 69; hairB = 19; } void draw(){ println ( mouseX + "," + mouseY ); //background(255, 200, 200); background(160,220,232); noStroke(); //head fill(hairR, hairG, hairB); ellipse(250, 120, 258, 120); //head top fill(255, 238, 212); quad(121, 120, 379, 120, 379, 340, 121, 340); quad(121, 340, 360, 340, 300, 360, 200, 360 ); noStroke(); fill(hairR, hairG, hairB); rect(121,120, 50, 350); //121 + 35 rect(345-15 ,120, 50, 350); stroke(0); strokeWeight(2); pushMatrix(); translate(250, 250); fill(250, 200, 200); stroke(0); strokeWeight(1); translate(0,20); //eyes fill(255); ellipse(-50,-80,35,35); ellipse(50,-80,35,35); fill(190, 102, 0); ellipse(-50,-80,20,20); ellipse(50,-80,20,20); fill(0); ellipse(-50,-80,10,10); ellipse(50,-80,10,10); fill(255); ellipse(-45,-80,5,5); ellipse(55,-80,5,5); //glasses noFill(); stroke(0); strokeWeight(2); ellipse(-50,-80,60,60); ellipse(50,-80,60,60); //lips image(lips,-50,-20, width/5, height/6); popMatrix(); //glasses2 strokeWeight(2); line(230,190, 270,190); //nose stroke(250, 220, 180); triangle(250, 230, 280, 250, 230, 250); //neck fill(255, 238, 212); rect(220,360,70,80); //body fill(140,77,176); stroke(140,77,176); rect(65, 440, 75, 120); rect(150, 380, 200, 120); rect(360, 440, 75, 120); ellipse(140, 440, 150, 120); ellipse(360, 440, 150, 120); } void mousePressed(){ hairR = random(255); hairB = random(255); hairG = random(255); }
And the masterpiece: