HaeWanPark-LookingOutwards-7

YOU’RE NOT THE ONLY ONE WHO HAS TROUBLE PARKING IN NEW YORK CITY

The Sixth Poster of “Flocking Diplomat” Series

This is the last piece of six poster series named Flocking Diplomat representing Parking Violations by Diplomats in New York City between 1998 and 2005. Each different poster is represented same data but in each unique discipline allowing audiences to engage in a different perspective. The last piece was created by Christina Cannella who is a Digital Design Fellow in the Department of Drawings, Prints & Graphic Design at Cooper Hewitt, Smithsonian Design Museum. Each tick on this poster is marking a parking violation by a diplomat in NYC, 1998 – 2005. This was executed by the loop technique (I think it is what we have been learning in past few weeks) of programming that plotted 141,369 geo-coded data points. It is resulting in 16,355 unique locations and pointing out the United Nation which is the source of the diplomats. So, in this data visualization, viewers can see the hidden patterns behind the data. This poster has been exhibited at Cooper Hewitt, Smithsonian Design Museum.

YOU’RE NOT THE ONLY ONE WHO HAS TROUBLE PARKING IN NEW YORK CITY

 

HaeWanPark-LookingOutwards-6

Random Number Multiples by Marius Watz and Jer Thorp

Computer generated or software based art is usually played in a digital interface not executed in traditional craft or handwork. However, this ‘Random Number Multiple’ series are computer generated but screen-printed work. There are few series in ‘Random Number Multiple’. What I personally like is the ‘Arc’ series. Marius Watz described this series as “pseudo-random compositions of radial shapes, subtly distorted by a 3D surface that lends the image a strong focal point and sense of movement.” Actually, pseudo-randomness is not a real randomness. This randomness generated by a definite computer program to satisfy a statistical test. Even if it seems random but the composition of this series is actually generated by mathematical processes. I really admire this project because it combines traditional hand-craft method and software- or computer-based method together. I think it expands more possible ways of executing art expression.

The ‘Arc’ Series
The ‘Arc’ Series
The ‘Arc’ Series – Process of Screen Printing

Random Number Multiple Series

 

haewanp – Project 06 – AbstractClock

abstract clock

var h;
var m;
var s;

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

function draw() {
    background(231, 79, 62);
    Hour();
    Minute();
    Second();
}

function Hour() {
    h = hour();
    
    //convert to 12 hours
    if (h > 12 || h == 0) {
        h = abs(h - 12);
    }
    
    fill(18, 6, 99);
    textSize(240);
    textFont('Georgia');
    textStyle(BOLD);
    textAlign(RIGHT);
    text(nf(h, [2], [0]), 258 + 20 * h, 205); //hour
    fill(232, 204, 199);
    rect(0, 200, 20 * h + 250, height - 200);
    fill(18, 6, 99);
    rect(0, 200, 20 * h + 250, 20);    
}

function Minute() {
    m = minute();
    
    textSize(200);
    textFont('Georgia');
    textStyle(BOLD);
    textAlign(CENTER);
    text(nf(m, [2], [0]), 4.2*m + 130, 350); //minute
    rect(4.2*m, 340, width - 4.2*m, 20);
    fill(1, 70, 117);
    rect(4.2*m, 360, width - 4.2*m, 220);
}

function Second() {
    s = second();
    
    fill(18, 6, 99);
    textSize(100);
    textFont('Georgia');
    textStyle(BOLD);
    textAlign(CENTER);
    text(nf(s, [2], [0]),5.5*s + 90, 445); //second
    rect(5.5*s + 20, 440, width - 4.2*s, 20);
    fill(228, 227, 214);
    rect(5.5*s + 20, 460, width - 4.2*s, 20);
}


When I initially designed this clock, I used illustrator rather than a paper (you can see my sketch below). It was pretty much successful to execute code as I intended in the sketch. The difference from my initial sketch is that I added each different color block below each number to have a more interesting visualization. Also, in the overall process, it is important to consider how each different time element visually coordinates together. I made a hierarchy among the hour, minute and second based on its scale. In colorwise, I made a custom color palette at ‘khroma.co’ which is an AI color generating tool based on my preference of color. It generated a bunch of color palette for me then I pick one of the nicest one then apply the color palette to this project.

