Crystal-Xue-Project-02

sketch-105.js

//Crystal Xue
//15104-section B
//luyaox@andrew.cmu.edu
//Project_02

var nosePointX = 380;
var nosePointY = 340;
var chinPointX = 372;
var chinPointY = 442;
var jawPointX = 240;
var jawPointY = 430;
var earPointX = 180;
var earPointY = 310;
var lighteningR1 = 255;
var lighteningG1 = 0;
var lighteningB1 = 0;
var lighteningR2 = 0;
var lighteningG2 = 0;
var lighteningB2 = 255;
var backgroundR = 113;
var backgroundG = 114;
var backgroundB = 208;
var count = 0;

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

function draw() {
	background(backgroundR, backgroundG, backgroundB);

    //hair
    fill(255);
    noStroke();
    ellipse(230,320,220,250);
    quad(120, 320, 190, 500, 300, 500, 310, 300);
    triangle(200, 500, 160, 500, 190, 470);

    //face
    stroke(255);
    strokeWeight(3);
    fill(20);
    beginShape();

    //forehead
    curveVertex(220, 335);       
    curveVertex(220, 330);       
    curveVertex(220, 300);      
    curveVertex(220, 270);        
    curveVertex(220, 245);       
	curveVertex(250, 240);
	curveVertex(300, 235);

    //browbone
	curveVertex(335, 262);

	//nose
	curveVertex(347, 278);
	curveVertex(348, 305);
	curveVertex(nosePointX, nosePointY);
	curveVertex(nosePointX - 15, nosePointY + 21);

    //mouth
	curveVertex(365, 373);
	curveVertex(372, 381);
    curveVertex(368, 391);
    curveVertex(372, 400);

    //chin
    curveVertex(368, 422);
    curveVertex(chinPointX, chinPointY);   
    curveVertex(chinPointX - 7, chinPointY + 16);
    curveVertex(345, 462);
    curveVertex(305, 458);

    //jaw
    curveVertex(jawPointX, jawPointY);       
    curveVertex(220, 370);

    //ear
    curveVertex(205, 375);
    curveVertex(earPointX, earPointY + 45);   
    curveVertex(170, 325);
    curveVertex(earPointX, earPointY);     
    curveVertex(199, 315); 
    curveVertex(earPointX + 35, earPointY + 25);            
    endShape(CLOSE);

    //lightening bolt
    stroke(lighteningR2, lighteningG2, lighteningB2);
    strokeWeight(5)
    line(302, 235, 286, 384);
    line(289, 448, 318, 318);
    push();
    noStroke();
    fill(lighteningR1, lighteningG1, lighteningB1);
    triangle(304, 235, 288, 384, 343, 270);
    quad(323, 308, 291, 448, 352, 310, 346, 273);
    pop();
}

function mousePressed() {
    nosePointX = random(375, 385);
    nosePointY = random(335, 345);
    chinPointX = random(368, 376);
    chinPointY = random(433, 450);
    jawPointX = random(235, 245);
    jawPointY = random(425, 450);
    earPointX = random(175, 185);
    earPointy = random(300, 320);
    backgroundR = random(100, 200);
    backgroundG = random(100, 200);
    backgroundB = random(100, 200);

    count+=1;
    if (count%3==0){
        lighteningR1 = 255;
        lighteningG1 = 0;
        lighteningB1 = 0;  
        lighteningR2 = 0;
        lighteningG2 = 0;
        lighteningB2 = 255;
    }
    
    if (count%3==1){
    	lighteningR1 = 217;
    	lighteningG1 = 190;
    	lighteningB1 = 77;
        lighteningR2 = 104;
        lighteningG2 = 52;
        lighteningB2 = 30;    	
    }

    if (count%3==2){
    	lighteningR1 = 146;
    	lighteningG1 = 206;
    	lighteningB1 = 234;
        lighteningR2 = 214;
        lighteningG2 = 149;
        lighteningB2 = 183;     	
    }
}

I am inspired by David Bowie figure and pop art color palette. I also approached this project with a slightly different way. Experimenting with the side profile of David Bowie was a lot of fun.

Fallon Creech-Project-02-Variable-Face


sketch

For this project, I tried making a panda that changed its facial expression when the mouse is clicked; to simulate this, I defined variables for most of the facial features and decided to limit the variances to certain features; those features include the eyes, cheeks, nose, and ears. 

