Helen Reynolds – Project 2 – Variable Faces

hreynold-variablefaces

/* 
Helen Reynolds
Section E
hreynold@andrew.cmu.edu
Project-02
*/

//shape variables
var noseWidth = 47;
var faceWidth = 304;
var faceHeight = 265;
var eyeSize = 30;
var mouthHeight = 34;
//color variables
var backgroundR = 245;
var colorR = 32;


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

function draw() {
    background(backgroundR, 229, 218);

    //face
    rectMode (CENTER);
    noStroke();
    push();
    translate(width / 2, height / 2);
    rotate(110);
    fill(218, 164, 129);
    rect(0, 0, faceWidth,  faceHeight, 132);
    pop();

    //mouth
    fill(colorR, 30, 30);
    ellipse(width / 2, height / 2 + 70, 58, mouthHeight);

    //cheeks
    fill(253, 219, 200);
    ellipse(width / 2 - 25, height / 2 + 50, 56, 56);
    ellipse(width / 2 + 25, height / 2 + 50, 56, 56);

    //ears 
    fill(218, 164, 129);
    triangle(170, 97, 251, 144, 186, 212);
    triangle(474, 97, 393, 144, 455, 212);

    //bridge of nose
    rectMode (CENTER);
    noStroke();
    fill(206, 152, 123);
    rect(width / 2, height / 2, noseWidth, 76, 18);

    //nose
    rectMode (CENTER);
    noStroke();
    fill(167, 83, 78);
    rect(width / 2, height / 2 + 27, noseWidth, 24, 9);

    //eyes
    fill(colorR, 50, 30);    
    var eyeLX = width / 2 - faceWidth * 0.2;
    var eyeRX = width / 2 + faceWidth * 0.2;
    ellipse(eyeLX, height / 2, eyeSize, eyeSize);
    ellipse(eyeRX, height / 2, eyeSize, eyeSize);

    //eyes sparkle
    fill(255);
    ellipse(eyeLX + 2, height / 2 - 2, eyeSize / 3, eyeSize / 3);
    ellipse(eyeRX + 2, height / 2 - 2, eyeSize / 3, eyeSize / 3);
}

function mousePressed() {
    faceWidth = random(290, 340);
    faceHeight = random(250, 270);
    eyeSize = random(20, 40);
    colorR = random(30, 170);
    noseWidth = random(35, 60);
    mouthHeight = random(35, 65);
    backgroundR = random(200, 255);

}

To create this kitten, I sought inspiration from Hello Kitty and real cats. Starting off, I worked primarily in Illustrator. While I could’ve taken a more imaginative route with this, I chose to make the variations in my project pretty subtle so that the cat was always relatively believable.

Kitten process

Anthony Ra – Project02 – Variable Faces

sketch


var eyeSize = 20;
var eye = 40;
var faceWidth = 100;
var faceHeight = 130;
var fillet = 100;
var head = 50;
var headd = 50;
var teeth = 20;
var sideStache = 7;
var r, g, b;

function setup() {
  createCanvas(480, 600);
  background(220, 250, 220);
  r = random(255);
  g = random(255);
  b = random(255);
  noStroke(0)

}