haewanp – Project 05 – WallPaper

Wall Paper

var x = 0;
var y = 0;

function setup() {
    createCanvas(480, 480);
    noStroke();
    rectMode(CENTER);
}

function draw() {
    background(240, 64, 66); //red background
    noLoop();
    pattern();
}

function pattern() {
    
    //blue circles
    for (x = 0; x <= width; x += 120) {
        for (y = 0; y <= height; y += 120) {
            fill(22, 68, 130);//blue
            ellipse(x - 60, y, 150, 150);
        }
    }
    
    //flower shape and green bar
    var i = 0;
    for (y = 30; y <= height + 30; y += 60) {
        i = i + 1;
        for (x = 60; x <= width + 60; x += 120) {
            if (i % 2 == 1) {
                
                //green bar
                fill(120, 200, 210);
                rect(x - 60, y - 30, 15, 50);
                
                //flower
                
                //yellow rectangle 
                fill(241, 235, 82);
                rect(x, y + 30, 70, 70);
                //white rectangle at the center of flower
                fill(255);
                rect(x, y + 30, 30, 30);
                //yellow petal of flower
                fill(241, 235, 82);
                arc(x + 17, y + 12, 50, 50, PI + QUARTER_PI, QUARTER_PI); //upper right
                arc(x - 17, y + 48, 50, 50, QUARTER_PI, PI + QUARTER_PI); //lower left
                arc(x + 17, y + 48, 50, 50, TWO_PI - QUARTER_PI, HALF_PI + QUARTER_PI); //lower right
                arc(x - 17, y + 12, 50, 50, HALF_PI + QUARTER_PI, TWO_PI - QUARTER_PI); //upper left
                //red circle at the center of flower
                fill(240, 64, 66); //red
                ellipse(x, y + 30, 20, 20);
                
            }   
        }     
    }
    
}


It is not too difficult and complex to code p5.js in this project. But, it is necessary to consider and organize compositions and color of graphic elements. It would be nicer and more interesting if this project is not confined in a static condition.

HaeWanPark-LookingOutwards-5

Rainbow paper Series By Machineast, 2015

Machineast is a design studio consisting of two designers, Rezaliando and Fizah Rahim. Most of their works are 3D computer graphics. Even though this studio has provided visual solutions to clients, these two designers have also created several personal driven works as artists. ‘Rainbow Paper Series’ is also a project driven by themselves and inspired by their childhood experiences. During the childhood, they both have fascinated by holographic colors. When they have grown up in the 80’s, holographic cartoon and toys were so popular. After grown up, they found the way to express their fascination and nostalgia toward holographic colors in their 3D artwork. The shimmering and shiny surfaces characterized their childhood and give honor to the 80’s era of a hologram. In my opinion, the combination of shiny effects on surfaces and holographic bright colors created interesting visual. This work is nice artistic expression pieces.

Rainbow Paper Series, Machineast
Rainbow Paper Series, Machineast

Rainbow Paper Link

haewanp – Project 04 – String Art

String Art

//Hae Wan Park
//15104-A
//haewanp@andrew.cmu.edu
//Project-04-StringArt

//radius of imaginary circle that its boundary contains X, Y coordinate of beginning or ending point of lines
//radius of some ellipses
var r1 = 110; 
var r2 = 90;
var r3 = 55;
var r4 = 40;

//X, Y coordinate of beginning or ending point of lines
var x1;
var y1;
var x2;
var y2;
var x3;
var y3;

function setup() {
    createCanvas(400, 300);
}