//Fallon Creech
//Section A
//fcreech@andrew.cmu.edu
//Project-02

var eyeSize = 20;
var faceWidth = 375;
var faceHeight = 275;
var cheekSize = 20;
var noseWidth = 30;
var noseHeight = 20;
var noseColor = 0;
var patchSize = 50;
var earSize = 100;

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

function draw() {
    //ears
    noStroke();
    fill(0);
    var earLX = width / 2 - faceWidth * 0.40;
    var earRX = width / 2 + faceWidth * 0.40;
    ellipse(earLX, height / 2.5, earSize, earSize);
    ellipse(earRX, height / 2.5, earSize, earSize);

    //face
    fill(255);
    ellipse(width / 2, height / 1.75, faceWidth,  faceHeight);

    //black patches
    noStroke();
    fill(0);
    var eyeLX = width / 2 - faceWidth * 0.25;
    var eyeRX = width / 2 + faceWidth * 0.25;
    ellipse(eyeLX, height / 1.6, patchSize, patchSize);
    ellipse(eyeRX, height / 1.6, patchSize, patchSize);

    //eyes
    noStroke();
    fill(255);
    var eyeLX = width / 2 - faceWidth * 0.25;
    var eyeRX = width / 2 + faceWidth * 0.25;
    ellipse(eyeLX, height / 1.575, eyeSize, eyeSize);
    ellipse(eyeRX, height / 1.575, eyeSize, eyeSize);

    //nose
    fill(noseColor);
    ellipse(width / 2, height / 1.40, noseWidth, noseHeight);

    //cheeks
    fill(255, 200, 200);
    var cheekLX = width / 2 - faceWidth * 0.375;
    var cheekRX = width / 2 + faceWidth * 0.375;
    ellipse(cheekLX, height / 1.5, cheekSize, cheekSize);
    ellipse(cheekRX, height / 1.5, cheekSize, cheekSize);
}

function mousePressed() {
    eyeSize = random(10, 30);
    earSize = random(80, 120);
    cheekSize = random(5, 20);
    noseColor = random(0, 255);
}

Rachel Shin – LO2

Karl Sims, a second generation generative artist, explores the concept of art production via algorithms and repeated patterns. One of Sims’ projects that stood out to me was “Liquid Selves.” Sims used software and animations to morph an animation that depicts a soul leaving our physical bodies. The movement that Sims incorporates sets a tone as well as displays the skilled algorithmic patterns that Sims utilizes. The description states that “particle systems were used to disassemble and reconstruct various images” while “artificial evolution and interpolation of 3D parametric shapes allowed the creation of unusual surface transformations.” (Sims, 1992). I admired this particular work of Sims because it is a fractal-like creation that invites audience members to further analyze each component of the animation. While it stirs a sense of discomfort with all the “abnormal” animations, the artwork also suggests a beauty and uniqueness of the work itself and establishes a soothing tone to better reflect the society we live in.

Minjae Jeong-Project 02-Variable Face

sketch

//Minjae Jeong
//Section B
//minjaej@andrew.cmu.edu
//Project-02-Variable-Face

var backgroundR = 181;
var backgroundG = 100;
var backgroundB = 227;
var faceR = 116;
var faceG = 209;
var faceB = 157;
var faceW = 300;
var faceH = 250;
var eyeW = 100;
var eyeH = 130;
var pupilW = 50;
var pupilH = 50;
var mouthW = 200;
var mouthH = 120;

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

function draw() {
    background(backgroundR/2, backgroundG/2, backgroundB/2);
    noStroke();
    //face
    fill(faceR,faceB,faceB);
    ellipse(240, 300, faceW,  faceH);
    //eyes & pupils
    fill(255, 224, 224);
    ellipse(120 ,280, eyeW/2 + 30, eyeH/2);
    ellipse(320, 280, eyeW/2 + 30, eyeH/2);
    fill(0);
    ellipse(120, 280, pupilW, pupilH);
    ellipse(320, 280, pupilW, pupilH);
    //mouth
    fill(255);
    arc(240, 340, mouthW, mouthH, 0, PI);

}