function draw() {

/* fixed symbol */
noStroke();
fill(70, 200, 0);
triangle(240, 20, 210, 100, 225, 100);

fill(150, 230, 0);
triangle(240, 20, 225, 100, 255, 100);

fill(70, 200, 0);
triangle(240, 20, 255, 100, 270, 100);

fill(30, 150, 0);
triangle(210, 100, 225, 100, 240, 180);

fill(70, 200, 0);
triangle(225, 100, 240, 180, 255, 100);

fill(30, 150, 0);
triangle(240, 180, 255, 100, 270, 100);

rectMode(RADIUS);
fill(250, 220, 190);
rect(width/2, height*3/5, faceWidth, faceHeight, fillet);
var eyeLX = width/2 - faceWidth*0.4;
var eyeRX = width/2 + faceWidth*0.4;

/* neck */
noStroke();
fill(250, 220, 190);
rect(width/2, height*4/5, faceWidth - 15, 185);

/* beard */
fill(90, 35, 5);
arc(width/2, height*3/5 + 30, faceWidth*2, faceHeight*2 - 50, TWO_PI, PI);

fill(250, 220, 190);
arc(width/2, height*3/5 + 30, faceWidth*2, faceHeight + 20, TWO_PI, PI);

/* eye */
fill(250);
ellipse(eyeLX, height*3/5 - 30, eye, eyeSize);
ellipse(eyeRX, height*3/5 - 30, eye, eyeSize);

/*pupil*/
fill(0);
ellipse(eyeLX, height*3/5 - 30, eyeSize, eyeSize);
ellipse(eyeRX, height*3/5 - 30, eyeSize, eyeSize);

/* ear */
fill(240, 220, 190);
arc(width/2 - faceWidth, height*3/5, 2*eyeSize, 2*eye, HALF_PI, HALF_PI + PI);
arc(width/2 + faceWidth, height*3/5, 2*eyeSize, 2*eye, HALF_PI + PI, HALF_PI);


fill(220, 200, 170);
arc(width/2 - faceWidth, height*3/5, eyeSize, eye, HALF_PI, HALF_PI + PI);
arc(width/2 + faceWidth, height*3/5, eyeSize, eye, HALF_PI + PI, HALF_PI);

fill(90, 35, 5);
rect(eyeLX, height*1/2 + 5, 5 + eye/2, eyeSize/4, fillet/25);
rect(eyeRX, height*1/2 + 5, 5 + eye/2, eyeSize/4, fillet/25);

/* hair */
fill(80, 30, 5);
ellipse(205, 225, head*2, head + 10);

fill(90, 35, 5);
triangle(140, 360, 150, 302, 133, 290);
triangle(340, 360, 347, 290, 330, 302);

fill(125, 40, 7);
ellipse(167, 247, headd, headd - 7);
ellipse(280, 265, head, head);

fill(90, 35, 5);
ellipse(211, 250, 2*head, head);
ellipse(150, 280, headd - 10, headd + 20);
ellipse(330, 280, head - 10, head + 20);
ellipse(260, 240, headd, headd);
ellipse(290, 226, head + 30, head + 10);

fill(115, 35, 5);
ellipse(260, 215, headd, headd);

fill(85, 30, 5);
ellipse(281, 238, headd, headd);

fill(115, 35, 5);
ellipse(176, 264, headd, headd);
ellipse(317, 248, head + 20, head);

/* teeth */

stroke(90, 35, 5);
strokeWeight(2);
line(eyeLX, 415, eyeRX, 415);

fill(50);
arc(width/2, 415, 80, 35, TWO_PI, PI);

fill(200, 0, 0);
noStroke();
arc(width/2, 415, teeth*2, teeth*4, TWO_PI, PI);

fill(250, 0, 0);
arc(width/2, 415, teeth/5, teeth*4 - 5, TWO_PI, PI);

fill(250);
noStroke();
arc(eyeLX + 10, 415, teeth, teeth, TWO_PI, PI);
arc(eyeLX + 30, 415, 20, 20, TWO_PI, PI);
arc(eyeRX - 30, 415, teeth, 20, TWO_PI, PI);
arc(eyeRX - 10, 415, 20, teeth, TWO_PI, PI);

/* stache */
stroke(90, 35, 5);
strokeWeight(10);
point(eyeLX, 410);
point(width/2, 400);
point(eyeRX, 410);

noFill();
beginShape();
curveVertex(eyeLX, 410);
curveVertex(eyeLX, 410);
curveVertex(width/2, 400);
curveVertex(eyeRX, 410);
curveVertex(eyeRX, 410);
endShape();

noFill();
strokeWeight(7);
beginShape();
curveVertex(eyeLX, 410);
curveVertex(eyeLX, 410);
curveVertex(eyeLX - sideStache, 440);
curveVertex(eyeLX - 5, 475);
curveVertex(eyeLX - 5, 475);
endShape();

noFill();
strokeWeight(7);
beginShape();
curveVertex(eyeRX, 410);
curveVertex(eyeRX, 410);
curveVertex(eyeRX + sideStache, 440);
curveVertex(eyeRX + 5, 475);
curveVertex(eyeRX + 5, 475);
endShape();

/* nose */

noFill();
stroke(90, 35, 5);
strokeWeight(3);
arc(width/2, 365, eyeSize*2, eye, TWO_PI, PI);

fill(0);
ellipse(width/2 + 7, 375, eyeSize/4, eyeSize/4);
ellipse(width/2 - 7, 376, eyeSize/4, eyeSize/4);

/* shirt */
noStroke();
fill(r, g, b, 127);
triangle(0, 575, 156, 525, width/2 + 40, 600);
triangle(480, 575, 324, 525, width/2 - 40, 600);
triangle(width/2, 575, width/2 + 40, 600, width/2 - 40, 600);

fill(r, g, b, 115);
triangle(0, 575, 0, 600, width/2 + 40, 600);
triangle(480, 575, 480, 600, width/2 - 40, 600);



}