function draw() {
    background(255);
    translate(width/2, height/2);
    
    //circle yellow 1
    noStroke();
    fill(255, 220, 100);
    ellipse(0, 0, 2*r1, 2*r1);
    //circle yellow 2
    fill(255, 240, 100);
    ellipse(0, 0, 210 + r4/3, 210 + r4/3);
    //circle green
    fill(211, 229, 212);
    ellipse(0, 0, 180, 180);
    //circle blue
    fill(0, 50, 130);
    ellipse(0, 0, r4*2, r4*2);
    
    angleMode(DEGREES);
    strokeWeight(1);
    
    //along the boundary of imaginary circle, lines are created in each 5 degree
    for (var a = 0; a < 360; a = a + 5) {
        x1 = cos(a) * r1;
        y1 = sin(a) * r1;
        x3 = cos(a) * r3;
        y3 = sin(a) * r3;
        
        stroke(242, 109, 98);
        line(x1, y1, -cos(a - 110) * r1, -sin(a - 110) * r1);
        line(x3, y3, -cos(a - 90) * r4, -sin(a - 90) * r4);
    }
    
    //along the boundary of imaginary circle, lines are created in each 10 degree
    for (a = 0; a < 360; a = a + 10) {
        x2 = cos(a) * r2;
        y2 = sin(a) * r2;
        x3 = cos(a) * r3;
        y3 = sin(a) * r3;

        stroke(255, 240, 100);
        line(x2, y2, x3, y3);
        stroke(0, 50, 130);
        line(x3, y3, -cos(a - 80) * r4, -sin(a - 80) * r4); 
    } 
    
    //change size of radius based on position of mouse
    r4 = map(mouseY, 0, 300, 30, 80); 
    r1 = map(mouseX, 0, 400, 70, 170);

    //if press mouse radius increases then release radius decrease
    if (mouseIsPressed){
        r2 = r2 + 10;
    } else {
        if (r2 > 90) {
            r2 = r2 - 5;
        }
    }  
    
    //blue lines around canvas
    stroke(0, 50, 130);
    for (var i = -30; i < 30; i++) {
        line(-150, i*17, i*17 - 120, 150);
        line(150, i*17, i*17 + 120, -150);
        line(-150, i*17, -i*17 - 120, -150);
        line(150, -i*17, i*17 + 120, 150);
    }

}

The process was a bunch of geometry to calculate the X, Y coordinate of lines which are created along imaginary circles. I created the animation based on the mouse behaviors. Especially, I like that raylike lines are stretched out when the mouse is pressed.

HaeWanPark-LookingOutwards-4

Touch Pianist – Magical Piano In Your Web Browser, 2015

Touch Pianist is a musical performing program created by Batuhan Bozkurt who is a Turkish musician and sound engineer. You can perform a variety of timeless classical piano music in computer screen with keyboard or touchscreen. For enjoying this performing exercise, you can either access to a website or download the app (both Android and iOS available). He used HTML5 with WebGL and WebAudio which allow presenting an interactive visualization of popular classical piano music pieces. When Touch Pianist was released, it became so popular. Even it was played more than a million times in just two weeks. I think that fact actually can be a proof that this is pretty interesting and fun to play with. I tried to play on my computer. Its graphics nicely get along with the music. I like that he made a program entertaining many people with performing classical music that can be easily considered as not very interesting and even boring especially in our generation. So, I guess this program can be also utilized to renew the mindset toward classical music which value is often overlooked.

Here is video to show performing on iPad

touchpianist.com

 

HaeWanPark-LookingOutwards-3

3D Print Gown by Michael Schmidt and Francis Bitonti, 2013

3D printed gown by Michael Schmidt and Francis Bitonti, modeled by Dita Von Teese

This is the first fully 3D printed gown in the world. This gown is designed by Michael Schmidt and 3D modeled by Francis Bitonti. Michael Schmidt was inspired by the well-known Fibonacci Golden Ratio Sequence which mathematically measures the ratio to create the ideals of beauty. It has been proven in many cases, especially in nature. He applied this golden ratio of beauty to create a beautiful and sensual form of a gown. This gown was 3D printed in Nylon and consists of 17 pieces that can be assembled. Its customized design made a perfect fit to a model’s body.

In my opinion, this project displays the future of clothing. It could be the very beginning step of the way manufacture garments in our future. So, if clothing can be printed, there would be more variety of design methods and customized to make a perfect fit for specific customers. I really admire their effort and attempt to create clothes in 3D print that could be a future method to produce our clothes, and also still to keep aesthetic aspects of clothing.

Dita Von Teese Flaunts Fibonacci-Inspired, 3-D Printed Gown

 

 

haewanp – Project 03 – Dynamic Drawing

Dynamic Drawing

//Hae Wan Park
//15104-A
//haewanp@andrew.cmu.edu
//Project-03-DynamicDrawing

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

}