function mousePressed() {
    // when the user clicks, these variables are reassigned
    // to random values within specified ranges. For example,
    // 'faceWidth' gets a random value between 75 and 150.
    backgroundR = random(150, 200);
    backgroundG = random(50, 150);
    backgroundB = random(180, 255);
    faceR = random(100, 140);
    faceG = random(200, 240);
    faceB = random(170, 190);
    faceW = random(300, 400);
    faceH = random(225, 275);
    eyeW = random(60, 100);
    eyeH = random(80, 120);
    pupilW = random(20, 50);
    pupilH = random(20, 50);
    mouthW = random(160,200);
    mouthH = random(70, 150);
}

Happy weekend

Sydney Salamy: Looking Outwards-02


The project is called “A DECISION MACHINE SUITE” by Roman Verostko. It features a number of machines of simple rectangles of varying sizes and positions. Despite these variations, all the machines have one thing in common: blinking lights. They each have two lights that blink on and off, representing an answer to a question. The names of the machines are the questions, and range from “The Vatican: Right or Wrong?” and “Hamlet: To Be or Not To Be?” to just “Generic Decider: Red or Green?”. Whichever light is kept on is random, thus the answer cannot be predetermined. The project is a nod to Norbert Wiener (the “Father of Cybernetics”), who played a role in the information revolution of the 1900s and who noticed that even physics has uncertainty and chance.

 

  • I admire how the project is so simple yet is based around offering answers to some complex questions. I guess I like this because these questions, at least some of them, are highly debated and have been for years, and so to leave the answers all up to a small little machine that picks lights at random is just very interesting and entertaining to me. I know I shouldn’t say this in an assignment, but it’s almost like a giant middle finger to all the great thinkers who have spent so much time thinking them over, only to have people do a complicated version of a coin toss for the answer. I also find the machine designs very interesting. Verostko decided to incorporate their questions into them. The “Red or Green” one is obvious, with each color being displayed behind one of the lights, and “Wall Street” is similar except with a “B” and “S”. But the others are a bit more subtle. “The Vatican” holds gold leafed lamp reflectors, and is shaped almost like a cross except without the top part (although I’m not sure if the cross was intentional). “The Whitehouse” includes its own colors, except they are black and white and are balloting marbles. More impressive than that, the wood the circuits rest on is actually from the Whitehouse from when it was renovated in the 40s. I admire the designs because Verostko could have just had a consistently simple design for all his machines, but instead he chose to spice things up and make them more interesting. The designs don’t just improve their look, but also gives the viewers something deeper to look into.
  • Based off his the website hosting online versions of his work, it seems like his schematic was based on some else’s manual. The drawing he made of  the circuit made it seem like it was very simple. However, what makes this project more interesting is that the online version doesn’t use circuits since its online. It just uses regular code, which he said Tamara Temple helped him with. The algorithm would probably be very simple as well, since its just two lights going on and off and a button which stops them. 
  • I don’t know much about the algorithm, but the circuits for the real machines have artistic sensibilities attached to them. For instance, the circuit for “White House” was placed on an actual piece of the White House. Also, the colorful wiring served both practical and aesthetic purposes.
  • A DECISION MACHINE SUITE” by Roman Verostko, 1983-1995

“Decision Machine Suite” by Roman Verostko

 

Screenshot of the “Decision Machine Suite” by Roman Verostko

 

Xiaoyu Kang – Project 02 – Variable Face


sketch

/*
Xiaoyu Kang
Section B
xkang@andrew.cmu.edu
Assignment-02-B
*/
var circles = 200;
var faceW = 280;
var faceH = 300;
var hairL = 200; 
var eyes = 30;
var backC = 100;