function mousePressed() {


  eyeSize = random(10, 30);
  head = random(45, 65);
  headd = random(45, 65);
  teeth = random(15, 25);
  sideStache = random(5, 12);
  r = random(255);
  g = random(255);
  b = random(255);
}

The first thing I thought of when it came to interchangeable facial features is the life simulation game, The Sims. I know a guy in which many people and I agree on looks like the default Sims character. Implementing variables was a bit of a challenge in which I couldn’t only rely on numbers for the placement of my shapes. There are subtle changes in facial features, but as a whole, the face looks very different from the last to the next.

Jenni Lee – Project 02 – Variable Face

jenni-project-02

	//face variable
	var faceWidth = 220;
	var faceHeight = 220;
	var faceX = 211;
	var faceY = 133;
	var faceColor = 255;
	
	//eye variable
	var eyeWidth = 11;
	var eyeHeight = 11;
	var eyeX = 250;
	var eyeY = 235;

	//ear variable
	var earWidth = 44;
	var earHeight = 44;
	var earX = 210;
	var earY = 133;

	//nose variable
	var noseWidth = 28;
	var noseHeight = 20;
	var noseX = 306;
	var noseY = 246;

	//blush variable
	var blushWidth = 13;
	var blushHeight = 9;
	var blushX = 260;
	var blushY = 254;


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

}

function draw() {
	background(249, 234, 242);

	//drawing face
	noStroke();
	fill(faceColor);
	ellipseMode(CORNER);
	ellipse(faceX, faceY, faceWidth, faceHeight);

	//drawing eyes
	noStroke();
	fill(112);
	ellipseMode(CORNER);
	ellipse(eyeX, eyeY, eyeWidth, eyeHeight);

	//drawing right eye
	noStroke();
	fill(112);
	ellipseMode(CORNER);
	ellipse(eyeX+130, eyeY, eyeWidth, eyeHeight);

	//drawing left blush
	noStroke();
	fill(255, 204, 213);
	ellipseMode(CORNER);
	ellipse(blushX, blushY, blushWidth, blushHeight);

	//drawing right blush
	noStroke();
	fill(255, 204, 213);
	ellipseMode(CORNER);
	ellipse(blushX+105, blushY, blushWidth, blushHeight);

	//drawing nose
	noStroke();
	fill(112);
	ellipseMode(CORNER);
	ellipse(noseX, noseY, noseWidth, noseHeight);

	//drawing left ear
	noStroke();
	fill(255);
	ellipseMode(CORNER);
	ellipse(earX, earY, earWidth, earHeight);

	//drawing right ear
	noStroke();
	fill(255)
	ellipseMode(CORNER);
	ellipse(earX+179, earY, earWidth, earHeight);

}

function mousePressed() {

	//randomizing eye size
	eyeHeight = random (8, 15);
	eyeWidth = random (11, 15);

	//randomizing face size
	faceHeight = random (220, 300);
	
	//randomizing ear size
	earHeight = random (20, 44);

	//randomizing face color
	faceColor = random (220, 255);

	//randomozing nose size
	noseHeight = random (14, 20);
}

Although many aspects of this project took me a while to figure out, ultimately it was really fun to customize and it was a good learning experience. I based my variable face on one of my favorite stuffed animals.

Curran Zhang- Project 2- Variable Faces

sketch

function setup() {
    createCanvas(600, 600);
}

var c1=0;
var c2=100;
var c3= 150;
var eyeSize = 20;
var faceWidth = 150;
var faceHeight = 150;
var faceWide= 100;
var faceHigh=100;
var bodyWidth=150;
var bodyHeight= 300;
var armLength= 150;
var bodyWide=100
var bodyHigh=200

