Project 01

Here is me! 🙂

sketch
//Tracy Meng
//Section B

function setup() {
    createCanvas(600, 600);
    background(220);
    text("p5.js vers 0.9.0 test.", 10, 15);
}

function draw() {
    //BACKGROUND
    background(225,246,255);        // light blue sky

    //CLOUDS
    noStroke();
    fill(255);                      // cloud color (white)
    circle(200,90,70);              // cloud 1
    circle(150,70,100);
    circle(100,90,80);
    circle(50,90,60);

    circle(340,180,80);             // cloud 2
    circle(400,160,120);
    circle(450,180,100);
    circle(500,180,90);
    circle(550,180,50);

    //HILLS
    fill(186,245,190);              // light green
    circle(150,550,300);            // hill 1
    circle(0,520,100);              // hill 2
    circle(450,520,200);            // hill 3
    circle(550,570,150);            // hill 4

    //TREES
    fill(104,193,110);              // dark green
    ellipse(50,500,70,300);         // tree 1
    ellipse(145,400,90,height);      // tree 2
    ellipse(480,500,70,500);        // tree 3

    //SHRUBS
    fill(77,235,87);                // light green 2
    ellipse(85,550,60,200);         // shrub 1
    ellipse(530,550,70,360);        // shrub 2

    //BACK OF HAIR
    fill(102,58,14);                // hair color (dark brown)
    rect(185,308,230,height);       

    //HAIR HIGHLIGHTS
    stroke(166,111,0);              // light brown
    strokeWeight(3);                // highlight thickness
    line(200,308,200,height);  
    line(240,308,240,height);
    line(225,308,225,432); 
    line(380,400,380,height);
    line(400,308,400,height);   

    //HEAD SHAPE
    noStroke();
    fill(255,220,177);              // skin color (nude)
    ellipse(width/2,height/2,220,250); // head shape & location

    //EARS
    fill(255,220,177);              // skin color (nude)
    ellipse(190,308,30,50);         // left ear
    ellipse(410,308,30,50);         // right ear

    //BODY
    //SHIRT
    fill(243,18,153);               // shirt color (hot pink)
    ellipse(width/2,490,250,100);   // shoulders
    quad(175,485,125,height,475,height,425,485); // rest of tshirt

    //SHIRT COLLAR
    noFill();                       
    stroke(255);                    // collar color (white)
    strokeWeight(10);
    arc(width/2,450,80,80,0,PI);

    //NECK
    noStroke();
    fill(255,220,177);              // skin color (nude)

    rect(260,410,80,35);  
    ellipse(width/2,450,80,80);     // neckline    

    //EAR HOLES
    noFill();
    strokeWeight(2);
    stroke(230,145,20);             // brown ear stroke
    arc(190,308,10,30,PI/2,PI/2+PI); // left hole
    arc(410,308,10,30,-PI/2,PI/2);   // right hole

    //CHIN DEFINITION
    arc(width/2,422,20,10,0,PI);

    //EARRINGS
    //LEFT TRIANGLE EARRING 
    strokeWeight(2);
    stroke(255,157,58);             // orange outline
    fill(255,239,0);                // gold 
    triangle(180,333,200,333,190,350);

    //RIGHT TRIANGLE EARRING
    triangle(400,333,420,333,410,350);

    //LEFT EARRING DANGLES 1
    strokeWeight(4);                // thicker orange outline
    fill(185,63,255);               // purple
    quad(190,350,170,365,190,385,210,365); 

    //RIGHT EARRING DANGLES 1
    quad(410,350,390,365,410,385,430,365); 

    //LEFT EARRING DANGLE 2
    noFill();
    stroke(0,233,194);              // teal dangle outline
    quad(190,385,180,395,190,410,200,395); 

    //RIGHT EARRING DANGLE 2
    quad(410,385,400,395,410,410,420,395); 

    //SUNGLASSES
    //FRAME + LENSES
    stroke(250,145,164);            // rim color (pink)
    strokeWeight(8);                // rim thickness
    fill(28,28,28);                 // lenses color (dark grey)
    rect(220,260,65,65,10);         // rectangle lense 1 (left)
    rect(315,260,65,65,10);         // rectangle lense 2 (right)

    line(285,295,315,295);          // connect rims
    line(220,295,195,295);          // left band
    line(380,295,405,295);          // right band

    //PEARLS
    strokeWeight(4);                // thickness of point
    stroke(255);                    // pearl color (white)
    point(230,260);                 // top left rim
    point(240,260);
    point(250,260);
    point(260,260);
    point(270,260);

    point(230,325);                 // bottom - left rim
    point(240,325);
    point(250,325);
    point(260,325);
    point(270,325);

    point(220,275);                 // left - left rim
    point(220,285);
    point(220,295);
    point(220,305);
    point(220,315);

    point(285,275);                 // right - left rim
    point(285,285);
    point(285,295);
    point(285,305);
    point(285,315);

    point(330,260);                 // top - right rim
    point(340,260);
    point(350,260);
    point(360,260);
    point(370,260);

    point(330,325);                 // bottom - right rim
    point(340,325);
    point(350,325);
    point(360,325);
    point(370,325);

    point(315,275);                 // left - right rim
    point(315,285);
    point(315,295);
    point(315,305);
    point(315,315);

    point(380,275);                 // right - right rim
    point(380,285);
    point(380,295);
    point(380,305);
    point(380,315);

    //GLARE LINES
    stroke(238,238,255);            // glare color (grey - white)
    strokeWeight(3);                // glare thickness
    line(242,304,264,282);          // glare left
    line(337,304,359,282);          // glare right

    //NOSE
    noFill();
    stroke(230,145,20);             // brown nose stroke
    strokeWeight(2);                // nose stroke weight
 
    arc(290,350,20,20,PI/2,PI/2+PI) // arc left: PI = Half of a circle
    arc(310,350,20,20,-PI/2,PI/2);  // arc right: PI = Half of a circle

    line(290,340,290,322);          // nose line left
    line(310,340,310,322);          // nose line right

    //NOSTRILS
    noStroke();
    fill(222,171,95);               // light brown
    ellipse(292,353,10,5);          // left nostril
    ellipse(308,353,10,5);          // right nostril

    //LIPS
    //BOTTOM LIP
    stroke(255,122,162);            // lip liner color
    fill(255,132,168);              // lip color (light red)

    ellipse(width/2,390,25,15);

    //TOP LIP
    noStroke();
    fill(255,78,132);               // lip color (deep red)


    ellipse(292,385,27,13);         // left side
    ellipse(308,385,27,13);         // right side

    //MAKEUP HIGHLIGHT
    //LIP SPARKLE
    stroke(255,238,210);            // sparkle color
    strokeWeight(5);                // sparkle thickness
    point(width/2,376);             // top sparkle
    point(width/2,402);             // bottom sparkle

    //NOSE SPARKLE
    line(width/2,340,width/2,322);

    //ROSY CHEEKS
    noStroke();
    fill(255,200,228);              // rose
    ellipse(245,340,60,20);         // blush left
    ellipse(355,340,60,20);         // blush right
      
    //HAIR BANGS
    stroke(166,111,0);              // light brown stroke (match highlight)
    strokeWeight(3);
    fill(102,58,14);                // bangs color (dark brown)  
    point(220,220);                 // left
    point(380,220);                 // right

    bezier(300,175,120,180,250,300,150,430); // left bangs
    bezier(300,175,480,180,350,300,450,430); // right bangs   

    //HIGHLIGHT BANGS
    //LEFT
    bezier(280,195,150,200,260,320,170,400);

    //RIGHT
    bezier(320,195,450,200,340,320,430,400);


 

}