function setup() {
    createCanvas(640, 640);
    background(242,180,180);
}
function draw() {
	var hairW = faceW + 90;
    noStroke();
//background circles
    fill(158,37,circles);
    ellipse(30,80,backC,backC);
    ellipse(100,320,backC,backC);
    ellipse(300,60,backC,backC);
    ellipse(530,30,backC,backC);
    ellipse(540,580,backC,backC);
    ellipse(600,280,backC,backC);
    ellipse(50,520,backC,backC);
//hair
    fill(221,184,85);
    ellipse(320,310,hairW,faceH + 90);
    rect(320 - hairW * 0.5,310,hairW,hairL);
//face
    fill(242,232,221);
    ellipse(320,320,faceW,faceH);
//hair
    fill(221,184,85);
    arc(320, 200, 280, 80, 180, PI + QUARTER_PI, CHORD);
//neck 
    fill(242,232,221);
    rect(280,440,80,80);
//cloth
    fill(229,128,circles);
    rect(270,490,100,20);
    ellipse(320,640,400,280);
//ear
    fill(242,232,221);
    ellipse(320 - faceW * 0.5,320,50,90);
    ellipse(320 + faceW * 0.5,320,50,90);
//eyes
    fill("grey");
    ellipse(320 - 60,300,eyes,eyes);
    ellipse(320 + 60,300,eyes,eyes);
    fill("white");
    ellipse(320 - 70,290,10,10);
    ellipse(320 + 50,290,10,10);
//eyebrowsL
    fill(214,179,85);
    strokeWeight(10);
    beginShape();
    vertex(230,270);
    vertex(240,275);
    vertex(270,270);
    vertex(280,260);
    endShape(CLOSE);
    fill(214,179,85);
    strokeWeight(10);
    beginShape();
    vertex(410,270);
    vertex(400,275);
    vertex(370,270);
    vertex(360,260);
    endShape(CLOSE);
//nose
    fill(195,154,133);
    strokeWeight(10);
    beginShape();
    vertex(295,340);
    vertex(310,350);
    vertex(330,350);
    vertex(345,340);
    endShape(CLOSE);
//lips
    fill(216,135,128);
    strokeWeight(10);
    beginShape();
    vertex(270,380);
    vertex(290,400);
    vertex(350,400);
    vertex(370,380);
    endShape(CLOSE);
}
function mousePressed() {
	circles = random(100,250);
    faceW = random(260,300);
    faceH = random(280,320);
    hairL = random(180,380);
    eyes = random(20,35);
}

I mainly focused on writing a code that will allow shape changes and color changes. The size of the person’s face are made changeable by clicking the mouse. And since the size of the hair is based on the size of the face, the hair changes as the face changes. The size of the person’s eyes also varies. I also made the color of both the clothings and the circles in the background changeable. The color varies in a range of different kind of red and purple.

Xu Xu – Project 02 – Variable Face

I enjoyed creating this face, and the mouse-press was really fun to work with. However, since I created a relatively detailed face (less abstract), it was hard for me to change the face shape or hair shape because I had so many points (Originally I wanted to do a face where the hair would seem as if wind was blowing on them, but I soon realized that it was too hard). If I were to do this project again, I would instead do a simplified face that would create more variations.

sketch

var glassesColour = 193;
var glassesRim = 255;
var glassesSizeX = 15;
var glassesSizeY = 55;
var strandX = 208;
var strandY = 20;
var eyebrowX = 180;
var eyebrowY = 198;
var collarColor = 134
var mouth = 53;
function setup() {
    createCanvas(480, 640);
	
}