function draw() {
    
    var Top = 480;
    var bottom = Top + 180;
    var x = 110;
    var y = 50;
    var c1 = color(0);
    var c2 = color(0);

    var mX = max(min(mouseX, 480), 0);
    var mY = max(min(mouseY, 640), 0);
    
    var mX_L = max(min(mouseX, 240), 0); // when mouse is on left side
    var mX_R = max(min(mouseX, 480), 240); // when mouse is on right side
    
    
    if (mY > height/2) {
        c1 = color(255); //change color from black to white
        strokeWeight(20);
    }
    
    background(c1);
    
    //Blue Stripe Pattern when mouse hovers below than half of height
    for (var r = 0; r < 40; r += 1) {
        
        if (r % 2 == 0) {
            
            if (mY > height/2) {
                c2 = color(0, 41, 149); //change color from black to blue
            } 
            stroke(c2);     
        } 
        line(-50, height/10 * r - 560 + mY, width + 50, height/10 * r - 260 - mY);
    } 
    
    //outline of cube 
    strokeJoin(ROUND);
    strokeWeight(5);
    stroke(255);
    
    //outline of cube disappears when mouse hovers below than half of height
    if (mY > height/2) {
        strokeWeight(0);
    }
    
    
    for (i = -4; i < 4; i+=1) {
        
    fill(237, 10, 124); // Magenta, Top Side of Cube
    quad(mX, Top + 2*y + (mX_R - mX_L)/10, 
    mX_L - x, Top + y, 
    width/2, Top - (mX_R - mX_L)/10, 
    mX_R + x, Top + y);

    fill(14, 198, 184);  // Green, Left Side of Cube
    quad(mX, Top + 2*y + (mX_R - mX_L)/10, 
    mX_L - x, Top + y, 
    mX_L - x, bottom, 
    mX, bottom + y + (mX_R - mX_L)/10);

    fill(255, 241, 0); // yellow, Right Side of Cube
    quad(mX, Top + 2*y + (mX_R - mX_L)/10, 
    mX_R + x, Top + y, 
    mX_R + x, bottom, 
    mX, bottom + y + (mX_R - mX_L)/10);
        
    Top = Top - 210 + mY/5.5;
    bottom = bottom - 210 + mY/5.5;
    }

}


It was a process to consider the relationship among graphic elements and explore the way execute in coding. The more I learn about p5.js the more challenging project comes. But, actually, that means also I can create more complex and dynamic graphics in p5.js.

haewanp – Project 02 – Variable Face

Variable Face

//Hae Wan Park
//15104-A
//haewanp@andrew.cmu.edu
//Project-02-variable-Face

var eyeSize = 15;
var x = 10;
var y = 9;
var t = 5;
var faceY = 5;
var faceX = 3;
var color1 = 0;
var color2 = 150;
var color3 = 240;
var eyeX = 240;
var eyeY = 310;
var n = 10;
var v = 0;


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