LO: Nonsense Library

Nonsense Library – Allison Parrish (2021)

https://artsexperiments.withgoogle.com/nonsense-laboratory/

One of the most admirable things about Nonsense Library, is the way that real knowledge is game-ified, and programming, video games, and knowledge about linguistics/speech interact. It serves both as a learning tool and an experiment, and hence the ways in which one could interact with the program varies greatly. The game aspect makes the site endlessly engaging, and the way in which the program messes with pronunciation quite literally forces the viewer to speak aloud and have a conversation with the computer. I would guess that in order to achieve this, Parrish built an extensive algorithm linking phonetic & pronounced sounds. I would also guess that she, too, spent a lot of time feeling the words in her mouth in front of a computer. Because of the truly absurd speech one can receive simply by inputting a couple adjustments (“Hew hew heish weelhy heelhyy weehly heegy hsewhy heelych…”) I would guess that Parrish has a good sense of humor, and embraces the absurd in her work. 

Nonsense Library phrase pre-modification. “How doth the little crocodile improve his shining tail”
Nonsense Library phrase post-modification. “Haah taahth thae layhai chawahaja aypharh haycha hcheyehaj tahlah…”

Project 2: Generative Faces

Some faces, generated!

sketch

var eyeType = 3
var faceWidth = 200
var faceHeight = 275
var eyeSize = 60
var earSize = 60
var pupilSize = 40
var noseType = 1
var mouthType = 1
var blush = 1
var r = 89
var g = 74
var b = 58 //color 1, 2, & 3 used to be able to randomize the color of hair