function draw() {
    background(c1,c2,c3);

//Venom
    fill(0)
    ellipse(width / 4-40, height / 3, faceWidth,  faceHeight);
    var eyeL = width / 4 - faceWidth * 0.25;
    var eyeR = width / 4 + faceWidth * 0.25;
    //Face
    fill(250);
    arc(eyeL-40,height/3, 3*eyeSize,3*eyeSize,QUARTER_PI,PI+QUARTER_PI); 
    fill(250);
    arc(eyeR-40,height/3, 3*eyeSize,3*eyeSize,PI+QUARTER_PI+HALF_PI,HALF_PI+QUARTER_PI); 
    //Body
    fill(0);
    rect(width/4-bodyWidth/2-40,height/3+faceHeight/2,bodyWidth,bodyHeight,40)
    fill(250);
    quad(width/4-bodyWidth/2-40,height/3+faceHeight/2+40, 
         width/4-bodyWidth/2-40,height/3+faceHeight/2+bodyHeight/3+40,
         width/4+bodyWidth/2-40,height/3+faceHeight/2+40, 
         width/4+bodyWidth/2-40,height/3+faceHeight/2+bodyHeight/3+40)
    //Arm
    fill(0);
    rect(width/4+bodyWidth/2-40,height/3+faceHeight/2+30, armLength,50,40)


//Spidey
    fill('red');
    ellipse(3*width / 4, height / 2, faceWide,  faceHigh);
    noStroke();
    var eyeLL = 3*width / 4 - faceWide * 0.25;
    var eyeRR = 3*width / 4 + faceWide * 0.25;
    //Face
    fill(0);
    arc(eyeLL,height/2, 3*eyeSize+5,3*eyeSize+5,QUARTER_PI,PI+QUARTER_PI);
    fill(250);
    stroke('black');
    strokeWeight(1.5);
    arc(eyeLL,height/2, 3*eyeSize,3*eyeSize,QUARTER_PI,PI+QUARTER_PI); 
    fill(0);
    arc(eyeRR,height/2, 3*eyeSize+5,3*eyeSize+5,PI+QUARTER_PI+HALF_PI,HALF_PI+QUARTER_PI); 
    fill(250);
    stroke('black');
    strokeWeight(1.5);
    arc(eyeRR,height/2, 3*eyeSize,3*eyeSize,PI+QUARTER_PI+HALF_PI,HALF_PI+QUARTER_PI); 
    fill('red');
    rect(3*width/4 - bodyWide/2,height/2+faceHigh/2,bodyWide,bodyHigh,40);
    //Body
    fill('black');
    quad(3*width/4 - bodyWide/2, height/2+faceHeight/2+45, 
         3*width/4 - bodyWide/2, height/2+faceHeight/2+bodyHigh/3+45, 
         3*width/4 + bodyWide/2,  height/2+faceHeight/2+45,
         3*width/4 + bodyWide/2,  height/2+faceHeight/2+bodyHigh/3+45);

    ellipse(3*width/4, height/2+faceHeight/2+40+bodyHigh/6, 40 );
    fill('red');
    rect(width/4+bodyWidth/2-40,height/3+faceHeight/2+130,(3*width/4-bodyWide/2)-(width/4+bodyWidth/2-40),50,40);
}

function mousePressed() {
    faceWidth = random(100, 150);
    faceHeight = random(100, 150);
    eyeSize = random(10, 25);
    bodyWidth=random(150,200);
    bodyHeight=random(300,350);
    armLength=random(120,185);
    bodyWide=random(100,150);
    bodyHigh=random(200,250);
    c1= random(0,225);
    c2= random(0,222);
    c3= random(0,255);
    faceWide= random(100,150);
    faceHigh= random(100,150);
}


I was inspired to do a Spider-man vs Venom scene after seeing clips of them on YouTube. I wanted to use the variables to choreography some sort of fight scene. But due to the large amount of details, I simplified the designs of both characters and applied a changing variable on there arms to hint the “fight”.

Philip Gates – Project-02-Variable-Face

gates-face2

//initialize variables to be randomized
var faceWidth = 480;
var eyeSize = 240;
var eyeColorR = 19;
var eyeColorG = 175;
var eyeColorB = 26;
var noseSize = 350;
var stacheWidth = 3;

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

