documentation of the changes for the portrait
The original one looks more exquisite but it’s inflexible for its bunch of hard-coded numbers, so I changed them into the relative position to the center of head.
The function setup() only runs for one time so the random() I put here can draw the rainbows separately and randomly once the code runs.
I used the constant frameCount in sin() to draw a sun going between the left and the right to imitate the sun. So I drew the shadow of nose and neck and made it changes alongside the sunshine.
I combined random() and sin() for the earrings so I can get a random value with amplitude. The width of ellipse changes to illustrate the rotation of earrings.
I want the black eyeballs to turn to the direction of mouse, but they shoudn’t run out of the white eyeballs. So I calculate the proportion of mouseX against the separate eyeballs.