Project 4: String Art

sketch

var dx1;
var dy1;
var dx2;
var dy2;
var dx3;
var dy3;
var dx4;
var dy4;
var dx5;
var dy5;
var dx6;
var dy6;
var dx7;
var dy7;
var dx8;
var dy8;
var dx9;
var dy9;
var dx10;
var dy10;
var dx11;
var dy11;
var dx12;
var dy12;
var dx13;
var dy13;
var dx14;
var dy14;
var dx15;
var dy15;
var dx16;
var dy16;
var dx17;
var dy17;
var dx18;
var dy18;
var numLines = 30;


function setup() {
    createCanvas(400, 400);
    background("yellow");

    //white middle strings
    dx1 = (180-50)/numLines;
    dy1 = (250-150)/numLines;
    dx2 = (270-340)/numLines;
    dy2 = (200-100)/numLines;
    
    //left white strings
    dx3 = (150-110)/numLines;
    dy3 = (150-100)/numLines;
    dx4 = (260-300)/numLines;
    dy4 = (140-50)/numLines;

    //middle white strings
    dx5 = (150-50)/numLines;
    dy5 = (260-150)/numLines;
    dx6 = (140-90)/numLines;
    dy6 = (30-150)/numLines;

    //upper black strings
    dx7 = (230-100)/numLines;
    dy7 = (280-350)/numLines;
    dx8 = (350-150)/numLines;
    dy8 = (180-280)/numLines;

    //loweer black strings
    dx9 = (320-200)/numLines;
    dy9 = (250-50)/numLines;
    dx10 = (200-250)/numLines;
    dy10 = (300-30)/numLines;

    //left blue strings
    dx11 = (250-150)/numLines;
    dy11 = (80-200)/numLines;
    dx12 = (120-100)/numLines;
    dy12 = (20-250)/numLines;

    //middle blue strings
    dx13 = (240-150)/numLines;
    dy13 = (80-200)/numLines;
    dx14 = (220-100)/numLines;
    dy14 = (120-250)/numLines;

    //right blue strings
    dx15 = (240-150)/numLines;
    dy15 = (80-200)/numLines;
    dx16 = (220-100)/numLines;
    dy16 = (120-250)/numLines;

}

function draw() {
    var x1 = 50;
    var y1 = 150;

    var x2 = 270;
    var y2 = 200;

    var x3 = 50;
    var y3 = 150;

    var x4 = 20;
    var y4 = 150;

    var x5 = 100;
    var y5 = 180;

    var x6 = 90;
    var y6 = 350;

    var x7 = 300
    var y7 = 250;

    var x8 = 250;
    var y8 = 180;

    var x9 = 320;
    var y9 = 250;

    var x10 = 380;
    var y10 = 80;

    var x11 = 150;
    var y11 = 200;

    var x12 = 100;
    var y12 = 250;

    var x13 = 250;
    var y13 = 200;

    var x14 = 80;
    var y14 = 250;

    var x15 = 220;
    var y15 = 200;

    var x16 = 180;
    var y16 = 250;

    for (var i = 0; i <= numLines; i += 1) {
        stroke("white")
        line(x1, y1, x2, y2);
        x1 += dx1;
        y1 += dy1;
        x2 -= dx2;
        y2 -= dy2;
        line(x3, y3, x4, y4);
        x3 -= dx3;
        y3 -= dx3;
        x4 += dx4;
        y4 += dy4;
        line(x5, y5, x6, y6);
        x5 -= dx5;
        y5 -= dx5;
        x6 += dx6;
        y6 += dy6;

        stroke("black")
        line(x7, y7, x8, y8);
        x7 -= dx7;
        y7 -= dx7;
        x8 += dx8;
        y8 += dy8;
        line(x9, y9, x10, y10);
        x9 -= dx9;
        y9 -= dx9;
        x10 += dx10;
        y10 += dy10;

        stroke("blue")
        line(x11, y11, x12, y12);
        x11 += dx11;
        y11 += dx11;
        x12 += dx12;
        y12+= dy12;

        line(x13, y13, x14, y14);
        x13 += dx13;
        y13 += dx13;
        x14 += dx14;
        y14+= dy14;

        line(x15, y15, x16, y16);
        x15 += dx15;
        y15 += dx15;
        x16 += dx16;
        y16+= dy16;



    }
    noLoop();
}

The difficult part of this project was understanding what numbers to change in order to get the shape that I wanted and why it changed, but when I did, I just kept adding to my canvas and adjusting the numbers to get the design I wanted.

LO: Sound Art

Video of Artwork

Artist: Abe Pazos and Mei-Fang Liau

SketchDaily0018, created in 2017

This sound art piece created by Abe Pazos and Mei-Fang Liau interests me because through the use of light, movement, and line weight, the visualization of the sounds almost creates a three dimensional space that captures viewers. I think it’s so interesting how these artists were able to create a visualization of a sound that is so fitting for it. In this piece, I notice that whenever there is a vibration in the sound, the lines begin to flash. How I imagine them doing this is somehow creating a link between the vibrato to correspond to the lights flashing. This element adds a more significant and unique meaning to the art because those patterns can only be displayed when it is played with this sound.

