mmirho – Project 2 – Section A

I kept the structure of the face very similar to the original template because I thought it allowed me to experiment the most with the code and variation without worrying too much about the physical appeal

I was able to create a large amount of variation as a result, although the face is quite simple.

SORRY!
I’m really sorry, but would it be alright would it be alright if you let my incompetence slide this time. I followed the embedding instructions to the tee, and even compared it with my old post (Which I put below for reference) but my program still won’t show up. I would love it if you could take the time to paste my code into your own text editor, I assure you it works fine, the only thing that got hung up was my embedding.

I would love to schedule some office hours on this topic because it’s clear I’m missing something. Thanks! I hope I won’t get points off. I would appreciate a comment on my post or an email if you want to talk about it.

Max’s Face

function setup() {
    createCanvas(640, 480);
    mouth2 = PI - 0.2;
}
var leftEyeSize = 20;
var rightEyeSize = 20;
var faceWidth = 100;
var faceHeight = 150;
var noseHeight = 15;
var noseLength = 10;
var mouthHeight = 15;
var mouthLength = 10;
var mouthType = 5;
var pupilH = 1;
var pupilV = 1;
var mouth1 = 0.2;
var mouth2 = 3; // fix above to PI - 0.2;
var mouthFlat = 2*mouthHeight;
var moveUp = 0;
var moveNoseUp = 0;
function draw() {
    background(180);
    fill(250);
    fill(230, 200, 255);
    ellipse(width/2, height/2, faceWidth, faceHeight);
    var heightOrientation = height/2 + faceHeight/10;
    arc(width/2, heightOrientation + faceHeight/3.5 - moveUp, 2*mouthLength, mouthFlat, mouth1, mouth2);
    fill(230, 200, 255);
    arc(width/2 + noseLength, heightOrientation - moveNoseUp, 2*noseLength, 2*noseHeight, HALF_PI, PI);
    fill(250);
    line(width/2, heightOrientation + noseHeight - moveNoseUp, width/2 + noseLength, heightOrientation + noseHeight - moveNoseUp);
    var eyeLeftOri = width / 2 - faceWidth * 0.25;
    var eyeRightOri = width / 2 + faceWidth * 0.25;
    ellipse(eyeLeftOri, height/2, leftEyeSize, leftEyeSize);
    ellipse(eyeRightOri, height/2, rightEyeSize, rightEyeSize);
    ellipse(eyeLeftOri + pupilH, height/2 + pupilV, leftEyeSize/3, leftEyeSize/3);
    ellipse(eyeRightOri + pupilH, height/2 + pupilV, rightEyeSize/3, rightEyeSize/3);
    
}
function mousePressed() {
    eyeLeftOri = width/2 - faceWidth*1/random(3,6);
    eyeRightOri = width/2 + faceWidth*1/random(3,6);
    pupilH = random(-5, 5);
    pupilV = random(-5, 5);
    faceWidth = random(75, 150);
    faceHeight = random(100, 200);
    leftEyeSize = random(20, 30);
    noseHeight = random(8, 25);
    noseLength = random(5,10);
    mouthHeight = random(10, 15);
    mouthLength = random(10, 20);

    randomEye = random(1,40);
    if(randomEye < 5) {
        rightEyeSize = random(20,30);
    }
    else {
        rightEyeSize = leftEyeSize;
    }

    mouthType = random(0,100);
    if(mouthType < 40) {
        mouth1 = 0.2;
        mouth2 = (PI-0.2);
        mouthFlat = 2*mouthHeight;
        moveUp = 20;
    }
    else if (mouthType > 60) {
        mouth1 = (PI+0.2);
        mouth2 = -0.2;
        mouthFlat = 2*mouthHeight;
        moveUp = 0;
        moveNoseUp = 15;
    }
    else {
        mouth1 = 0.2;
        mouth2 = PI-0.2;
        mouthFlat = 1;
        moveUp = 0;
    }
}

Face