function draw() {
    background(199,184,103);
//face
    noStroke();
    fill(227,200,170);
    beginShape();
    vertex(130,114);
    vertex(126,123);
    vertex(122,131);
    vertex(111,164);
    vertex(110,179);
    vertex(112,195);
    vertex(108,149);
    vertex(111,203);
    vertex(99,224);
    vertex(78,246);
    vertex(74,253);
    vertex(77,262);
//beginning of lips
    vertex(88,270);
    vertex(83,275);
    vertex(76,282);
    vertex(73,285);
    vertex(77,292);
    vertex(87,297); //beg
    vertex(82,299);
    vertex(76,303);
    vertex(74,309);
    vertex(75,314);
    vertex(84,313);
//end of lips
    vertex(85,323);
    vertex(79,333);
    vertex(78,344);
    vertex(86,351);
    vertex(102,356);
    vertex(123,357);
    vertex(177,343);
    endShape(CLOSE);
//neck
    noStroke();
    fill(227,200,170);
    beginShape();
    vertex(116,359);
    vertex(120,340);
    vertex(134,366);
    vertex(171,424);
    vertex(239,376);
    vertex(216,323);
    vertex(200,250);
    endShape(CLOSE);
//head
    fill(227,200,170);
    ellipse(225,210,200,200);
//glasses
    strokeWeight(4);
    stroke(glassesRim,189,189);
    line(174,229,125,216);
    line(111,213,105,210);
    fill(170,170,glassesColour);
    ellipse(120,225,glassesSizeX,glassesSizeY);
    noFill();
    strokeWeight(2);
    stroke(glassesRim,189,189);
    ellipse(120,225,glassesSizeX,glassesSizeY);
//body
    noStroke();
    fill(collarColor + 30, 32, 78);
    beginShape();
    vertex(145,640);
    vertex(135,591);
    vertex(137,548);
    vertex(146,470);
    vertex(163,459);
    vertex(208,430);
    vertex(305,453);
    vertex(361,502);
    vertex(393,550);
    vertex(416,603);
    vertex(430,640);
    endShape(CLOSE);
    noStroke();
    fill(collarColor, 32, 78);
    beginShape();
    vertex(163,400);
    vertex(154,406);
    vertex(156,446);
    vertex(193,452);
    vertex(253,454);
    vertex(293,462);
    vertex(286,427);
    vertex(268,413);
    endShape(CLOSE);
    noStroke();
//mouth
	noStroke();
	fill(mouth,0,37);
	beginShape();
	vertex(89,297);
	vertex(76,282);
	vertex(73,285);
	vertex(77,292);
	vertex(87,297); //beg
	vertex(82,299);
	vertex(76,303);
	vertex(74,309);
	vertex(75,314);
	vertex(84,313);
	endShape(CLOSE);
//hair
    noStroke();
    fill(70,0,0);
    beginShape();
    vertex(117,126);
    vertex(110,140);
    vertex(103,159);
    vertex(100,181);
    vertex(107,200);
    vertex(105,179);
    vertex(109,156);
    vertex(118,139);
    vertex(115,161);
    vertex(125,178);
    vertex(140,197);
    vertex(150,210);
    vertex(158,226);
    vertex(160,201);
    vertex(167,224);
    vertex(180,247);
    vertex(189,275);
    vertex(191,296);
    vertex(185,325);
    vertex(183,358);
    vertex(184,378);
    vertex(187,395);
    vertex(193,417);
    vertex(206,434);
    vertex(218,441);
    vertex(236,442);
    vertex(260,440);
    vertex(280,452);
    vertex(294,470);
    vertex(340,539);
    vertex(363.580);
    vertex(372,568);
    vertex(394,539);
    vertex(410,519);
    vertex(427,508);
    vertex(442,491);
    vertex(449,473);
    vertex(460,476);
    vertex(444,433);
    vertex(410,351);
    vertex(381,237);
    vertex(371,187);
    vertex(346,135);
    vertex(315,111);
    vertex(275,92);
    vertex(243,85);
    vertex(222,84);
    vertex(189,89);
    vertex(180,87);
    vertex(165,92);
    endShape(CLOSE);
//strand of hair
    noStroke();
    fill(70,0,0);
    beginShape();
    vertex(222,90);
    vertex(strandX,43);
    vertex(229,strandY);
    vertex(215,50);
    endShape(CLOSE);
//eyebrows
    strokeWeight(3);
    stroke("black");
    line(118,eyebrowX,150,eyebrowY);
}

function mousePressed() {
    // when the user clicks, these variables are reassigned
    // to random values within specified ranges. For example,
    // 'faceWidth' gets a random value between 75 and 150.
    glassesRim = random(100,255);
    glassesColour = random (106,230);
    glassesSizeX = random(10,20);
    glassesSizeY = random (45,65);
    eyebrowX = random (175, 198);
    eyebrowY = random (175, 198);
    strandX = random (200,210);
    strandY = random (15,50);
    collarColor = random (0,134);
    mouth = random(53,255);
}

Alec Albright – Project 02 – Variable Face

sketch

// ALec Albright
// Section B
// aalbrigh@andrew.cmu.edu
// Project 02

var hairHeight = 130;
var hairWidth = 365;
var hairRed = 230;
var foreheadH = 320;
var foreheadW = 160;
var foreheadBlue = 255;
var lowerRed = 240;
var noseBlue = 255;
var leftEyeY = 175;
var rightEyeY = 200;
var leftPupilX = 230;
var rightPupilX = 340;
var jawWeight = 30;

function setup(){
    height = 480
    width = 640
    createCanvas(width, height);
    angleMode(DEGREES);
}