Project 3: Dynamic Drawing

sketch

var angle = 0
function setup() {
    createCanvas(450, 600);
    background(0);
}

function draw() {
    if (mouseY < height / 2){ //determines color based on mouse's vertical side of canvas
        background ("black")
    }
    else if (mouseY > height / 2) {
        background (135, 188, 222)
    }
    //if (mouse X < width / 2) {
      //background (255, 190, 11)

    noStroke();
    fill("white") // circle moves up and down
    ellipse(225, mouseY, mouseY, mouseY)


    ellipse(mouseX, 300, mouseX, 10) // ellipses moves side to side and gets longer
    ellipse(mouseX, 20, mouseX, 10)
    ellipse(mouseX, 580, mouseX, 10)
    ellipse(mouseX, 40, mouseX, 10)
    ellipse(mouseX, 560, mouseX, 10)
    ellipse(mouseX, 60, mouseX, 10)
    ellipse(mouseX, 540, mouseX, 10)
    ellipse(mouseX, 320, mouseX, 10)
    ellipse(mouseX, 280 , mouseX, 10)
    ellipse(mouseX, 80 , mouseX, 10)
    ellipse(mouseX, 100 , mouseX, 10)
    ellipse(mouseX, 120, mouseX, 10)
    ellipse(mouseX, 140 , mouseX, 10)
    ellipse(mouseX, 160 , mouseX, 10)
    ellipse(mouseX, 180 , mouseX, 10)
    ellipse(mouseX, 200 , mouseX, 10)
    ellipse(mouseX, 220 , mouseX, 10)
    ellipse(mouseX, 240 , mouseX, 10)
    ellipse(mouseX, 260, mouseX, 10)
    ellipse(mouseX, 280 , mouseX, 10)
    ellipse(mouseX, 340 , mouseX, 10)
    ellipse(mouseX, 360 , mouseX, 10)
    ellipse(mouseX, 380 , mouseX, 10)
    ellipse(mouseX, 400 , mouseX, 10)
    ellipse(mouseX, 420 , mouseX, 10)
    ellipse(mouseX, 440, mouseX, 10)
    ellipse(mouseX, 460 , mouseX, 10)
    ellipse(mouseX, 480 , mouseX, 10)
    ellipse(mouseX, 500 , mouseX, 10)
    ellipse(mouseX, 520 , mouseX, 10)

    push() // circle rotates around point
    translate(225, 300);
    fill(255,190,11)
    rotate(radians(min(mouseX, 200)));
    ellipse(100, 100, 40, 40);
    angle += 2
    if (mouseY)
    pop()
}

This project was hard because it was more open ended than the previous one’s and I had a difficult time understanding what to create and how to create it.

LO: Computational Fabrication

This digital fabrication piece photographed by Theresa Burger not only fascinates me because of its detail and interesting form, but on a broader scale, I really like how the digital fabrication is used as a piece of jewelry and accessory. I think that creating something with the purpose of it being worn and displayed, especially something that is 3D printed, is difficult because the artifact exists for many purposes and is functional, which I admire because of my interests in product design. Like any piece of art, these earrings are stylized and it is clear that the artist has a certain aesthetic. The use of color is very minimal and the form is repetitive in nature which speaks to the artists’ taste for simplicity and minimalism. I think that these earrings follow the rules of a parametric object in that values of a variable are changed and produce a generative design.

Artist: Theresa Burger
Year: 2011
Link: https://www.flickr.com/photos/tweebi/5679733977/in/photostream

Digital Fabrication, Theresa Burger

Project 2: Variable Faces

generative faces

var faceWidth = 135;
var faceHeight = 150;
var eyeSize = 8;
var colG = 90
var colB = 40
var colR = 150
var earWidth = 19
var earHeight = 20
var hairColorR = 10
var hairColorG = 10
var hairColorB = 10
var hairHeight = 10
var hairCurve = 10
var hairWidth = 10
var noseWidth = 10
var noseHeight = 10
var noseColorR = 10
var noseColorG = 10
var noseColorB = 10
var mouthWidth = 10
var mouthHeight = 10
 
function setup() {
    createCanvas(480, 640);
}
 
function draw() {
    background(241,255,250);
    noStroke();

    fill(hairColorR, hairColorG, hairColorB) // hair
    ellipse(width / 2 , height / 2 - 40, hairWidth, hairHeight,)

    fill (colR, colG, colB)
    ellipse(width / 2 - 50, height / 2, earWidth, earHeight); // left ear

    fill (colR, colG, colB)
    ellipse(width / 2 + 50, height / 2, earWidth, earHeight); // left ear

    fill(colR, colG, colB)
    ellipse(width / 2, height / 2, faceWidth,  faceHeight); // face

    fill(hairColorR, hairColorG, hairColorB) // hair and face connector
    rect(200,255,75,25)

    fill(noseColorR, noseColorG, noseColorB) // nose
    ellipse(width / 2  , height / 2 + 10, noseWidth, noseHeight)

    fill (0) // eyes
    var eyeLeft = width / 2 - faceWidth * 0.25;
    var eyeRight = width / 2 + faceWidth * 0.25;
    ellipse(eyeLeft, height / 2, eyeSize, eyeSize);
    ellipse(eyeRight, height / 2, eyeSize, eyeSize);

    fill(0) //mouth
    ellipse(width / 2, height / 2 + 30, mouthWidth, mouthHeight)

    fill(colR, colG, colB) //mouth 2
    rect(210,335,60,15)

}