function setup() {
    createCanvas(500, 500);
    background(250, 250, 250);
}

function draw() {

    fill(255, 224, 189); //skin color
    noStroke();

    //Head
    rectMode(CENTER);
    ellipse(width/2, (height/2), 140, 160);

    //Cut off the top of head
    fill(250);
    rect(width/2, (height/2)-150, 140, 160); 
    fill(255,224,189);

    //Ears
    arc((width/2)-50,(height/2),60,50,3*PI/2+PI,3*PI/2,OPEN);
    arc((width/2)+50,(height/2),60,50,3*PI/2,3*PI/2,OPEN);

    //Mouth
    stroke(0);
    line(250, 310, 220, 300);
    noStroke();

    //Nose
    fill(0);
    triangle(250, 255, 265, 285, 250, 285);
    fill(255, 224, 189);
    triangle(247, 253, 262, 283, 247, 283);

    //Hair
    fill(255, 226, 60);
    triangle(237, 195, 197, 195, 240, 155);
    triangle(257, 195, 217, 195, 260, 155);
    triangle(277, 195, 237, 195, 280, 155);
    triangle(297, 195, 257, 195, 300, 155);

    //Eyes
    fill(0);
    stroke(0);
    strokeWeight(3);
    fill(255);
    ellipse((width/2)+30, (height/2)-10, 25, 15);
    ellipse((width/2)-30, (height/2)-10, 25, 15);

    //Irises
    fill(0,0,200); 
    stroke(0);
    ellipse((width/2)+32, (height/2)-10, 12, 14);
    ellipse((width/2)-28, (height/2)-10, 12, 14);

    //Pupils
    noStroke(); 
    fill(0);
    ellipse((width/2)+32, (height/2)-10, 5, 5);
    ellipse((width/2)-28, (height/2)-10, 5, 5);


}

aerubin-LookingOutwards-02-Section_C

Utilizing an algorithm, a computer-generated jazz improvisation was created in the form of a melody over a walking bass line. I surprising found it very pleasing to listen to in comparison to what I would expect a computer to compose as it lacks humanity and emotion which is essential for music, composition, and art. It also sounds like jazz music as the interaction between the progression of chords and melody emulate works of famous jazz artists.

Although it is undeniably jazz improvisation, I felt that it lacked variation in both rhythm, range, and complexity. As a classically trained music performance major, I do not know everything there is to know about the genre of jazz, but when I listen to improvisation, it is not typically just straight triplets and quarter notes. In live improvisation, there is customarily some aspect of “extended techniques” (an unconventional method of playing an instrument such as glissando or pizzicato on a string instrument) utilized in the performance. That said, this is one of the reasons why performers, composers, and artists can never be replaced by solely technology as it lacks the innate creativity and range of emotions humans possess.

The description of the video gives a brief explanation of the code and how it operates. The author of the program set pre-defined chord changes to occur which is the basis of jazz music. I also suppose that the author preset most of the rhythms as there is not much variety. I believe the algorithm provided a set number of notes to choose from depending on each chord. The computer most likely randomly selected notes to play on the preset rhythm in some order. Overall, it is amazing to see what kind of art can be partially generated by artificial intelligence, although I do not believe it will ever be enough to completely replace an artist’s craft.

Project-02-Variable-Face-The Dango

sijings-02
My intention for this project is to create a narrative story around the given instructions. When I first started the project, I want to do something with the shape of the face, such as dividing the face from the middle and have a new face coming out of it. My changing variables here are the blush’s color, the eyes’ movements, the mouth’s size, face’s movement and size at the last two clicks. When I nearly finished the project, I wanted to create a completely different image from what I had. I wanted to scale the face and complete my narration (which is, the emotions of a “dango”(a Japanese riceball snack) when it is being pierced through by a stick). To achieve this, I used several variables to control my clicks, for example, I used “var deter” in my coding work. Therefore, a new image will appear when I click my mouse.

//clair(sijing) sun
//session C
//sijings@andrew.cmu.edu
//Project-02-Variable-Face

