juyeonk-project-09

sketch

//Claire Koh
//Section E
//juyeonk@andrew.cmu.edu
//Project-09


var balls = []; // An array that will store the little balls that make up the portrait


// Loads the image
function preload() {
    var myImageURL = "https://i.imgur.com/AOyeLOo.jpg";
    underlyingImage = loadImage(myImageURL);
}


function setup() {
    createCanvas(480, 480);
    background(0);
    underlyingImage.loadPixels(); // Loads the pixel data of the image
}



// Determines the properties of the balls
function makeballs() {
    var ix = constrain(floor(this.x), 0, width-1);
    var iy = constrain(floor(this.y), 0, height-1);
    var theColorAtLocationXY = underlyingImage.get(this.x, this.y); //gets the color value of the image at (x,y)
    
    fill(theColorAtLocationXY) // Fills the balls with the color of the image at (x,y)
    noStroke();
    ellipse(this.x, this.y, this.ballsize); // Draws the ellipse at (x,y) with the width and the height dimension of 'ballsize' which is a random number between 2 and 8
}



// Makes the ball move
function ballspeed() {
    this.y += this.dy; // MouseY will be later assigned as 'y'
}



// Sets up the function that returns the properties of the object p, which contains information like the coordinate point of x, y, dy, a function that determines the speed of the ball, a function that creates balls, and the size of the ball
function drawPortrait(placeholderx, placeholdery, placeholderdy) {
    p = {x: placeholderx, 
         y: placeholdery,
         dy: placeholderdy,
         speed: ballspeed,
         balls: makeballs,
         ballsize : random(2,8)
        }
    return p;
}



function draw() {
    newBalls = []; // Creates an empty array that will store the values of the newly-created balls
    for (var i = 0; i < balls.length; i++) { 
        var p = balls[i];
        p.speed(); //returns the function speed() which makes the balls move
        p.balls(); //returns the function balls() which assigns the balls their properties
        newBalls.push(p); 
    }
    balls = newBalls;
}


// When the mouse is moved it replaces the placeholderx placeholdery and placeholderdy values with mouseX, mouseY and random(-20,20) and make the drawPortrait function actually happen and to be stored in the newball array
function mouseMoved() {
        var newball = drawPortrait(mouseX, mouseY, random(-20, 20));
        balls.push(newball);
        x += random(x-3, x+3);
}

For this project I wanted to make the portrait appear as if it is being drawn by bunch of rain droplets. I tried to take a break from using the function-based operation and and use the object-based operation for once. Overall I think this project was a good opportunity for me to break down how the object-based operation works and to actually learn how to use it.

Initially I tried to make the little rain droplets to drop from the sky and to collect at the bottom without overlapping each other but I legitimately could not figure out how to make that happen so I just made the little droplets to crawl up or down at a constant speed and go beyond the canvas.

^ Original sketch

^

^ While it’s being drawn

^ Almost done

 

**Credit to Grace Hou for letting me use her picture!!**

ghou-Project-09-Portrait

sketch

//Grace Wanying Hou
//15-104 Section D
//ghou@andrew.cmu.edu
//Project 09

//global variables
var sw = [];
var a = 0;
var r = 2;
var rx = [];
var ry = [];

function preload(){
    var imageurl = "https://i.imgur.com/S483jxr.jpg";
    dp = loadImage(imageurl);
}

function setup(){
    createCanvas(380,300);
    dp.loadPixels();
    background(240,245,250);
    for (var i=0; i<10; i++){ //randomizing where spirals are
        rx[i] = random(380);
        ry[i] = random(300);
        sw[i] = random(2,8);
    }
}