function setup() {
    createCanvas(640, 480);
}
 
function draw() {
    background(252, 215, 91);
    strokeWeight(0);

    fill(r, g, b); //random hair color
    ellipse(width/2, (height/2)-((faceHeight-faceWidth)/2), faceWidth+20, faceWidth+20); //hair
    rect((width/2)-(faceWidth/2), height/2, faceWidth, faceHeight*(2/3)); //hair

    fill(194, 160, 97); //face/head
    ellipse(width/2, height/2, faceWidth, faceHeight); //chin
    ellipse(width/2, (height/2)-((faceHeight-faceWidth)/2), faceWidth, faceWidth); //to round out the top of the head better, less oval-y
    ellipse((width/2)-(faceWidth/2), height/2, earSize*(3/4), earSize); //left ear, size randomly generated
    ellipse((width/2)+(faceWidth/2), height/2, earSize*(3/4), earSize); //right ear, size ranomly generated

    fill(r, g, b); //random hair color for eyebrow
    ellipse((width/2)+(faceWidth/4), height/2-50, 40, 20);
    ellipse((width/2)-(faceWidth/4), height/2-50, 40, 20);

    if(blush <= 1) { //section to create blush possibility
    	fill(176, 121, 76, 255)
    } else {
    	fill(176, 121, 76, 0)
    }
    ellipse((width/2)-(faceWidth/4), (height/2)+40, 40, 20);
    ellipse((width/2)+(faceWidth/4), (height/2)+40, 40, 20);

    if(mouthType <= 1) { //section to create mouth type 1 (open)
        fill(77, 41, 34, 255)
    } else {
    	fill(77, 41, 34, 0)
    }
    ellipse(width/2, (height/2)+(faceHeight/3), 60, 30);
    if(mouthType <= 1) {
        fill(252, 251, 247, 255)
    } else {
    	fill(252, 251, 247, 0)
    }   
    ellipse(width/2, (height/2)+(faceHeight/3)-10, 40, 10);

    if(mouthType > 1 & mouthType < 2) { //section to create mouth type 2 (sad mouth)
    	fill(77, 41, 34, 255)
    } else {
    	fill(77, 41, 34, 0)
    }
    ellipse((width/2), (height/2)+(faceHeight/3)+7, 60, 40); //skin to carve out shape
     if(mouthType > 1 & mouthType < 2) { 
    	fill(194, 160, 97, 255)
    } else {
    	fill(194, 160, 97, 0)
    }
    ellipse(width/2, (height/2)+(faceHeight/3), 60, 40);

    if(mouthType >= 2) { //section to create mouth type 3 (happy mouth)
    	fill(77, 41, 34, 255)
    } else {
    	fill(77, 41, 34, 0)
    }
    ellipse((width/2), (height/2)+(faceHeight/3)-20, 60, 40); //skin to carve out shape
     if(mouthType >= 2) { 
    	fill(194, 160, 97, 255)
    } else {
    	fill(194, 160, 97, 0)
    }
    ellipse(width/2, (height/2)+(faceHeight/3)-27, 60, 40);

    if(eyeType <= 1) { //section to create eye type 1 (open regular)
        fill(242, 246, 247, 255)
    } else {
    	fill(242, 246, 247, 0)
    }
    ellipse((width/2)-(faceWidth/4), height/2, eyeSize, eyeSize);
    ellipse((width/2)+(faceWidth/4), height/2, eyeSize, eyeSize);
    if(eyeType <= 1) {
        fill(0, 0, 0, 255)
    } else {
    	fill(0, 0, 0, 0)
    }   
    ellipse((width/2)-(faceWidth/4)+1, height/2, pupilSize, pupilSize);
    ellipse((width/2)+(faceWidth/4)-1, height/2, pupilSize, pupilSize);

    if(eyeType > 1 & eyeType < 2) { //section to create eye type 2 (happy eye)
    	fill(77, 41, 34, 255)
    } else {
    	fill(252, 251, 247, 0)
    }
    ellipse((width/2)-(faceWidth/4), height/2, 60, 40);
    ellipse((width/2)+(faceWidth/4), height/2, 60, 40);
     if(eyeType > 1 & eyeType < 2) { 
    	fill(194, 160, 97, 255)
    } else {
    	fill(194, 160, 97, 0)
    }
    ellipse((width/2)-(faceWidth/4), (height/2)+7, 60, 40);
    ellipse((width/2)+(faceWidth/4), (height/2)+7, 60, 40);

    if(eyeType >= 2) { //section to create eye type 3 (sad eye)
    	fill(77, 41, 34, 255)
    } else {
    	fill(77, 41, 34, 0)
    }
    ellipse((width/2)-(faceWidth/4), height/2, 60, 40);
    ellipse((width/2)+(faceWidth/4), height/2, 60, 40);
    if(eyeType >= 2) { 
    	fill(194, 160, 97, 255)
    } else {
    	fill(194, 160, 97, 0)
    }
    ellipse((width/2)-(faceWidth/4), (height/2)-7, 60, 40);
    ellipse((width/2)+(faceWidth/4), (height/2)-7, 60, 40);

    if(noseType <= 1) { //section to create round nose type
    	fill(176, 121, 76, 255)
    } else {
    	fill(176, 121, 76, 0)
    }
    ellipse(width/2, (height/2)+20, 20, 60);

    if(noseType > 1) { //section to create triangle nose type
    	fill(176, 121, 76, 255)
    } else {
    	fill(176, 121, 76, 0)
    }
    triangle(width/2, (height/2), (width/2)-10, (height/2)+50, (width/2)+10, (height/2)+50);

}
 