var eyeSize1 = 10;
var eyeSize2 = 15;
var faceWidth = 350;
var faceHeight = 300;
var blushW=30;
var eyeLX = 640 / 2 - 122.5;//note, do not use width here
var eyeRX = 640 / 2 + 157.5;
var dir=1;//for chaning direction
var deter=1; //to determine when to call out different part of drawings
var deter2=1;
var deter3=1;
var deter4=1;
var color1=109; //for color randomnization
var color2=109;
var color3=109;
var mouthopen=2;
var hairlength=50;
var mouthlength=130;



function setup() {
    createCanvas(640, 480);
}


function draw() {
    //First Face
    background(246,246,246);//called again later
    fill(246,246,246);
    ellipse(width / 2, height / 2, faceWidth,  faceHeight);
    fill(39,40,34);
    ellipse(eyeLX, height / 2+20, eyeSize1, eyeSize2);//all used variables here for later randomnization
    ellipse(eyeRX, height / 2+35, eyeSize2, eyeSize1);
    ellipse(eyeLX, height / 2+22, eyeSize1-5, eyeSize2);
    ellipse(eyeRX, height / 2+37, eyeSize2-5, eyeSize1);
    fill(246,246,246);
    noFill();
    arc(width/2, height/2+20, 60, 60, 90, 180);
    
    //Left eyebrow
    arc(width/2-135, height/2-25, 120, 20, 0, 90);
    
    //right eyebrow
    noFill();
    line(width-210,height/2+10,width-170,height/2+25);
    stroke(126);
    line(width-205,height/2+11,width-170,height/2+26);
    stroke(126);
    line(width-190,height/2+20,width-170,height/2+28);
    line(width-183,height/2+24,width-170,height/2+30);
    stroke(255);
    
    //Left Check
    stroke(109,109,109,150);
    fill(color1,color2,color3,150);
    ellipse(width/2-120, height/2+40, blushW+20, blushW);
    noFill();
    ellipse(width/2-119, height/2+39, blushW+21, blushW-1);//to create strokes effect
    ellipse(width/2-122, height/2+38, blushW+23, blushW-1);
    stroke(43,43,43,100);
    ellipse(width/2-120, height/2+38, blushW+23, blushW+2);
    
    //Right Check
    stroke(109,109,109,150);
    fill(color1,color2,color3,150);
    ellipse(width/2+130, height/2+60, blushW+25, blushW+17);
    noFill();
    ellipse(width/2+132, height/2+61, blushW+25, blushW+16);
    ellipse(width/2+131, height/2+59, blushW+24, blushW+17);
    stroke(43,43,43,100);
    ellipse(width/2+132, height/2+61, blushW+30, blushW+17);
    stroke(43,43,43);

    //moving eyes
    if (deter==2) {//for making them shaking(later realized that random can do the same work)
        eyeLX += dir * 1;
        eyeRX += dir * 1;
        if (eyeLX > 199.2 || eyeLX < 195.2 ) {
            dir = -dir;
        }
    }

    //mouth
    fill(196,208,67);
    ellipse(width/2+30,height/2+100,mouthlength,mouthopen);

    
    //Third Condition
    if (deter3>2&deter3<6){
        strokeWeight(7);
        line(width/2+40,0,width/2,height/2-60);
        line(width/2-38,width/2+70,259,height);
        strokeWeight(3);
        stroke(167,167,167);
        line(width/2+44,0,width/2+3,height/2-60);
        line(width/2-35,width/2+69,264.5,height);
        noFill();
        angleMode(DEGREES);
        arc(width/2, height/2-60, 20, 20, 60, 120);
        stroke(0,0,0);
        strokeWeight(1);
    }    

    //Fourth Condition
    if (deter4>3){
        background(246,246,246);
        ellipse(width/2+40,100,70,70);
        ellipse(width/2,200,70,70);
        ellipse(width/2-40,300,70,70);
        fill(0,0,0);
        ellipse(width/2-60,310,5,10);
        ellipse(width/2-32,317,5,10);
        stroke(0,0,0);
        strokeWeight(3);
        line(width/2+80,0,width/2+50,80);
        line(width/2+30,132.8,width/2+7,187);
        line(width/2-10,233,width/2-38,294);
        line(width/2-53,332,width/2-75,380);
        noFill();
        arc(width/2+50, 70, 20, 20, 60, 120);
        arc(width/2+5, 179, 20, 20, 60, 120);
        arc(width/2-37, 287, 20, 20, 60, 120);



    }
}
    

