|
const canvasWidth = 960; |
|
const canvasHeight = 500; |
|
let curRandomSeed = 0; |
|
|
|
function setup () { |
|
// create the drawing canvas, save the canvas element |
|
let main_canvas = createCanvas(canvasWidth, canvasHeight); |
|
main_canvas.parent('canvasContainer'); |
|
|
|
curRandomSeed = int(focusedRandom(0, 1000)); |
|
|
|
// rotation in degrees |
|
angleMode(DEGREES); |
|
} |
|
|
|
function changeRandomSeed() { |
|
curRandomSeed = curRandomSeed + 1; |
|
} |
|
|
|
// global variables for colors |
|
const bg_color1 = [225, 206, 187]; |
|
const bg_color2 = [47, 59, 64]; |
|
const bg_color3 = [70, 70, 120]; |
|
|
|
const fg_color1 = [151, 102, 52]; |
|
const fg_color2 = [56, 91, 194]; |
|
const fg_color3 = [206, 207, 180]; |
|
|
|
const stroke_color1 = [95, 52, 8]; |
|
const stroke_color2 = [210, 219, 189]; |
|
const stroke_color3 = [50, 50, 50]; |
|
let lastSwapTime = 0; |
|
let millisPerSwap = 1000; |
|
|
|
function drawRoundFace(x, y, w, h, tilt_value, Facical_modifier, mouth_value, addtional) { |
|
push(); |
|
translate(x, y); |
|
rotate(tilt_value); |
|
let extent = 0; |
|
if(h < w) { |
|
extent = h / 2; |
|
} |
|
else { |
|
extent = w / 2; |
|
} |
|
//let scale = extent / 220.0; |
|
scale(0.7); |
|
stroke(1); |
|
|
|
//Face filled |
|
fill(0); |
|
beginShape(); |
|
//top of head |
|
vertex(0, -75); |
|
//left side |
|
vertex(-50, -65); |
|
vertex(-65, -45); |
|
vertex(-60, 0); |
|
vertex(-45, 35); |
|
vertex(-35, 50); |
|
vertex(-20, 55); |
|
//bottem |
|
vertex(0, 60); |
|
//right side |
|
vertex(20, 55); |
|
vertex(35, 50); |
|
vertex(45, 35); |
|
vertex(60, 0); |
|
vertex(65, -45); |
|
vertex(50, -65); |
|
endShape(); |
|
stroke(255,255,255); |
|
//EYEBROWS LEFT |
|
line( - 55, Facical_modifier - 40, - 45 - addtional, Facical_modifier - 50); |
|
line(- 45 - addtional, Facical_modifier - 50, -10 - addtional, Facical_modifier - 50); |
|
line(-10 - addtional, Facical_modifier - 50, - 30 - addtional, Facical_modifier - 48); |
|
line(- 30 - addtional, Facical_modifier - 48, - 55, Facical_modifier - 40); |
|
//EYEBROWS RIGHT |
|
line( 55, Facical_modifier - 40, 45 + addtional, Facical_modifier - 50); |
|
line( 45 + addtional, Facical_modifier - 50, 10 + addtional, Facical_modifier - 50); |
|
line( 10 + addtional, Facical_modifier - 50, 30 + addtional, Facical_modifier - 48); |
|
line( 30 + addtional, Facical_modifier - 48, 55, Facical_modifier - 40); |
|
//EYES------------------ |
|
//LEFT EYE |
|
line( - 45, Facical_modifier - 25, - 25, Facical_modifier - 30); |
|
line( - 25, Facical_modifier - 30, - 15, Facical_modifier - 25 - Facical_modifier); |
|
line( - 15, Facical_modifier - 25 - Facical_modifier, - 20, Facical_modifier - 15); |
|
line( - 20, Facical_modifier - 15, - 30, Facical_modifier - 15); |
|
line( - 30, Facical_modifier - 15, - 45, Facical_modifier - 25); |
|
//RIGHT EYE |
|
line( + 45, Facical_modifier - 25, + 25, Facical_modifier - 30); |
|
line( + 25, Facical_modifier - 30, + 15, Facical_modifier - 25 - Facical_modifier); |
|
line( + 15, Facical_modifier - 25 - Facical_modifier, + 20, Facical_modifier - 15); |
|
line( + 20, Facical_modifier - 15, + 30, Facical_modifier - 15); |
|
line( + 30, Facical_modifier - 15, + 45, Facical_modifier - 25); |
|
//NOSE----------------- |
|
//nose top |
|
line( - 5, Facical_modifier - 15, 5, Facical_modifier - 15); |
|
//sides |
|
line( - 5, Facical_modifier - 15, -5 - Facical_modifier, 15); |
|
line( 5, Facical_modifier - 15, 5 + Facical_modifier, 15); |
|
line( -5 - Facical_modifier, 15, 0 - Facical_modifier, 18); |
|
line( 5 + Facical_modifier, 15, 0 + Facical_modifier, 18); |
|
line( 0 - Facical_modifier, 18, 0 + Facical_modifier, 18); |
|
//inner |
|
line( -5 - Facical_modifier, 15, 0 - Facical_modifier, 10); |
|
line( 5 + Facical_modifier, 15, 0 + Facical_modifier, 10); |
|
line( 0 - Facical_modifier, 10, 0 + Facical_modifier, 10); |
|
//MOUTH |
|
//right side |
|
line( 5 + Facical_modifier, 30, 0 + Facical_modifier, 25); |
|
line( 5 + Facical_modifier, 30, 0 + Facical_modifier, 35); |
|
//left side |
|
line( -5 - Facical_modifier, 30, 0 - Facical_modifier, 25); |
|
line( -5 - Facical_modifier, 30, 0 - Facical_modifier, 35); |
|
//inner |
|
line( 5 + Facical_modifier, 30, -2 + Facical_modifier, 30); |
|
line( -2 + Facical_modifier, 30, 0, 28); |
|
|
|
line( -5 - Facical_modifier, 30, 2 - Facical_modifier, 30); |
|
line( 2 - Facical_modifier, 30, 0, 28); |
|
//top |
|
line(0 + Facical_modifier, 25,0 - Facical_modifier, 25); |
|
//bottem |
|
line(0 + Facical_modifier, 35, 0, 42 ); |
|
line(0 - Facical_modifier, 35, 0, 42 ); |
|
//ADDITION LINES |
|
stroke(100 ,100,100); |
|
strokeWeight(2); |
|
//left side---------------------------- |
|
line(-60, 0, - 45, Facical_modifier - 25); |
|
line(-45, 35, - 45, Facical_modifier - 25); |
|
|
|
line(-50,-65, - 55, Facical_modifier - 40); |
|
line(-65, -45, - 55, Facical_modifier - 40); |
|
line(-60, 0, - 55, Facical_modifier - 40); |
|
|
|
line(-50,-65,- 45 - addtional, Facical_modifier - 50); |
|
line(-50,-65,-10 - addtional, Facical_modifier - 50); |
|
line(0, -75,-10 - addtional, Facical_modifier - 50); |
|
|
|
line(-45, 35,- 5 - Facical_modifier, 30); |
|
line(0, 60,- 5 - Facical_modifier, 30); |
|
line(-20, 55,- 5 - Facical_modifier, 30); |
|
|
|
line(- 5, Facical_modifier - 15, -10 - addtional, Facical_modifier - 50); |
|
//right side--------------------------- |
|
line(60, 0, 45, Facical_modifier - 25); |
|
line(45, 35, 45, Facical_modifier - 25); |
|
|
|
line(50,-65, 55, Facical_modifier - 40); |
|
line(65, -45, 55, Facical_modifier - 40); |
|
line(60, 0, 55, Facical_modifier - 40); |
|
|
|
line(50,-65, 45 + addtional, Facical_modifier - 50); |
|
line(50,-65, 10 + addtional, Facical_modifier - 50); |
|
line(0, -75, 10 + addtional, Facical_modifier - 50); |
|
|
|
line(45, 35, 5 + Facical_modifier, 30); |
|
line(0, 60, 5 + Facical_modifier, 30); |
|
line(20, 55, 5 + Facical_modifier, 30); |
|
//extra |
|
line(- 45, Facical_modifier - 25, - 55, Facical_modifier - 40); |
|
line( 45, Facical_modifier - 25, 55, Facical_modifier - 40); |
|
|
|
line( 5, Facical_modifier - 15, 10 + addtional, Facical_modifier - 50); |
|
pop(); |
|
} |
|
|
|
function drawSquareFace(x, y, w, h, width_value, Facical_modifier, mouth_value, addtional) { |
|
push(); |
|
rectMode(CENTER); |
|
translate(x, y); |
|
//rotate(width_value); |
|
|
|
let extent = 0; |
|
if(h < w) { |
|
extent = h / 2; |
|
} |
|
else { |
|
extent = w / 2; |
|
} |
|
//let scale = extent / 220.0; |
|
scale(0.7); |
|
stroke(1); |
|
var on = 1; |
|
if(on == 1){ |
|
//Face line art |
|
line(0, -75, -50, -65); |
|
line(0, -75, 50, -65); |
|
line(-50, -65, -65, -45); |
|
line(-65, -45, -60, 0); |
|
line(-60, 0, -45, 35); |
|
line(-45, 35, -35, 50); |
|
line(-35, 50, -20, 55); |
|
line(-20, 55, 0, 60); |
|
line(0, 60, 20, 55); |
|
line(20, 55, 35, 50); |
|
line(35, 50, 45, 35); |
|
line(45, 35, 60, 0); |
|
line(60, 0, 65, -45); |
|
line(65, -45, 50, -65); |
|
} |
|
stroke(0,255,0); |
|
//EYEBROWS LEFT |
|
line( - 55, Facical_modifier - 40, - 45 - addtional, Facical_modifier - 50); |
|
line(- 45 - addtional, Facical_modifier - 50, -10 - addtional, Facical_modifier - 50); |
|
line(-10 - addtional, Facical_modifier - 50, - 30 - addtional, Facical_modifier - 48); |
|
line(- 30 - addtional, Facical_modifier - 48, - 55, Facical_modifier - 40); |
|
//EYEBROWS RIGHT |
|
line( 55, Facical_modifier - 40, 45 + addtional, Facical_modifier - 50); |
|
line( 45 + addtional, Facical_modifier - 50, 10 + addtional, Facical_modifier - 50); |
|
line( 10 + addtional, Facical_modifier - 50, 30 + addtional, Facical_modifier - 48); |
|
line( 30 + addtional, Facical_modifier - 48, 55, Facical_modifier - 40); |
|
//LEFT EYE |
|
line( - 45, Facical_modifier - 25, - 25, Facical_modifier - 30); |
|
line( - 25, Facical_modifier - 30, - 15, Facical_modifier - 25 - Facical_modifier); |
|
line( - 15, Facical_modifier - 25 - Facical_modifier, - 20, Facical_modifier - 15); |
|
line( - 20, Facical_modifier - 15, - 30, Facical_modifier - 15); |
|
line( - 30, Facical_modifier - 15, - 45, Facical_modifier - 25); |
|
//RIGHT EYE |
|
line( + 45, Facical_modifier - 25, + 25, Facical_modifier - 30); |
|
line( + 25, Facical_modifier - 30, + 15, Facical_modifier - 25 - Facical_modifier); |
|
line( + 15, Facical_modifier - 25 - Facical_modifier, + 20, Facical_modifier - 15); |
|
line( + 20, Facical_modifier - 15, + 30, Facical_modifier - 15); |
|
line( + 30, Facical_modifier - 15, + 45, Facical_modifier - 25); |
|
//NOSE----------------- |
|
//nose top |
|
line( - 5, Facical_modifier - 15, 5, Facical_modifier - 15); |
|
//sides |
|
line( - 5, Facical_modifier - 15, -5 - Facical_modifier, 15); |
|
line( 5, Facical_modifier - 15, 5 + Facical_modifier, 15); |
|
line( -5 - Facical_modifier, 15, 0 - Facical_modifier, 18); |
|
line( 5 + Facical_modifier, 15, 0 + Facical_modifier, 18); |
|
line( 0 - Facical_modifier, 18, 0 + Facical_modifier, 18); |
|
//inner |
|
line( -5 - Facical_modifier, 15, 0 - Facical_modifier, 10); |
|
line( 5 + Facical_modifier, 15, 0 + Facical_modifier, 10); |
|
line( 0 - Facical_modifier, 10, 0 + Facical_modifier, 10); |
|
//MOUTH |
|
//right side |
|
line( 5 + Facical_modifier, 30, 0 + Facical_modifier, 25); |
|
line( 5 + Facical_modifier, 30, 0 + Facical_modifier, 35); |
|
//left side |
|
line( -5 - Facical_modifier, 30, 0 - Facical_modifier, 25); |
|
line( -5 - Facical_modifier, 30, 0 - Facical_modifier, 35); |
|
//inner |
|
line( 5 + Facical_modifier, 30, -2 + Facical_modifier, 30); |
|
line( -2 + Facical_modifier, 30, 0, 28); |
|
|
|
line( -5 - Facical_modifier, 30, 2 - Facical_modifier, 30); |
|
line( 2 - Facical_modifier, 30, 0, 28); |
|
//top |
|
line(0 + Facical_modifier, 25,0 - Facical_modifier, 25); |
|
//bottem |
|
line(0 + Facical_modifier, 35, 0, 42 ); |
|
line(0 - Facical_modifier, 35, 0, 42 ); |
|
pop(); |
|
} |
|
|
|
function mouseClicked() { |
|
changeRandomSeed(); |
|
} |
|
|
|
function changeRandomSeed() { |
|
curRandomSeed = curRandomSeed + 1; |
|
lastSwapTime = millis(); |
|
} |
|
|
|
function mouseClicked() { |
|
changeRandomSeed(); |
|
} |
|
|
|
function draw () { |
|
if(millis() > lastSwapTime + millisPerSwap) { |
|
changeRandomSeed(); |
|
} |
|
|
|
// reset the random number generator each time draw is called |
|
resetFocusedRandom(curRandomSeed); |
|
|
|
// clear screen |
|
background(125,125,125); |
|
noStroke(); |
|
|
|
// draw a 5x3 grid of circles, with SquareFace in the center |
|
let w = canvasWidth / 9; |
|
let h = canvasHeight / 5; |
|
for(let i=0; i<5; i++) { |
|
for(let j=0; j<9; j++) { |
|
let y = h/2 + h*i; |
|
let x = w/2 + w*j; |
|
if ((i == 1 && j == 4) || (i == 2 && j == 3) || (i == 2 && j == 4) || (i == 2 && j == 5) || (i == 3 && j == 4) |
|
|| (i == 0 && j == 4) || (i == 4 && j == 4) || (i == 2 && j == 2)|| (i == 2 && j == 6) || (i == 0 && j == 0) |
|
|| (i == 0 && j == 8) || (i == 4 && j == 0) || (i == 4 && j == 8)) { |
|
let width_value = focusedRandom(10, 50); |
|
let Facical_modifier = int(focusedRandom(-20, 20)); |
|
let addtional = int(focusedRandom(-15, 15,5)); |
|
let mouth_value = focusedRandom(0, 200); |
|
drawSquareFace(x, y+6, w, h, width_value, Facical_modifier, mouth_value, addtional); |
|
} |
|
else { |
|
let tilt_value = focusedRandom(-15, 45); |
|
let Facical_modifier = int(focusedRandom(1, 20)); |
|
let addtional = int(focusedRandom(-15, 15,5)); |
|
let mouth_value = focusedRandom(30, 90); |
|
drawRoundFace(x, y+6, w, h, tilt_value, Facical_modifier, mouth_value, addtional); |
|
} |
|
} |
|
} |
|
} |
|
|
|
function keyTyped() { |
|
if (key == '!') { |
|
saveBlocksImages(); |
|
} |
|
else if (key == '@') { |
|
saveBlocksImages(true); |
|
} |
|
} |