function mousePressed() {
    r = random(0, 255);
    g = random(0, 255);
    b = random(0, 255);
    eyeType = random(0, 3); //eye type will be randomized, 1-3, and said # will correlate to an if else tree w eye options
    faceWidth = random(150, 225);
    faceHeight = random(226, 300);
    earSize = random(60, 80);
    pupilSize = random(30, 40);
    eyeSize = random(50, 70);
    noseType = random(0, 2); //nose type randomized based on two types
    mouthType = random(0,3);
    blush = random(0, 2); //whether or not blushing
}

Project 1: My Self Portrait

function setup() {
    createCanvas(400, 400);
    background(220);
    text("p5.js vers 0.9.0 test.", 10, 15);
}

function draw() {
    ears ();
    drawFace();
    noFill();
    drawMouth();
    drawTeeth();
    drawLip();
    eyeBallOne();
    eyeBallTwo();
}

function drawMouth() {
    strokeWeight(4);
    fill(255,0,0,255);
    curve(105, 250, 105, 200, 295, 200, 295, 250);
    curve(105, -400, 105, 200, 295, 200, 295, -400);
}

function drawLip() {
    strokeWeight(4);
    stroke(0);
    noFill();
    curve(105, 250, 105, 200, 295, 200, 295, 250);
    curve(105, -400, 105, 200, 295, 200, 295, -400);
}