function draw(){
    noStroke();
    a += 0.1;
    r += 0.1;
//setting up spirals 
    var x = rx[0] + r * -cos(a);
    var y = ry[0] + r * sin(a);
    var pointcolour = dp.get(floor(x),floor(y));
    fill(pointcolour);
    ellipse(x,y,sw[0]);
    
    var x1 = rx[1] + r * -cos(a);
    var y1 = ry[1] + r * sin(a);
    var pointcolour1 = dp.get(floor(x1),floor(y1));
    fill(pointcolour1);
    ellipse(x1,y1,sw[1]);
    
    var x2 = rx[2] + r * -cos(a);
    var y2 = ry[2] + r * sin(a);
    var pointcolour2 = dp.get(floor(x2),floor(y2));
    fill(pointcolour2);
    ellipse(x2,y2,sw[2]);

    var x3 = rx[3] + r * -cos(a);
    var y3 = ry[3] + r * sin(a);
    var pointcolour3 = dp.get(floor(x3),floor(y3));
    fill(pointcolour3);
    ellipse(x3,y3,sw[3]);
    
    var x4 = rx[4] + r * -cos(a);
    var y4 = ry[4] + r * sin(a);
    var pointcolour4 = dp.get(floor(x4),floor(y4));
    fill(pointcolour4);
    ellipse(x4,y4,sw[4]);
    
    var x5 = rx[5] + r * cos(a);
    var y5 = ry[5] + r * sin(a);
    var pointcolour5 = dp.get(floor(x5),floor(y5));
    fill(pointcolour5);
    ellipse(x5,y5,sw[5]);

    var x6 = rx[6] + r * cos(a);
    var y6 = ry[6] + r * sin(a);
    var pointcolour6 = dp.get(floor(x6),floor(y6));
    fill(pointcolour6);
    ellipse(x6,y6,sw[6]);
    
    var x7 = rx[7] + r * cos(a);
    var y7 = ry[7] + r * sin(a);
    var pointcolour7 = dp.get(floor(x7),floor(y7));
    fill(pointcolour7);
    ellipse(x7,y7,sw[7]);
    
    var x8 = rx[8] + r * cos(a);
    var y8 = ry[8] + r * sin(a);
    var pointcolour8 = dp.get(floor(x8),floor(y8));
    fill(pointcolour8);
    ellipse(x8,y8,sw[8]);
    
    var x9 = rx[9] + r * cos(a);
    var y9 = ry[9] + r * sin(a);
    var pointcolour9 = dp.get(floor(x9),floor(y9));
    fill(pointcolour9);
    ellipse(x9,y9,sw[9]);
    
}

I was a little inspired by the post-expressionism art period and Van Gogh’s paintings and his swirling brush strokes to create this portrait. I think the most difficult part of this project was setting up the variables. Overall I really enjoyed working on this; I wanted to set up a for() loop to create the 10 spirals but in the end I was unsuccessful although I am still thoroughly proud of my work.

nahyunk1 – Looking Outwards 09

For this assignment, I read Harry’s looking outwards post 6, which talked about Mark Wilson’s,‘e4708’(2008), an artwork generated by a computer. When I read his post, I was able to quickly connect to the post of my own which also talked about randomly generated artworks that computers created “on its own”. The notion which Harry brings up in his post questioning whether the computer’s ability to randomly create artworks is a valid statement or not was something that I wondered as I read the post about my article.

https://courses.ideate.cmu.edu/15-104/f2017/2017/10/06/dnam-looking-outwards-06/

http://mgwilson.com/

monicah1-lookingoutward-09

Drift 2017 by Nicholas Sassoon caught my attention.

(gyueunp – Looking Outwards 06)

I agree with the peer that the constant alteration of visual create an narrative. The alterations seems like its intentionally telling a story, but I could not get it entirely because there was so much going on when looking at the piece. There are varieties of ways looking at the piece, like looking closely and far away, guessing the narrative, combining the experience of audio and visual senses.

It is interesting how the Sassoon creates 2D and 3D images with repetition elements, playing with alterations. To me, the pieces seems almost like a short film. I love the combination of elements and narrative. This way of presenting allow me to interpret the experience in variety of ways.

afukuda-LookingOutwards-09

RASTER by Kyuha Shim


[Vimeo video showcasing RASTER]

This project caught my eye because I learnt about the De Stijl movement in an architectural history course, therefore it is of some familiarity to me. It also intrigued me, as the project takes something that was originally handcrafted and mimics it through the use of technology. To do this, one must fully understand the meaning behind the artistic style. I concur with my peer, that Shim is able to “combine both an advanced knowledge of De Stijl work both technically but visually.” I think, however, that RASTER is on the verge of losing the essence of what is De Stijlism; De Stijl advocates pure abstraction and universality by a reduction to the essentials of form and color, simplifying visual compositions to the vertical and horizontal, using only black, white and primary colors. Through manipulating the resolution of the grid, RASTER may become too intricate to be considered “De Stijl”.

Link |
http://www.kyuhashim.com/ [Shim’s website]
https://courses.ideate.cmu.edu/15-104/f2017/2017/09/02/lookingoutwards-01-2/ [Peer’s Looking Outwards post]

yushano_Looking Outwards 9

Peer: Clair Sun
Peer’s Post: https://courses.ideate.cmu.edu/15-104/f2017/2017/10/01/sijings-lookingoutwards-06/

Artist’s Site: http://color-wander.surge.sh/

 


Form1 | 2016 | Matt Deslauriers