function draw(){
    background("blue");
    // forehead
    fill(0, 255, foreheadBlue);
    noStroke();
    rect(140, 120, foreheadH, foreheadW);

    // lower half of face
    noStroke();
    fill(lowerRed, 0, 200);
    quad(125, 270, 475, 270, 370, 470, 250, 470);

    // mouth
    fill("black");
    arc(300, 370, 100, 40, -10, 170, PIE);

    // nose
    fill(153, 51, noseBlue);
    triangle(300, 230, 325, 320, 300, 330);

    // eyes
    fill("white");
    ellipse(240, leftEyeY, 45, 80);
    ellipse(350, rightEyeY, 60, 95);
    fill('black');
    ellipse(leftPupilX, leftEyeY + 15, 15, 30);
    ellipse(rightPupilX, rightEyeY + 20, 23, 40);

    // hair
    fill(hairRed, 130, 0);
    rect(120, 0, hairWidth, hairHeight, 160, 40, 60, 0);

    // jaw
    stroke('yellow');
    strokeWeight(jawWeight);
    line(150, 320, 250, 470);
    stroke("red");
    line(200, 445, 435, 445);
    stroke('limegreen');
    line(450, 295, 350, 505);
}

function mousePressed(){
    hairHeight = random(110, 150);
    hairWidth = random(335, 395);
    hairRed = random(0, 255);
    foreheadBlue = random(0, 255);
    foreheadH = random(300, 340);
    foreheadW = random(140, 180);
    lowerRed = random(0, 255);
    noseBlue = random(0, 255);
    leftEyeY = random(145, 205);
    rightEyeY = random(160, 240);
    leftPupilX = random(220, 260);
    rightPupilX = random(320, 360);
    jawWeight = random(10, 50);
    clear();
}

At the beginning of the process, I struggled to find what variables I would like to create, and what facial features I wanted to generate. I eventually wound up deciding that I wanted to change most structural aspects within constraints, a few color aspects, and absolutely let the pupils of the eyes cross if randomly selected to do so. Thus, I began toying with various features, dimensions, and colors until the result was a satisfying range of diversity in faces, based on my previous project.

Julia Nishizaki – Looking Outwards – 02

A piece from Marius Watz’s KBG series, this particular image depicts the music of Radka Toneff

Marius Watz (http://mariuswatz.com/) is a Norwegian artist based in New York and Oslo, who works through generative software processes. He has a wide variety of works, some of which deal in data visualization, and others which result in physical, 3D printed pieces. Watz is known for his vibrant colors and geometric forms.

The works that I chose to write about are a part of Marius Watz’s KBG series. This series was created for the Kongsberg Jazz Festival in 2010, an international jazz festival held annually in Kongsberg, Norway. I found this series particularly interesting, as Watz selected five classic and contemporary jazz tracks, by Radka Toneff, Atomic, Sonny Rollins, Håkon Kornstad and Røyksopp, and created five visual interpretations of the music. According to his website, he used Fast Fourier Transform (FFT) analysis of the sound as his data input.

I particularly admire this project because of Marius Watz’s use of color and dynamic motion to capture the fun, vibrant, and wide ranging tones and feelings of jazz. Even though these images were mainly used on posters and documentation that wasn’t moving, the geometric and dynamic nature of the forms still draw you in and engage you in a similar way to how music would, giving the audience a sense of what to expect at this festival.

Watz’s work as visuals for the Kongsberg Jazz Festival, invitation for commission and all print design by Anders Bergesen / Superultraplus

Ghalya Alsanea – Looking Outward-02

Animal Imagination by LIA

artwork consisting of 50 unique iteration

Animal Imagination, created  in 2018, is a collection of 50 unique artworks created by software artist LIA. Find her work here

Taking references from nature and animals, the works present different geometric and abstract shapes, generative patterns and colors, which evolve uniquely in each of the two-minute digital paintings. From sea, to forest and animal references, each variation connects its coded base with an organic aesthetic, providing a sense of harmony between the digital and the natural.

I admire the coherence of each piece, from the colors, to the shapes used, to the movement of the graphics. Even though it is random, it does not feel that way. Each piece is harmonious as it stands. I think this is what shows the artist’s artistic sensibilities, because of her clear knowledge of color theory and proportions. I also admire that even though it is animated art, when you take a still image, it is beautiful on its own as well.

If I had to guess how the algorithm that generated the pieces worked, I would think possibly each piece was inspired by an image of a natural element (i.e. sky or wind). Using those colors(i.e. blues), the primitive shapes in each image (i.e. ellipse and eye shapes), and how it would naturally move (whether that be in concentric movements, linear, radial, etc.) From that information, she can create this coherent art. That would be my best guess.

Here are some examples of the pieces, find more here.