function draw() {

    background(255);

    //head
    fill(242,208,239);
    noStroke();
    ellipse(240,240,faceWidth,640);

    //eyes
    stroke (0);
    strokeWeight (1);
    fill(255);
    ellipse(144,240,eyeSize,eyeSize);
    ellipse(336,240,eyeSize,eyeSize);

    //iris
    fill(eyeColorR, eyeColorG, eyeColorB);
    noStroke();
    ellipse(144, 240, eyeSize / 2, eyeSize /2);
    ellipse(336, 240, eyeSize / 2, eyeSize /2);

    //pupils
    fill(0)
    noStroke();
    ellipse(144,240,eyeSize/5,eyeSize/5);
    ellipse(336,240,eyeSize/5,eyeSize/5);

    //nose
    fill(218,0,165);
    triangle (240,noseSize,216,425,264,425);

    //mustache
    stroke(40,17,0);
    strokeWeight(stacheWidth);
    line(80,441,80,466);
    line(90,444,90,469);
    line(100,447,100,472);
    line(110,450,110,475);
    line(120,453,120,478);
    line(130,454,130,480);
    line(140,456,140,482);
    line(150,458,150,484);
    line(160,459,160,485);
    line(170,460,170,486);
    line(180,461,180,487);
    line(190,462,190,488);
    line(200,463,200,489);
    line(210,463,210,489);
    line(220,463,220,489);
    line(230,463,230,489);
    line(240,463,240,489);
    line(250,463,250,489);
    line(260,463,260,489);
    line(270,463,270,489);
    line(280,463,280,489);
    line(290,462,290,488);
    line(300,461,300,487);
    line(310,460,310,486);
    line(320,459,320,485);
    line(330,458,330,484);
    line(340,456,340,482);
    line(350,454,350,480);
    line(360,453,360,478);
    line(370,450,370,475);
    line(380,447,380,472);
    line(390,444,390,469);
    line(400,441,400,466);

    //mouth
    noFill();
    stroke(218,0,165);
    strokeWeight(5);
    arc(240,345,576,310,0,PI);

    //hat
    fill(0);
    noStroke();
    arc(240,0,350,200,0,PI);
}

//change face dimensions when mouse is clicked
function mousePressed() {
    faceWidth = random(200,480);
    eyeSize = random(50, 288);
    eyeColorR = random(0,255);
    eyeColorG = random(0,255);
    eyeColorB = random(0,255);
    noseSize = random(300,450);
    stacheWidth = random(0,15);
}

I chose to continue working with my face project from last week. In doing so, I learned why hard-coding numbers can make things difficult down the line: when I changed the canvas size my face didn’t fit in the frame, and after changing that I needed to adjust quite a few numbers to make the proportions match on the facial features. In future I will plan to create more variables and do much less hard-coding of numbers.

Adam He Project 02 Variable Faces

sketch

/* Adam He
Section A
xiaotiah@andrew.cmu.edu
Project-02 */

// shape variables
var faceW = 280;
var faceH = 380;
var eyeSize = 50;
var mouthSize = 70;
var noseH = 70;
var noseW = 30;
// color variables
var mouthColor = 200;
var skinColor = 220;
var eyeColor = 80;


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

function draw() {
    background(220, 50, 120);
    noStroke();
    // hair
    fill(70,20,130);
    ellipse(width/2, height/2.5, faceW*1.2, faceH/2);
    // drawing face
    fill(skinColor, 180, 95);
    ellipse(width/2, height/2, faceW, faceH);
    // eye
    fill(240);
    ellipse(width / 2 - 0.2 * faceW, height / 2, eyeSize, eyeSize);
    ellipse(width / 2 + 0.2 * faceW, height / 2, eyeSize, eyeSize);
    // pupils
    fill(50, 60, eyeColor);
    ellipse(width / 2 - 0.2 * faceW, height / 2.1, eyeSize / 3, eyeSize / 3);
    ellipse(width / 2+ 0.2 * faceW, height / 2.1, eyeSize / 3, eyeSize / 3);
    // nose
    fill(skinColor, 20, 170);
    rect(width / 2 - noseW / 2, height / 1.8, noseW, noseH);
    // mouth
    fill(mouthColor, 20, 80);
    ellipse(width / 2, height / 2 + faceH / 2.5, mouthSize * 1.4, mouthSize);
}

