/* built with Studio Sketchpad:
* https://sketchpad.cc
*
* observe the evolution of this sketch:
* https://bard117s14.sketchpad.cc/sp/pad/view/ro.RPd5Ltc3Y9o/rev.29
*
* authors:
* Christopher Shea
* license (unless otherwise specified):
* creative commons attribution-share alike 3.0 license.
* https://creativecommons.org/licenses/by-sa/3.0/
*/
/*
Chris Shea <[email protected])
Feb. 4, 2014
Self-Portrait
Comment: A conscious goal (aside from simply creating an image)
was to use proportions of the canvas dimensions to place/center
objects rather than using coordinates. As far as the "form of
the running program" goes, I would say that in this case, the
image is as static as the code itself. Only the 'reading' of the
code is dynamic insofar as it happens as a progression rather
than all at once, and from this progression, meaning is derived,
much as how grammar (in this case, syntax specifically) gives
meaning to language ('I give you a gift' v.s. "you give me a gift',
ignoring the differences in case between 'I' and 'me'.)
*/
size(600,800);
smooth();
background(255);
noStroke();
// Grass
fill(37, 227, 0);
rect(0, 600, 600, 400);
// Sky
fill(2, 240, 238);
rect(0, 0, 600, 600);
// Sun
fill(255, 255, 0);
ellipse(80, 90, 100, 100);
// Cloud
fill(255);
ellipse(115, 115, 65, 50);
ellipse(150, 100, 75, 65);
ellipse(185, 115, 65, 50);
// Shirt
fill(245, 40, 40);
rect(width/2-100, height/2+137, 200, 400);
// Neck
fill(250, 165, 94); // neck Tone, darker for contrast
rectMode(CENTER);
rect(width/2, height/2+100, 60, 74);
// The collar portion of neck
ellipseMode(CENTER);
ellipse(width/2, height/2+137, 60, 30);
// Head
fill(250, 172, 98); // skin tone
ellipse(width/2, height/2, 150, 200);
// Eyes
fill(255);
ellipse(width/2-30, height/2-10, 30, 15); //left
ellipse(width/2+30, height/2-10, 30, 15); //right
// Irises
fill(245, 40, 40);
ellipse(width/2-30, height/2-10, 10, 10); //left
ellipse(width/2+30, height/2-10, 10, 10); //right
// Mouth
stroke(183, 54, 54);
strokeWeight(2);
fill(255);
arc(width/2, height/2+50, 50, 50, 0, PI, CHORD);
// Nose
stroke(198, 147, 80);
strokeWeight(2);
line(width/2, height/2-10, width/2+8, height/2+30); //long edge
line(width/2, height/2+30, width/2+8, height/2+30);
// Antenna
stroke(0);
strokeWeight(3);
line(width/2, height/2-100, width/2, height/2-145);
fill(245, 40, 40);
noStroke();
ellipse(width/2, height/2-145, 15, 15);
// Eyebrows
//keep this towards bottom and above any other stroked elements
stroke(95, 51, 9);
strokeWeight(2);
//left
line(width/2-45, height/2-25, width/2-15, height/2-25);
//right
line(width/2+45, height/2-25, width/2+15, height/2-25);