function drawTeeth() {
    strokeWeight(3);
    stroke(255);
    line(105, 200, 135, 248);
    line(295, 200, 265, 248);
    line(135, 248, 165, 195);
    line(265, 248, 235, 195);
    line (165, 195, 200, 275);
    line (235, 195, 200, 275);
}

function drawFace() {
    strokeWeight(5);
    let xValue = mouseX/width*255;
    let yValue = mouseY/width*255;
    let zValue = (xValue+yValue)/4;
    fill(xValue,yValue,zValue+120);
    bezier(50, 225, 50, 400, 350, 400, 350, 225);
    bezier(50, 225, 50, -50, 350, -50, 350, 225);
}

function eyeBallOne() {
    strokeWeight(4);
    fill(255,255,255);
    ellipse (150,150,50);
    let angle = atan2(mouseY - 150, mouseX - 150); // calculate arctangent //
    let x = 150 + 20*0.75*cos(angle);
    let y = 150 + 20*0.75*sin(angle);
    fill(255,0,255);
    circle (x,y,15);
}

function eyeBallTwo() {
    strokeWeight(4);
    fill(255,255,255);
    ellipse (250,150,50);
    let angle = atan2(mouseY - 150, mouseX - 250); // calculate arctangent //
    let x = 250 + 20*0.75*cos(angle);
    let y = 150 + 20*0.75*sin(angle);
    fill(150,150,0);
    circle (x,y,15);
}

function ears() {
    strokeWeight(5);
    let xValue = mouseX/width*255;
    let yValue = mouseY/width*255;
    let zValue = (xValue+yValue)/4;
    fill(xValue,yValue,zValue+120,100);
    ellipse (350,150,50.100);
    ellipse (50,150,50.100);
}

LO: My Inspiration

The technological art/game that I admire the most is the pokemon series, especially the first pokemon game ever – Pokemon red and blue. The first reason that I admire it the most is that it is first of its kind, a capture and collect JRPG game, and the second reason is that the developer secretly hid one easter egg inside the game which made the game super popular. The game itself is created and directed by Satoshi Tajiri using the C++ language on the gameboy platform, and according to the director, Tajiri himself, the game was influenced by another JRPG game called The Final Fantasy Legend. Because of the unexpected popularity that the game received due to its unique gameplay, art style, and merchandise, the team is able to create dozens of its squeals even till today.

Project-01

Undertale Leo

sketch
function setup() {
    createCanvas(250, 350);
    background(242, 112, 155); //pink
}