Form2 | 2016 | Matt Deslauriers


Form4 | 2016 | Matt Deslauriers

Matt Deslauriers is an artist from Toronto, Canada. This is a weekend project for him that shows the generative work of art and javascript. In his websites, the these works are all generated in realtime. The idea like noise and maps are implemented in this project. Basically, Clair introduces his project and talks about her appreciation towards Matt Deslauriers’s artwork which combines randomization, technology and aesthetics. I agree with her opinion that this is an interesting artwork. What’s more, I think this project is more relative to use as programming starters. He shows us his working process in his website; therefore, we can learn from his codes and his design ideas. This artist is really helpful as a learning source for our project. I think if I have seen this post earlier, I am able to do my projects better.

The idea of combining art and coding is not fresh anymore. Therefore, coding becomes a big part in digital art. Deslauriers’s experiments in his projects is worthy for us to learn and experiment by ourself as well.

yushano_Project09

sketch

var proPic =  "https://i.imgur.com/79iDeUB.jpg"; 
var x0;
var y0;
var dx;
var dy;
var colAtPoint;

function preload() {
    profilePic = loadImage(proPic);
}


function setup() {
    createCanvas(480, 480);
    background(0);
    profilePic.loadPixels();
    x0 = random(width);
    y0 = random(height);
    dx = random(-1,1);
    dy = random(-1,1);
    frameRate(20);
}



function draw() {   
    // constriants of the location of the ellipse 
    if (x0 >= width || x0 <= 0) {
        dx = -dx
    }  
    if (y0 >= height || y0 <= 0) {
        dy = -dy        
    } 

    // get the color of the ellipse
    ix = constrain(floor(x0), 0, width-1);
    iy = constrain(floor(y0), 0, height-1);
    colAtPoint = profilePic.get(ix, iy); 
    noStroke();
    fill(colAtPoint);
    ellipse(x0, y0, 10);

    // update the coordinates of the ellipse
    x0 += dx*5 ;
    y0 += dy*5 ;
}

// the ellipse starts at the point that the user clicks
function mousePressed() {
    x0 = mouseX;
    y0 = mouseY;
    dx = -dx;
    dy = -dy;
}


The idea of my project derives from one of the Looking Outwards, which I researched about a robot that create art automatically. So, my work basically follows a similar rule. The point start from a random place that is on the canvas. If you press the canvas, the start point will change to the point that you press but the direction will be opposite to the original directions. The canvas will be very geometrical during the drawing process because the drawing process has a certain pattern that organizes the canvas. Because of my personal preference towards geometries and order, the pattern that is being drawn can also serve as a drawing.

daphnel-Looking Outwards-09

I chose to discuss Jiaxin Wen’s Looking Outwards post from Week 4. The work she chose was a Cloud Piano created by David Brown in 2014. I found this piece of work particularly interesting for relatively similar reasons to the ones she wrote. The Cloud Piano plays piano pieces based on cloud movement. I think that although a programmed machine playing a piano may not have as much emotion and excitement as would if a real person was playing it, the art of it is still beautiful. I also liked how the creator combined an everyday aspect of nature with a form of music. Since I tend to find the movement of clouds intriguing at times when I look at them, I admire the fact that there are people out there that may have the same feelings and me but have more of a capability to make something out of that feeling.

Jihee Kim_SectionD_Project-09-Portrait

jiheek1_project9

//Jihee Kim
//15-104 MWF 9:30
//jiheek1@andrew.cmu.edu
//Project 9 Portrait
//section D

var baseImage;
var fillR = 97; // Red value of rectangles
var fillG; // Green value of rectangles (subject to change later)
var fillB = 226; // Blue value of rectangles


//load image
function preload() {
    var portraitUrl = "https://i.imgur.com/HgOmFTq.jpg";
    baseImage = loadImage(portraitUrl);
}

function setup() {
    createCanvas(320, 480);
    background(0);
    baseImage.loadPixels(); // turn the base image into a collection of pixels
    frameRate(2000);
    // grid on canvas
    // draw verticle lines that fall down from top to bottom
    // in between the gaps of rectangles
    for (var y = 0; y < height; y ++) {
        for (var x = 9; x < width; x += 10) {
            stroke(175 - y/2, 100, 145); // apply a color gradient to the lines
                                         // color changes from red to blue
                                         // from top to bottom of canvas
            strokeWeight(1);
            line(x, y, x, height); // draw line
        }
    }
}