function mousePressed() {
    faceW = random(200, 320);
    faceH = random(250, 400);
    eyeSize = random(30, 100);
    mouthSize = random(20, 100);
    skinColor = random(150, 220);
    eyeColor = random(20, 180);
    noseH = random(20,100);
    noseW = random(10, 40);
    mouthColor = random(100, 255);
}

This project was more interesting than the previous project because variable faces create an interactive platform between the developer and the viewers. A lot of interfaces are meant to produce an interlinked space between different people, and I am glad that I scripted something a little closer to that kind of program.

Erin Fuller – Looking Outwards 02

Screen Shot 2016-03-06 at 2.58.59 PM
People Viewing “KNBC”

Casey Reas is an American digital artist who uses programming to create artwork that is conceptual, procedural and minimal. The piece I am talking about “KNBC”, done in late 2015, is a continuously generated collage that distorts audio and video television signals. He used a tower located at his artist’s studio in Los Angeles to collect electromagnetic wave frequencies between 602-608 MHz. The signals are collected and used as variables and are output into a “stochastic” audiovisual stream, meaning the visuals have random probability distribution or pattern that might be able to be analyzed statistically not be precisely predicted.

I find this kind of work beautiful because there is a sense of logic underlying it. A lot of why people do not like modern art is because they think it is “random” or “meaningless”, and I appreciate how this new medium of generative art has something lying underneath it that the viewer may not see or understand, but it is there.

Screen Shot 2016-03-06 at 2.59.17 PM
“KNBC”, 2015

LO – 02 – Alexander Chen

In 1757, Johann Philipp Kirnberger wrote a piece based on the randomness of dice. This system, called Musikalisches Würfelspiel, used the values of dice in coordination with preassigned options to compose a piece. The result, “Der allezeit fertige Menuetten- und Polonaise Komponist,” is one of the earliest forms of this type of music.

I admire the fact that this type of generative art (music in this case) is not only something that’s relevant today but also something that’s been around for almost 300 years. Even though this is a very simple and arguably outdated, way of doing generative art, it still qualifies and obviously has stood the test of time.

The artist’s creativity still shines through this otherwise seemingly systematic way of writing music. This is because the preassigned options are still determined by the composer.

Helen Reynolds – Looking Outwards – 02

Nervous System: Floraform Sculptures (2014)

Floraform sculptures
Florescence Ornata 2

I think that these floraform pieces are really inspiring to me because they aim to instersect art, science, and technology. Artistic pieces inspired by the biomechanisms of growing plants and blooming flowers, these floraform sculptures are not only beautiful but also backed by research and almost feel like they’re alive. I hope to someday be able to intersect my varied interests in a fluid way, like Nervous System studio does here.

As for the algorithm itself, Nervous System states that creating these pieces was like “digital gardening”, where the “plants” are algorithms. I think it’s super cool that they were able to mimic organic growth with algorithms. I also think that the amount of thought that had to go into these pieces is crazy – lots of research had to have been done to understand exactly how plants grow, and even more had to go into effectively imitating it.

Check it out on Nervous System!

Jenna Kim (Jeeyoon Kim)- Looking Outwards-2

The intelligent beehive (in many different views)

The project, “Genesis of a Micronal Skin”, is a research project/ an installation project by AnneMarie Maes created to examine the idea of Intelligent Beehives through “thorough” research of microbial skin. The Guerilla Beehive is a device that senses the pollution of the current environment. Not only this device looks out for for bees’ wellbeing, but it also changes color depending on the situation of our environment. She was inspired from the idea that we as humans need to alter our lifestyles for the environment for sustainable future (which is a major topic discussed in my Design major). She used different resources such as 3D rendering of pollen grain, cellulose skin growcontainer with bacteria and yeast cells, and many more. This project is admirable because through this installation/ project, the AnneMarie Maes delivers a story about our environment to the audience. It’s also interesting how AnneMarie created a harmony between man made material and natural material. The algorithm that generated the work used “pattern recognition” to record the images captured by infrared camera when a membrane was being developed through microbial cellulose. Creator’s artistic sensibilities manifested in the algorithm because she used it to produce the outer skin in the form of a beehive and graphical rendering of microbial movements. Although she used her artistic sensibilities to create this installation, she could have improved on the form because it is difficult to tell if the form was intended to be a beehive.