function mousePressed() {
    deter=2;
    deter2+=1;//for calculating how many times should the face change
    deter3+=1;
    deter4+=0.5;
    color1=random(180,250);
    color2=random(10,86);
    color3=random(70,103);
    mouthopen=random(5,30);
    mouthlength=random(1,140);
    faceWidth = random(350,500);

}
    

jknip-Project-02-variable-face

sketch.js

/*Jessica Nip
Section A
jknip@andrew.cmu.edu
Project-02 */

var eyeSize = 20;
var cheekSize = 20;
var faceWidth = 120;
var faceHeight = 150;
var et = 15;
var value = 150;
var faceR = 179;
var faceG = 229;
var faceB = 178;
var cheekR = 235;
var cheekG = 189;
var cheekB = 176;

function setup() {
    createCanvas(640, 480);
}
 
function draw() {
	background(value);
    var b = color(179,229,178);
	fill(256);
    noStroke();
    ellipse(width / 2, height / 2, faceWidth,  faceHeight);
    fill(faceR, faceG, faceB);
    ellipse(width / 2+3, height / 2+3, faceWidth,  faceHeight);
    fill(b);
    ellipse(360,119,et,et*1.1);
    var eyeLX = width / 2 - faceWidth * 0.25;
    var eyeRX = width / 2 + faceWidth * 0.25;
    var c = color(0);
    fill(c);
    ellipse(eyeLX, height / 2.1, eyeSize, eyeSize*2);
    ellipse(eyeRX, height / 2.1, eyeSize, eyeSize*2);
    fill(cheekR,cheekG,cheekB);
    ellipse(eyeLX, height / 1.85, cheekSize/2, cheekSize/3); //cheeks
    ellipse(eyeRX, height / 1.85, cheekSize/2, cheekSize/3);
    var green = color(1,146,79);
    noFill();
    stroke(b);
	beginShape();
	curveVertex(374,191);
	curveVertex(358,119);
	curveVertex(311,117);
	curveVertex(322,200);
	curveVertex(322,200);
	endShape();
	fill(green);
	noStroke();
	ellipse(315, height/1.85, eyeSize/5, eyeSize/5); //nostrils
    ellipse(325, height/1.85, eyeSize/5, eyeSize/5);
}

function mouseMoved() {
	value = value +5;
	if (value>255) {
		value = 0;
	}
}
 
function mousePressed() {
    faceWidth = random(80, 150);
    faceHeight = random(80, 150);
    et =random(5,40);
    eyeSize = random(10, 25);
    cheekSize = random(15,30);
    faceR = random(180,250);
    faceG = random(150,250);
    faceB = random(130,200);
    cheekR = random(120,150);
    cheekG = random(100,120);
    cheekB = random(100,130);

}

I wanted to create an interactive alien face that utilizes different pops of pastel for its face and cheek. I found that when setting different scales for the ellipses, they easily formed interesting facial compositions.

ICD/ITKE Research Pavillion 2015/2016

Built Pavilion Street View

The institute of Computational Design (ICD) and the institute of Building Structures and Structural Design (ITKE) make Biomimetic Investigation into Shell Structures every year.

It is a holistic process in which the design is based on nature patterns, and the fabrication is made with Robotics arms.

The pavilion is the first of its kind to employ industrial sewing of wood elements on an architectural scale. It is part of a successful series of research pavilions which showcase the potential of computational design, simulation and fabrication processes in architecture.