function draw() {
    fill(241, 194, 126) //skin in the backdrop
    rect(60, 80, 140, 90)
    fill(0); //hair and eyes
    rect(80, 20, 90, 40); //main black rect
    rect(60, 30, 20, 40);
    square(160, 60, 10);
    rect(170, 30, 20, 50);
    rect(190, 40, 10, 50);
    rect(180, 80, 10, 20);
    rect(200, 50, 10, 140);
    rect(210, 80, 10, 110);
    rect(60, 70, 10, 40);
    rect(50, 50, 10, 140);
    rect(40, 70, 10, 100);
    rect(60, 130, 10, 50);
    rect(70, 140, 10, 50);
    rect(80, 150, 10, 30);
    rect(90, 150, 10, 20);
    rect(100, 150, 10, 20);
    rect(100, 170, 50, 10);
    rect(140, 150, 10, 20);
    rect(150, 140, 10, 30);
    rect(160, 130, 10, 50);
    rect(170, 130, 10, 50);
    rect(180, 120, 10, 70);
    rect(190, 110, 10, 70);
    rect(80, 80, 20, 10);
    rect(140, 80, 20, 10);
    rect(80, 100, 20, 10);
    rect(140, 100, 20, 10);
    rect(110, 120, 20, 10);
    rect(70, 240, 110, 10); //belt
    noLoop();
    fill(1, 162, 232); //bandana
    square(90, 60, 10);
    square(140, 60, 10);
    square(70, 70, 10);
    square(120, 70, 10);
    square(160, 70, 10);
    noLoop();
    fill(247, 92, 100);
    square(110, 130, 10); //tongue
    noLoop();
    strokeWeight(0)
    fill(237, 29, 37); //red shirt
    rect(100, 180, 50, 10);
    rect(90, 190, 60, 10);
    rect(100, 200, 50, 10);
    rect(90, 210, 50, 10);
    rect(70, 220, 30, 10);
    rect(80, 200, 10, 10);
    rect(70, 230, 30, 10);
    rect(110, 230, 70, 10);
    rect(120, 220, 30, 10);
    rect(150, 210, 20, 10);
    rect(160, 220, 20, 10);
    square(60, 200, 10);
    square(50, 220, 10);
    square(180, 200, 10);
    square(190, 220, 10);
    noLoop();
    fill(52, 32, 13);  //brown outline
    square(90, 180, 10);
    rect(150, 180, 20, 10);
    rect(60, 190, 30, 10);
    rect(160, 190, 30, 10);
    square(50, 200, 10);
    square(70, 200, 10);
    square(170, 200, 10);
    square(190, 200, 10);
    rect(40, 210, 10, 50);
    rect(60, 210, 10, 70);
    square(170, 210, 10);
    rect(180, 210, 10, 70);
    rect(200, 210, 10, 50);
    square(50, 230, 10);
    square(190, 230, 10);
    square(50, 250, 10);
    square(190, 250, 10);
    rect(60, 280, 60, 10);
    rect(130, 280, 60, 10);
    rect(110, 260, 10, 50);
    square(120, 260, 10);
    rect(130, 260, 10, 50);
    rect(80, 290, 30, 10);
    rect(70, 300, 40, 10);
    rect(140, 290, 30, 10);
    rect(140, 300, 40, 10);
    noLoop();           
    fill(255, 242, 1);  //yellow highlights
    square(80, 210, 10);
    square(90, 200, 10);
    square(100, 230, 10);
    square(110, 220, 10);
    square(140, 210, 10);
    square(150, 220, 10);
    square(150, 190, 10);
    square(190, 210, 10);
    noLoop();
    fill(255, 201, 15);  //yellow-orange
    square(50, 210, 10);
    square(150, 200, 10);
    noLoop()
    fill(255, 127, 40);  //orange 
    square(70, 210, 10);
    square(100, 220, 10);
    square(160, 200, 10);
    noLoop();
    fill(241, 194, 126);  //hands&knees
    square(50, 240, 10);
    square(190, 240, 10);
    rect(70, 260, 20, 10);
    rect(150, 260, 20, 10);
    noLoop();
    fill(255);      //jean tears
    square(70, 270, 10);
    square(140, 270, 10);
    square(170, 270, 10);
    noLoop();
    fill(111, 126, 149);  //jeans
    rect(70, 250, 110, 10);
    rect(90, 260, 20, 10);
    square(140, 260, 10);
    square(170, 260, 10);
    rect(80, 270, 30, 10);
    rect(150, 270, 20, 10);
    }

Looking Outwards 1: Santiago X

Santiago X Flux Room


I admire this project because it utilizes technology’s advantage of auto-generation in order to create a more immersive and varied experience. The variation and illusion of natural spontaneity within a certain context can be very well emulated in this Flux Room because its injecting elements into the room that directly affect an experiencer’s senses.
Santiago X, a technology and installation artist, created it. I can’t find how long it took, but I assume 1-3 years since it probably needed a deadline for its showing in WNDR Museum, Chicago in 2021.
He most definitely wrote custom scripts, at least, because its a customized AI and machine learning system that algorithmically generates sounds, visuals, and scents in this Flux Room.
Definitely seems like one of those recent trendy immersive projection experiences like Artechouse or Van Gogh Exhibit, but it builds on those by adding more ways of sensuous interaction.
As a futurist, Santiago precisely wants to imagine and present hyper-real futures that rupture what we can presently conceive in reality. Thus, like Artechouse, there’s infinite possiblity for the types of unimaginable auto-generated visuals, but also sounds and scents that are utterly unrecognizable but in the liminal space between existing and not-existing.
Provide a link (if possible) to the work, and a full author and title reference. https://santiagox.com/flux-room
https://santiagox.com/aboutx