function mousePressed() {
    faceWidth = random(80,100);
    faceHeight = random(90,120);
    eyeSize = random(10, 20);
    colG = random(0,256);
    colR = random (0,256);
    colB = random(0,256);
    earWidth = random(28,30);
    earHeight = random(20,35);
    hairColorR = random(0,200);
    hairColorG = random(0,166);
    hairColorB = random(10,250);
    hairHeight = random(80,100);
    hairWidth = random(100,200);
    noseColorR = random(4,256);
    noseColorG = random(10,56);
    noseColorB = random(0,200);
    noseWidth = random(8,10);
    noseHeight = random(2,8);
    mouthWidth = random(20,30);
    mouthHeight = random(10,18);
}

It was quite a challenge trying to understand how to change certain features of the face while making everything connected at the same time and also thinking about how to randomize color was also challenging.

LO: Generative Art

This piece by Anders Hoff mimics the fracturing patterns that occur in brittle materials like glass or ceramic. The process by which this piece was created was by randomly creating new fractures from the tip of fractures that are already present. Without looking at the code, I think that Hoff probably made sure that the line of the new fracture started where the previous line ended but in a random direction and at a random length. I think that this piece is really interesting because it has a deeper meaning of fractures in materials and in social infrastructures and viewers could make up their own conclusions and theories on what the piece means rather than it being obvious and upfront. This piece was part of a larger collection that explores how simple algorithms and rules can have wildly complex and intricate results and I think that using generative art and coding to explore this idea is really unique and intelligent.

Artwork

Artist: Anders Hoff

Year: 2014

Project 1: My Self Portrait

selfportrait

function setup() {
    createCanvas(500, 600);
    background(234,224,213);
    
}

function draw() {
    noStroke();

    fill(104,131,186)
    ellipse(250,300,400,400)

    fill(34,51,59)
    rect(60,400,380,400,170) // shirt

    fill(228, 194, 149)
    ellipse(250,400,120,100) //neck 1

    fill(228, 194, 149)
    rect(190,300,120,100) //neck 2

    fill(255,219,172)
    ellipse(250,280,180,250) //face

    fill(0)
    ellipse(250,190,200,110) // hair bottom

    fill(0)
    ellipse(320,190,80,90) //right hair

    fill(0)
    ellipse(165,230,40,60) //hair

    fill(0)
    ellipse(338,220,40,60) //hair

    fill(0)
    rect(150,220,30,85) //sideburn left

    fill(0)
    rect(320,200,30,80) //sideburn right

    fill(0)
    ellipse(165,200,50,70) // hair and sideburn connection

    fill(255,219,172)
    ellipse(160,300,45,70) //left ear

    fill(255,219,172)
    ellipse(340,300,45,70) //right ear

    fill(217,164,144)
    ellipse(340,300,35,50) //inner ear R

    fill(255,219,172)
    ellipse(338,303,35,50) //inner ear 2 R

    fill(217,164,144) 
    ellipse(160,300,35,50) //inner ear L

    fill(255,219,172)
    ellipse(162,302,35,48) //inner ear 2 L

    fill(255,219,172)
    ellipse(155,308,25,48) //inner ear 2 L

    fill(0)
    rect(195,270,34,10,10) // left eyebrow

    fill(0)
    rect(273,270,34,10,10) // right eyebrow

    fill(0)
    ellipse(213,297,14,14) //left eye

    fill(0)
    ellipse(290,297,14,14) //right eye

    fill(255)
    ellipse(250,345,80,70) // white smile

    fill(255,219,172)
    rect(200,305,100,50) //smile rectangle

    fill(203,168,123)
    ellipse(250,325,30,25) // nose

    fill(255,219,172)
    ellipse(250,320,30,25) //nose
    
    fill(254,212,208,200)
    ellipse(195,330,40,40)

    fill(254,212,208,200)
    ellipse(305,330,40,40)

}

The most challenging part about this project was creating the hair because that was the most unsymmetrical part and I wanted it to not just be one shape so I had to think about the shapes I wanted to use to create a “full” look to my hair.

LO: My Inspiration

The project created by Wang really intrigues me because it changed the way I viewed computation and typography. In the past, posters that had typography were first hand drawn and then with new technologies, the letterpress became involved and I think that it is really interesting how artists and designers are beginning to use code as a way to create new and interesting designs. I believe that the poster designs were created using a free graphical library built for the context of the visual arts so the designer most likely did not have to develop their own software, but had the ability to use an application that is built for the purpose of visual artists to learn the fundamentals of programming.

Link to artwork

Artwork by Wang