Based on both the biological principles as well as the material characteristics, the material system was developed as a double-layered structure similar to the secondary growth in sand dollars. The building elements consist of extremely thin wood strips. Instrumentalising the anisotropy of wood, these strips are custom-laminated so that the grain direction and thickness corresponds with the differentiated stiffness required to form parts with varying radii.

Aerial View
A computational tool calculates the necessary plywood veneer layout in order to elastically bend a strip into its desired curvature

 

 

 

 

 

 

 

This project explores robotic sewing to not only join the individually bent plywood strips that form a segment, but also to prevent potential delamination. An industrial robot is employed for both assisting during the assembly and bending of the strips that make up one elements, and then locking the pre-assembled segment in shape by sewing them with a stationary industrial sewing machine. During fabrication the robot first moves the segment through the sewing machine so that the strips are connected.

The computational design tool incorporates all biological principles while following architectural and structural constrains.

This type of project falls into the pure research and innovative morphogenetic design based architecture in which the generation of the geometry follows an Agent Based System in which some growing rules are applied.

 

rsp1-Section B – Looking Outwards-02

Image of an interaction of a person with the leaves of the plant, and the light behind it glowing softly in response to the touch.

 

 

Two people interacting with the Lumifolia artwork.

http://www.digitalarti.com/productions/lumifolia-interactive-garden/

What drew me to this project was the fact that it integrate nature with technology. I was intrigued with the beginning title of “interactive garden”, because it was something that I have not heard of until now. My initial thoughts were that an interactive garden just required people to just be in the space, maybe even walk through it, and experience the greenery that is essentially just static. However, with further research, I found that the trees themselves are actually interactive.

Created by duo Scenocosme for the Parisian Airports Company, this interactive garden “questions sensitivity, artistic, and musical relationships with the plants and the environment” according to its official website. The subtle electrostatic induction from the human body activates a soft light that illuminates the plant itself while its leaves are being caressed. The closer the proximity of the touch, the brighter the lights become.

Below is a video visually documenting the process of this artwork.

I found it a refreshing find because it was an idea that was very unique and unusual. I believe that this artwork can be developed even further and be used for a greater purpose such as public installation that would help to improve life in and around dark and uninteresting occupied spaces.

ctv-Looking_Outwards-02

The typography work (and every piece) by Q Shim is a visual orchestration of parts, wholes, shapes, and textures. He is a professor in the School of Design at CMU, and previously studied around the world. This video, in particular, fascinates me because much of his work brings digital concepts into the physical (non-digital world). He sets parameters, rules, and variables to create his pieces. He then curates those variables to create visually engaging pieces of art and design. Although a lot of his generative art is controlled by computer, in one piece, he creates stamps by hand, then places those stamps along a grid and follows an algorithmic process.

hyt-Looking-Outward-02: Deep Learning Drawing Machine

Shantell Martin and Sarah Schwettmann working on the “Mind the Machine” prototype. 2017
Template products of the “Mind the Machine”

For most people in the world, creative processes and ideas usually are associated with words such as “unique,” “special,” or  “innovative.” However, recently I have discovered a British artist who crafted something that might be contrary to people’s conventional connotations.

Shantell Martin, recently residing in New York, collaborated with computational cognitive neuroscientist Sarah Schwettmann to create a systematic “drawing machine” trained by deep neural leaning. What’s interesting about this algorithm-based drawing is that it completes its learning through Shantell Martin’s own three-hundred drawings, then extract common, recurring elements and tempts to rearrange the patterns for new creations. According to the artist herself, as she is more a improvised, “stream of conscious” kind of artist, this deep learning tool has enabled her to understand her “system of thought” and artistic style more.

Personally, I find the experimental art project intriguing since it’s almost like a prototype machine for the future world –dissembling the artists’ elements of style and ideologies and streamline-producing seemingly hand-drawn artworks to the audience. I think this project worth pondering and reflecting for all of us as we step into the creative industry in later days of our lives, to think about how we can utilize machines to a greater use and at the mean time maintain our own uniqueness and integrity.