function draw() {
    background(252);
    
    //hair
    noStroke();
    fill(255 - color1, 235, 70 + color1);
    beginShape();
    curveVertex(170, 220);
    curveVertex(width / 2 - (faceX+9)*x, 210);
    curveVertex(170, height / 2 - 3*y*faceY - 7*faceY); //
    curveVertex(230, height / 2 - 3*y*faceY - 7*faceY); //
    curveVertex(width / 2 + (faceX+5)*x, height / 2 - 3*y*faceY - 7*faceY);
    curveVertex(width / 2 + (faceX+6.5)*x, 195);
    curveVertex(305, 230);
    curveVertex(270, 215);
    curveVertex(265, height / 2 - 20*faceY);
    curveVertex(285, height / 2 - 14*faceY);
    curveVertex(240, height / 2 - 12*faceY);
    curveVertex(220, height / 2 - 18*faceY);
    curveVertex(210, 210);
    curveVertex(200, 230);
    curveVertex(180, 235);
    curveVertex(170, 220);
    curveVertex(width / 2 - (faceX+9)*x, 210);
    curveVertex(170, height / 2 - 3*y*faceY - 7*faceY);
    endShape();
    
    //cheek
    noStroke();
    fill(255 - color1/2, color2 - 50, 210 - color1);
    ellipse(width/2 + 70, 350, 8*x, 8*x);
    ellipse(width/2 - 80, 350, 8*x, 8*x);
    
    //face
    noFill();
    stroke(color1, color2 - 40, 255 - color1);
    strokeWeight(4.5);
    curveTightness(0);
    beginShape();
    curveVertex(width / 2 - (faceX+5)*x, height / 2 - (faceY+8)*y);
    curveVertex(width / 2 - (faceX+1)*x, height / 2 - 3.2*y*faceY); 
    curveVertex(width / 2 - (faceX-5)*x, height / 2 - 3.2*y*faceY); //
    curveVertex(width / 2 - (faceX-10.5)*x, height / 2 - 2.5*y*faceY);
    curveVertex(width / 2 + (faceX+7)*x, height / 2 - faceY*y);
    curveVertex(width / 2 + (faceX+5)*x, height / 2 + 9*y);
    curveVertex(width / 2 + (faceX-2)*x, height / 2 + 15*y);
    curveVertex(width / 2 - (faceX+4)*x, height / 2 + 12*y);
    curveVertex(width / 2 - (faceX+7)*x, height / 2 + faceY*y);
    curveVertex(width / 2 - (faceX+8)*x, height / 2 - faceY*y);
    curveVertex(width / 2 - (faceX+6)*x, height / 2 - (faceY+8)*y);
    curveVertex(width / 2 - (faceX+1)*x, height / 2 - 3.2*y*faceY);
    curveVertex(width / 2 - (faceX-5)*x, height / 2 - 3.2*y*faceY);
    endShape();
    
    //ear
    ellipse(width / 2 - (faceX+8.5)*x, height / 2 - (faceY-3)*y, 30, 40);
    ellipse(width / 2 + (faceX+7)*x, height / 2 - (faceY-3)*y, 30, 40);
    
    //eye
    ellipse(205 - faceY, eyeY - 35 + eyeSize/2, eyeSize, eyeSize);
    ellipse(275 + faceY, eyeY - 35 + eyeSize/2, eyeSize, eyeSize);

    stroke(255, color2 - 55, color2 - 40);
    
    curve(175 + faceY*(faceX/8), eyeY + 60 + 2*faceY, 
          175 + faceY*(faceX/8), eyeY - 40 + 2*faceY, 
          225 - faceY, eyeY - 40 + 2*faceY, 
          225 - faceY, eyeY + 60 + 2*faceY);
    curve(255 + faceY, eyeY + 60 + 2*faceY, 
          255 + faceY, eyeY - 40 + 2*faceY, 
          305 - faceY*(faceX/8), eyeY - 40 + 2*faceY, 
          305 - faceY*(faceX/8), eyeY + 60 + 2*faceY);
    
    //eyebrow
    line(width/2 - 55, eyeY - 70 + 7*v, width/2 - 25, eyeY - 60 + v);
    line(width/2 + 55, eyeY - 70 + 7*v, width/2 + 25, eyeY - 60 + v);
    
    
    //nose
    line(width / 2, 325, 240, 305);
    line(width / 2, 325, width / 2 - 2*n, 337);
    line(width / 2 - 2*n, 337, width / 2, 351);
    
    //mouth
    strokeJoin(ROUND);
    beginShape();
    vertex(width / 2 + 5*faceX, 390);
    vertex(width / 2 - 5*faceX - 6, 390);
    vertex(width / 2 - 3*faceX, 380);
    vertex(width / 2, 385);
    vertex(width / 2 + 10, 380);
    vertex(width / 2 + 5*faceX, 390);
    vertex(width / 2 - 3, 405);
    vertex(width / 2 - 5*faceX - 6, 390);
    endShape();
    
}

function mousePressed() {
    eyeSize = random(10, 25);
    eyeX = random (220, 250);
    eyeY = random (300, 320);
    x = random(8,12);
    y = random(7,10);
    t = random(7,20);
    faceY = random(5,7);
    faceX = random(3,5);
    color1 = random(0, 85);
    color2 = random(85, 170);
    color3 = random(170, 255);
    n = random(6,12);
    v = random(-2,4);
}

It is fun to watch the face keeps changing. It was not easy to make everything in right proportion. Also, I sketched on illustrator then tried to figure out how to draw with p5.js. It has to be simplified even though I thought my sketch was not so complicated. Maybe need more practice to control p5.js.

Variation of Faces
Original Sketch by Adobe Illustrator