project 01

sketch
function setup() {
    createCanvas(450, 550);
    background(220);
    text("p5.js vers 0.9.0 test.", 10, 15);
}
function draw() {
    background(245,245,220);
    fill(100);
    noStroke();
    triangle(width/2, 400, width,550, 0, 550 );
    if(mouseX > 400){
                //body
       
        background(200,200, random(0,200));
        fill(random(100,200),random(30,150), random(100,255));
        triangle(width/2, 400, width-random(20,50),550, 0, 550-random(20,50) );
        fill(225,200,255);
        strokeWeight(1);
        stroke(100);
        ellipse(width/2 +10, 270, 350, 470);
        fill(255);
        strokeWeight(random(1,10));
        stroke(200,190,255);
        ellipse(125-random(0,10),200,40,130);
        ellipse(325-random(0,20),200,170,60);
        fill(random(0,10),random(20,70),random(10,20));
        circle(125,200,55);
        fill(random(0,10),random(20,70),random(10,20));
        circle(350,200,80);
        strokeWeight(2);
        fill(random(0,255),random(100,200),random(100,200));
        circle(125,200,random(10,40));
        fill(random(100,200),random(0,200),random(100,200));
        circle(350,200,random(30,60));
        strokeWeight(3);
        stroke(200,200,100);
        fill(0);
        //nose
        line(width/2-random(0,7),220-random(0,5), width/2 -20,350 );
        line(width/2 -20,350, 300,300-random(0,7) );
        triangle(width/2 -20,350, width/2 -15, 315, width/2 -7, 350);
        //mouth + teeth
        stroke(60);
        fill(255,30,100);
        arc(width/2,400,100,100,0,PI);
        fill(250);
        rect(width/2-20-random(0,5),400,15,25);
        square(width/2-10-random(0,5),400,20);
        rect(width/2-random(0,5),400,20,30);
        square(width/2+10-random(0,5),400,20);
        square(width/2+20-random(0,5),400,20);
        // hair

    } else {
        //face
        fill(225,200,183);
        strokeWeight(1);
        stroke(100);
        ellipse(width/2 +10, 270, 350, 470);
        //eyes
        fill(250);
        strokeWeight(2);
        stroke(3);
        ellipse(150,210,70, mouseX+40);
        ellipse(340,210,70,mouseX+40);
        fill(78,53,36);
        circle(150,210,30);
        fill(78,53,36);
        circle(340,210,30);
        //nose
        strokeWeight(1);
        fill(225,184,153);
        ellipse(width/2+10, 280, 12, 100);
        ellipse(width/2+10, 324,40,25);
        fill(0);
        circle(width/2,326, 7);
        circle(width/2 + 15,326, 7);
        // mouth
        strokeWeight(10);
        stroke(255,10,30);
        ellipse(width/2, 400, mouseX+20, 95);
        //hair
        strokeWeight(10);
        stroke(0);
        line(width/2 -110,100,mouseX-110,mouseY);
        line(width/2 -90,100, mouseX-90,mouseY);
        line(width/2 -70,100, mouseX-70,mouseY);
        line(width/2 -50,100, mouseX-50,mouseY);
        line(width/2 -30,100, mouseX-30,mouseY);
        line(width/2 -10,100, mouseX-10,mouseY);
        line(width/2 +10,100, mouseX+10,mouseY);
        line(width/2 +30,100, mouseX+30,mouseY);
        line(width/2 +50,100, mouseX+50,mouseY);
        line(width/2 +70,100, mouseX+70,mouseY);
        line(width/2 +90,100, mouseX+90,mouseY);
        line(width/2 +110,100, mouseX+90,mouseY);

        line(width/2 -100,80,mouseX-110,mouseY);
        line(width/2 -80,80, mouseX-90,mouseY);
        line(width/2 -60,80, mouseX-70,mouseY);
        line(width/2 -40,80, mouseX-50,mouseY);
        line(width/2 -20,80, mouseX-30,mouseY);
        line(width/2 ,80, mouseX-10,mouseY);
        line(width/2 +20,80, mouseX+10,mouseY);
        line(width/2 +40,80, mouseX+30,mouseY);
        line(width/2 +60,80, mouseX+50,mouseY);
        line(width/2 +80,80, mouseX+70,mouseY);
        line(width/2 +100,80, mouseX+90,mouseY);
        line(width/2 +120,80, mouseX+90,mouseY);

        line(width/2 -90,60, mouseX-90,mouseY);
        line(width/2 -70,60, mouseX-70,mouseY);
        line(width/2 -50,60, mouseX-50,mouseY);
        line(width/2 -30,60, mouseX-30,mouseY);
        line(width/2 -10,60, mouseX-10,mouseY);
        line(width/2 +10,60, mouseX+10,mouseY);
        line(width/2 +30,60, mouseX+30,mouseY);
        line(width/2 +50,60, mouseX+50,mouseY);
        line(width/2 +70,60, mouseX+70,mouseY);
        line(width/2 +90,60, mouseX+90,mouseY);
        
    }




}