ghou-project-02-VariableFace

I really liked the googly-eyes, I feel like it added a little more dynamic to this drawing. There definitely could be more characteristics varied but I think the image should stay somewhat recognizable.

sketch

//Grace Wanying Hou
//15-104 Section D
//ghou@andrew.cmu.edu
//Assignment 02

var faceWidth = 200;
var faceHeight = 250;
var earsize = 100;
var eyesize = 20
var mouthsize = 50;

var faceround = 10;
var earround = 20;

//each of these features have 3 types that will get chosen when clicked 
var facet = 1;
var eart = 1;
var types =[1,2,3];
//colours
var facer = 255;
var faceg = 220;
var faceb = 200;
var eyer = 255;
var eyeg = 255;
var eyeb = 255;

// setting the canvas and changing rectangle mode to center
function setup() {
    createCanvas(480,640);
    rectMode(CENTER);
}


function draw() {
    //background will always be in a darker shade than the face
    background(facer-150, faceg-150, faceb-150);
    fill (facer, faceg, faceb);
    
    stroke(facer+25,faceg+25,faceb+25);
    strokeWeight(20);
    
    
    //types of ears
    if(eart == 1){
        ellipse(width/2 - faceWidth/2, height/2 - faceHeight/4, earsize*4/5, earsize);
        ellipse(width/2 + faceWidth/2, height/2 - faceHeight/4, earsize*4/5, earsize);
    }
    if(eart == 2){
        rect(width/2 - faceWidth/2, height/2 - faceHeight/4, earsize/2, earsize, earround);
        rect(width/2 + faceWidth/2, height/2 - faceHeight/4, earsize/2, earsize, earround);
    }
    if(eart == 3){
        triangle(width/2 - faceWidth/4, height/2 - faceHeight/5, width/2, height/2 - faceHeight/3, width/2 - faceWidth/3, height/2 - faceHeight/2 - earsize/2);
        triangle(width/2 + faceWidth/4, height/2 - faceHeight/5, width/2, height/2 - faceHeight/3, width/2 + faceWidth/3, height/2 - faceHeight/2 - earsize/2);
    }
    
    
    //tyes of faces
    strokeWeight(6);
    if(facet == 1){
        ellipse(width/2, height/2, faceWidth, faceHeight);
    }
    if(facet == 2){
        rect(width/2, height/2, faceWidth, faceHeight, faceround);
    }
    if(facet == 3){
        triangle(width/2 - faceWidth/2, height/2 - faceHeight/2,
		 width/2 + faceWidth/2, height/2 - faceHeight/2,
		 width/2, height/2 + faceHeight/2);
    }
    
    
    //eyes
    noStroke();
    
    //the white? part of the eye???
    fill(facer + 100, faceb + 100, faceg + 100)
    ellipse(width/2 - width/16, height/2 - height/40, eyesize*2, eyesize*2);
    ellipse(width/2 + width/16, height/2 - height/40, eyesize*2, eyesize*2);
    
    //eyeballs??
    fill(0);
    noStroke();
    var eyeballrX = constrain(mouseX, width/2 - width/16 - eyesize/3, width/2 - width/16 + eyesize/3);
    var eyeballlX = constrain(mouseX, width/2 + width/16 - eyesize/3, width/2 + width/16 + eyesize/3);
    var eyebally = constrain(mouseY, height/2 - height/40 - eyesize/3, height/2 - height/40 + eyesize/3);
    
    ellipse(eyeballrX, eyebally, eyesize, eyesize);
    ellipse(eyeballlX, eyebally, eyesize, eyesize);
    
    //mouth
    fill(facer-100, faceg-150, faceb-150);
    stroke(facer-25,faceg-25,faceb-25);
    ellipse(width/2, height/2 + faceHeight/4, faceWidth/500*mouthsize);
    
    }
 
