Self Portrait

I already had started Schiffman's Coding Train, although I hadn't used the p5.js web editor yet.  I had been in Processing.  So I had a bit of a head start, but also was happy to (painstakingly) learn the arc(), curve(), and bezier() functions more precisely.  I also wasn't used to a bit of the syntax, but it wasn't much of a hassle.

I knew I wanted to draw my face with the glasses using opacity.  To pick my RGB colors, I used this website and copy/pasted from there.  There may be better sites but that was the first one on Google.. ( I wonder if there is a setup function or class you can load that would allow simple word input for colors?)

I wish I knew a better way to draw the shapes so that the relationships could be maintained if the drawing was scaled, but I could only really do so much with dividing width and height.  Also, I would want to know more about how Reneissance painters use mathematics like the Golden Ration to scale their drawings properly. 

To help with navigation, knowing where my x and y values were as I hovered over say, the rim of the glasses, I put the code into a draw() function and used print(mouseX, mouseY); with Auto-Refresh turned on.  This helped me estimate where to draw lines to and such so that they intersected as needed.

Also, I would // each new line of code so that Auto-Refresh would work until i was ready to preview each new line...

// arc(

But I realized that if I type the function and close the parenthesis that followed, the code would not make the drawing disappear...

arc();

One question I had was - how could I draw the teeth using sin() function? I had to eyeball the curve of the lips and it was a pain in the ass.  I also made a variable for the upper lip values which made things a tad easier. 

var y = height / 1.55 + 2;
  line(168, y, 168, 292);
  line(180, y, 180, 300);
  line(192, y, 192, 306);
  line(204, y, 204, 306);
  line(216, y, 216, 303);
  line(228, y, 228, 296);

I would like to know a more streamlined way of drawing so that the picture could scale if the canvas size changed.  One thing that would have helped was to know if there was a way to reflect something across the screen?

Towards the end, I had to cut myself off from being too obsessive as I was getting into minor tweaks to the eye brows and eye shapes to change the emotion.  Very subtle changes in values were significant in effect!