function draw() {
    // x and y position of pixels that are to be picked
    var pixelX = floor(random(0, width)) * 10; // get rid of horizontal overlaps
                                               // by spacing the pixels by the
                                               // maximum width of rectangles
                                               // that are to be drawn
    var pixelY = floor(random(0, height));

    // extract the color of each randomly chosen pixel
    var iX = constrain(pixelX, 0, width - 1); // make x coordinates
                                                     // integers (no decimals)
    var iY = constrain(pixelY, 0, height - 1); // make Y coordinates
                                                     // integers (no decimals)
    var cp = baseImage.get(iX, iY); // get the color at the pixel

    // the width, length, outline and fill of the rectangles are to be mapped
    // to the brightness of the color of each pixel
    var rectWidth = map(brightness(cp), 0, 100, 1, 10); // brighter the color
                                                        // wider the width
    var rectLength = map(brightness(cp), 0, 100, 6, 50); // brighter the color
                                                         // longer the length
    var strokeC = map(brightness(cp), 0, 100, 0, 100); // brighter the color
                                                       // lighter the outline
                                                       // in greyscale
    var fillG = map(brightness(cp), 0, 100, 50, 255); // manipulate the G value
                                                      // of the fill in respect
                                                      // to the brightness

    stroke(strokeC);
    strokeWeight(1);
    fill(fillR, fillG, fillB);
    rect(iX, iY, rectWidth, rectLength); // draw rectangle representing
                                         // each chosen pixel
}

comparison of project and original image

For this project, I created a computational self-portrait. While researching about data analysts in the past looking outwards assignment, I came across an image by dylan mason. Although this image was generated by compiling a lot of selfies throughout a long time, I wanted to mimic some of the qualities shown in this picture: horizontal bars and the balance between blurriness and clarity of the object.

inspiration from dylan mason’s composite of selfies

Another inspiration for this project was the eye tracker assignment in which we used the brightness function. I implemented a hierarchical system, using that brightness function to make the width, length, outline and fill of the rectangles relative to the brightness of the color of each randomly chosen pixel on the canvas.

The brighter the color, the wider the width, the longer the length, the lighter the outline of the rectangles. The fill of rectangles are also related to the brightness. The brighter parts of the image are covered with light blue rectangles, while the darker parts of the image are covered with deep blue, almost purple rectangles. The rectangles on the darker parts of the canvas are smaller because I wanted a more detailed feel on the face area. On the other hand, the rectangles on the lighter parts of the canvas are bigger because I wanted to quantify and communicate the vast amount of light that is coming from behind the person (me). Bottom line, I wanted the attention to be drawn to the human figure more than the background and I believe I achieved that goal through elements, including but not limited to size and color.

phase 1: a lot of overlaps

In the first phase of designing, the there were a lot of overlaps among the rectangles that are derived from randomly chosen pixels. I wasn’t sure if I liked the aesthetics of it. In order to lessen the traffic, I spaced out the distance between the chosen pixels along the x-axis. Spacing out both in the x and y axes would have made the computational portrait a little too ambiguous.

phase 2: reduced traffic, increased contrast

To continue the language of horizontality, I drew a grid that consists of vertical lines that span from the top to the bottom of the canvas. Moreover, the change in color of these vertical lines (from red to blue from top to bottom) adds to the dynamics.

grid with gradation
FINAL

Jihee Kim (Section D)– LookingOutwards-09


LifeObject: Israeli Pavilion Biennale Venezia 2016.

LifeObject was an installation inside the Israel Pavilion in Italy as part of the La Biennale di Venezia of 2016. The project was curated by the architect Ben Bauer. One of the other architects who contributed to the project, Arielle Blonder discusses this installation in press interviews and emphasizes its correlation to nature and society.

bird nest structure visible from outside
inside the installation

LifeObject, in a way represents a more secure society that is comprised of adaptable, flexible components, as does a bird’s nest. I find this installation interesting because of its attempt to integrate biology to architecture. Architecture ultimately is about living and the inhabitants, including but not limited to people and animals. The fact that the scientists and architects came together and mimicked a bird’s nest to build for people is intriguing and points to many more opportunities in the field.

I agree with Yugyeong that the project opens up more opportunities pertaining to biological designs and materials. To add, I would say that this project provides grounds to explore with 3D printing and computational design because there is a basic algorithm that we can extract from natural behaviors. I would also say that this project not only adds to the architectural field, but to the science field as well. LifeObject basically breaks the boundaries between the two disciplines.

For Designboom’s coverage of the project, visit:

israeli pavilion showcases woven bird’s nest structure at venice architecture biennale

For original looking outwards post:looking-outwards-03-yugyeong-lee