function mousePressed() {
    faceWidth = random(150,300);
    faceHeight = random(100,350);
    facet = random(types);
    
    earsize = random(80,150);
    mouthsize = random(0,100);
    
    faceround = random(10,20);
    earround = random(5,20);

    eart = random(types);
    facer = random (100,255);
    faceg = random (100,255);
    faceb = random (100,255);
}

manuelr – project2 – face

sketch

//Manuel Rodriguez
//Section B, 10:30am
//manuelr@andrew.cmu.edu
//project-02


var fatFace = 1;
var lankyFace = 1;
var reyeLength = 10;
var leyeLength = 20;
var openM = 40;
var narrowM = 3;
var posX = 1;
var posY = 1;
var c1=230;
var c2 = 100;
var c3 = 200;

function setup() {
    createCanvas(640, 480);
    background(250);
    
}

function draw() {

    //face shadow
    fill(c1,c2,c3);
    noStroke();
    //strokeWeight(2);
    beginShape();
    curveVertex(125,125*lankyFace);
    curveVertex(123,123);
    curveVertex(80*fatFace,height/2+10);
    curveVertex(90,height-110);
    curveVertex(150,height-140);
    curveVertex(190*fatFace,height/2+10);
    curveVertex(120,120);
    curveVertex(125,125);
    endShape();

    //shape face
    noFill();
    stroke(0);
    strokeWeight(1);
    beginShape();
    curveVertex(120,120*lankyFace);
    curveVertex(120,120*lankyFace);
    curveVertex(110*fatFace,height/2);
    curveVertex(130,height-100);
    curveVertex(140,height-150);
    curveVertex(155*fatFace,height/2);
    curveVertex(120,120);
    curveVertex(120,120*lankyFace);
    endShape();

    //shape face 2
    noFill();
    stroke(100);
    strokeWeight(1);
    beginShape();
    curveVertex(125,125*lankyFace);
    curveVertex(123,123);
    curveVertex(105*fatFace,height/2+10);
    curveVertex(135,height-110);
    curveVertex(138,height-140);
    curveVertex(155*fatFace,height/2+10);
    curveVertex(125,125*lankyFace);
    curveVertex(125,125);
    endShape

    //stroke3
    noFill();
    stroke(220);
    strokeWeight(3);
    beginShape();
    curveVertex(100,100);
    curveVertex(130,130);
    curveVertex(105,height/2+40);
    curveVertex(165,height-100);
    curveVertex(178,height-120);
    curveVertex(155,height/2+9);
    curveVertex(140,125);
    curveVertex(125,115);
    endShape();


    //eyes
    noFill();
    //lefteye
    stroke(0);
    strokeWeight(1);
    ellipse(120*posX,height/2*posY,5,leyeLength);

    //rightteye
    stroke(0);
    strokeWeight(1);
    ellipse(135*posX,height/2*posY,5,reyeLength);

    //eyebags
    stroke(0);
    strokeWeight(1);
    line(110*posX,((height/2)+20)*posY, 115*posX, ((height/2)+20)*posY);
    line(135*posX,((height/2)+10)*posY, 145*posX, ((height/2)+10)*posY);


    //mouth
    stroke(0);
    strokeWeight(1);
    ellipse(127*posX,height/2*posY+70,narrowM,openM);
}

function mousePressed(){
    fatFace = random(-1.2,1.5);
    lankyFace = random(-1.2,1.8);
    c1=random(100,250);
    reyeLength = random(0,100);
    leyeLength = random(0,60);
    openM = random(0,40);
    narrowM = random(0,20);
    posX = random(1.0,1.01);
    posY = random(1.0,1.01);
    c2 = random(100,200);
    c3 = random(100,200);
    clear();
 

}

I wanted to create a different type of face, some sort of simple – abstract art that reminds of a face but don’t respond to any proportions nor reality. Just departing from “hand-drawing” style, I started drawing different line shapes and then added the colour independent from the outlines. Each outline has its own independency and they do not relate to other face features such as eyes, mouth or eye-bags.