Blog 1

As a highschooler in Silicon Valley, it was inevitable for my family to have tons of family friends that are very well involved in the CS scene, despite my family not having any computer or engineering backgrounds. One of our closest friends, Fengwei Lee and his startup, REALITEER, developed a series of VR/AR programs that aimed to use VR/AR to promote mental and physical well-being. These programs included games that had you mimic taichi, dance, and other types of choreography to a selected audio track, with lightsabers that were used to hit targets as they approached you. There were specific programs within for different purposes, such as relaxation, exercise, dance, and kids’ entertainment. As far as I know, his startup and him took nearly two year experimenting with different strategies and codes. Furthermore, from the finished product, the project used various commercial applications, like Unity, and original codes. I assume that the project was inspired by the creator, Fengwei’s time working in companies like Dreamwork, and his own family. This was a way to entertain and help people of all ages from toddlers to seniors to feel better. Moreover, revisiting this project made me think about the future of VR/AR – that computer science can have a much more obvious and tangible effect on the general public’s well being, in this case, encouraging people to be active mentally and physically. I also predict that as society becomes more and more digital, with the creation of platforms like the Meta Verse, developing health promoting Virtual and Augmented reality is critical.

Link to the start up and it’s projects: https://realiteer.com/about/

blog 02

Screen shot from n-e-r-v-o-u-s.com

Section D 

Evette LaComb

Nervous System – Jessica Rosenkrantz

  • Regarding the project, what do you admire about it, and why do you admire these aspects of it?
    • The company states they are, “a generative design studio that works at the intersection of science, art and technology”. They have several concepts highlighted on their site, but many utilize an interactive program to create one of a kind jewelry pieces for the customers. The first item I looked at was a custom earring made out of a honeycomb structure. The program allowed me to choose the outline of the cells, divide the cells, as well as apply “forces” that swirled and manipulated the cells further. What I admire most is how they allow the customer to have a creative hand in the final product they are receiving. The concept not only spreads the work of the creator, Jessica Rosenkrantz, or that of  the program alone, but the interaction between the three.
  • What do you know (or what do you suppose) about the algorithm that generated the work?
    • I would guess the program I interacted with used a visual generation system. The forces probably manipulated the arks and positions of the visual features to some mathematical formula. The Interface interacted with the human to change variables in the code that displayed the final product generated on the side display.  
  • In what ways are the creator’s artistic sensibilities manifest in their algorithm?
    • Jessica Rosenkrantz, is credited as the founder. From looking at the work on the site, I think there’s a clear inspiration from the interaction of computational and organic creation. The designs are based on grid systems that end up looking almost like a ptree dish, or growing plant. In particular one of their projects was originally developed to simulate the generation of veins in leaves, and later became a tool for art.

https://n-e-r-v-o-u-s.com/projects/sets/networks/