Charmaine Qiu – Project-06- Abstract Clock

sketch

/* Charmaine Qiu
  charmaiq@andrew.cmu.edu
  section E
  project 06, Abstract Clock */

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

function draw() {
    background(255,200,200); 

    // Fetch the current time
    var H = hour();
    var M = minute();
    var S = second();
    //variables that fits the time into certain coundaries
    var poolW = map(M, 0, 59, 70, width);
    var eyesH = map(H, 0, 23, 30, 1);

    noStroke();
    //creating the elements of the girl that does not change over time
    //body
    fill(252, 73, 3);
    ellipse(width / 2, height, 130, 200);
    //face
    fill(255, 238, 227);
    ellipse(width / 2 - 40, height / 2 + 20, 30, 30);
    ellipse(width / 2 + 40, height / 2 + 20, 30, 30);
    ellipse(width / 2, height / 2, 100, 120);
    angleMode(DEGREES);
    //hair
    fill(245, 108, 66);
    arc(width / 2, height / 2, 110, 140, -180, 360);
    ellipse(100, 90, 50, 50);
    ellipse(200, 90, 50, 50);
    //mouth
    arc(width / 2, height / 2 + 50, 40, 50, -180, 360);
    //table
    fill(201, 150, 113);
    rect(0, 250, width, 70);
    //HANGRY
    fill(255, 238, 227);
    //("HANGRY", width / 2 - 23, 140);
    text("When is my FOOD coming?", width / 2 - 70, 40);

    //when it is midnight, "HANGRY" appears on the head
    if (H == 59){
      text("HANGRY", width / 2 - 23, 140);
    }
    //drooling drops that falls down every second
    push();
    translate(160, 200);
    m = floor(millis()) % 1000;
    m = map(m, 0, 1000, 0, 200);
    fill(147, 206, 237);
    ellipse(0, m, 7, 7 + m * 7 / 200);
    pop();
    //the pool gets gets larger as a minute goes by
    fill(147, 206, 237);
    ellipse(width / 2, height, poolW, 50);
    //the eyes becomes smaller as hours in a day pass by
    fill(80);
    ellipse(width / 2 - 20, height / 2 + 15, 10, eyesH);
    ellipse(width / 2 + 20, height / 2 + 15, 10, eyesH);

}

This project is very interesting since I was able to design and compute a graphic that evolves around time. I took the idea of creating a literal clock further by creating a narrative to my work.

Katrina Hu – Project-06 – Abstract Clock

sketch_project06

/*Katrina Hu
15104-C
kfh@andrew.cmu.edu
Project-06-Abstract Clock*/

var h;
var s;
var m;
var posHour;
var posSecond;
var posMinute;
var starting = 0;
var hoursCount = [0.0417];
var secCount = [0.01667];
var minCount = [0.01667];

function setup() {
    createCanvas(480, 480);
    background(0);
}

function draw() {
    h = hour();
    s = second();
    m = minute();

    background(0);
    noStroke();
//lime (hour)
    push();
    translate(-30, -27);
    fill(57, 120, 40);
    ellipse(150, 150, 245, 245);
    fill(220, 237, 190);
    ellipse(150, 150, 225, 225);
    fill(172, 219, 125);
    ellipse(150, 150, 207, 207);
    stroke(220, 237, 190);
    strokeWeight(8);
    line(120, 50, 180, 250);
    line(65, 84, 230, 215);
    line(45, 150, 255, 150);
    line(65, 216, 235, 95);
    line(185, 50, 120, 250);
    fill(220, 237, 190)
    ellipse(150, 150, 60, 60);
    pop();
//orange (seconds)
    push();
    translate(-100, -80);
    noStroke();
    fill(255, 140, 0);
    ellipse(250, 450, 245, 245);
    fill(255, 244, 209);
    ellipse(250, 450, 225, 225);
    fill(255, 201, 54);
    ellipse(250, 450, 207, 207);
    stroke(255, 244, 209);
    strokeWeight(8);
    line(220, 350, 280, 550);
    line(165, 384, 330, 515);
    line(145, 450, 355, 450);
    line(165, 516, 335, 395);
    line(285, 350, 220, 550);
    noStroke();
    fill(255, 244, 209);
    ellipse(250, 450, 60, 60);
    pop();
//watermelon (minutes);
    push();
    translate(-95, -35);
    fill(26, 156, 14);
    ellipse(450, 250, 245, 245);
    fill(255);
    ellipse(450, 250, 225, 225);
    fill(255, 146, 140);
    ellipse(450, 250, 210, 210);
    fill(0);
    ellipse(445, 260, 10, 15);
    ellipse(500, 200, 10, 15);
    ellipse(420, 180, 10, 15);
    ellipse(480, 245, 10, 15);
    ellipse(460, 310, 10, 15);
    ellipse(510, 280, 10, 15);
    ellipse(390, 250, 10, 15);
    ellipse(410, 300, 10, 15);
    ellipse(435, 220, 10, 15);
    pop();


//hour clock
    push();
    translate(-30, -27);
    for(posHour = 0; posHour <= h; posHour++) {
        noStroke();
        fill(0);
        arc(150, 150, 250, 250, starting, starting + 2 * PI * hoursCount);
        starting += (2 * PI * hoursCount);
    }
    if (posHour = h){
            starting = 0;
    }
    pop();

//seconds clock
    push();
    translate(-100, -80);
    for(posSecond = 0; posSecond <= s; posSecond++) {
        noStroke();
        fill(0);
        arc(250, 450, 250, 250, starting, starting + 2 * PI * secCount);
        starting += (2 * PI * secCount);
    }
    if (posSecond = s){
            starting =  0;
    }
    pop();

//minutes clock
    push();
    translate(-95, -35);
    for(posMinute = 0; posMinute <= m; posMinute++) {
        fill(0);
        arc(450, 250, 250, 250, starting, starting + 2 * PI * minCount);
        starting += (2 * PI * minCount);
    }
    if (posMinute = m){
            starting = 0;
    }
    pop();
    






}

The lime represents the hour, and a slice is eaten every hour. The watermelon represents the minute, and a slice is taken every minute. Similarly, the orange represents the seconds and a slice is taken every second. The fruit resets every minute/hour/day.

This was a very fun project to do, both in drawing the actual fruits and figuring out how to take a slice from each every second/minute/hour. It was interesting to learn about the time functions and how to creatively implement them into the project. Finally, I was really happy with the way it turned out.

original sketch of the clock

Hyejo Seo- Project 06: Abstract Clock

sketch

/*
Hyejo Seo
SectionA
hyejos@andrew.cmu.edu
Project-06-Abstract Clock
*/
var balloonW;

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

function draw() {
    var secs = second();
    var mins = minute();
    var hr = hour();  
    var balloonY = 250;
// mapping 
    var secsM = map(secs, 0, 59, 0, 150);
    var minsM = map(mins, 0, 59, 0, 220); 
    var hrM = map(hr, 0, 23, 10, 100);
    background(234, 239, 211);

// balloon pump 
    fill(0);
    rect(345, 170, 10, 70);
    quad(330, 240, 370, 240, 360, 300, 340, 300);
    quad(343, 300, 358, 300, 354, 350, 347, 350);
    fill(47, 41, 99);
    noStroke();
    rect(320, 20 + secs, 60, 150);

// pipe 
    fill(147, 181, 198);
    rect(347, 350, 7, 30);
    rect(100, 373, 250, 7);
    rect(93, 350, 7, 30);
    ellipse(335 - minsM, 376, 40, 20); // circle representing the air movement

//Balloon  
    balloonW = 90;
    fill('#CEEC97');
    stroke(0);
    strokeWeight(2);    
    rect(92, balloonY + 70, 10, 28);  
    ellipse(97, balloonY + 98, 10, 5); 
    ellipse(95, balloonY, balloonW + hrM/2, 150); // increases size by the hour 
    // showing the hour on the balloon  
    fill(0);
    noStroke();
    textSize(50);
    textFont('Avenir');
    text(int(hr), 68, balloonY + 15);
}

sketching my idea for this project

It took me awhile to think of something fun to represent time. I focused on the increasing factor of time, which led me to think of a balloon inflating. I decided to control the movement of the balloon pumper with seconds, and the air bubble moving through the wire with minutes. Then, the balloon inflates every hour. 

Sammie Kim – Project 06 – Abstract Clock

sketch

//Sammie Kim
//Section D
//sammiek@andrew.cmu.edu
//Project 06 - Abstract Clock

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

function draw(){
    background(0);
    //variables for time
    var s = second();
    var m = minute();
    var hr = hour();

    //Shining stars and black night background
    for (var i = 0; i < 100; i ++) {
        frameRate(2);
        fill(225);
        var eSize = random(1, 5);
        var x = random(0, width);
        var y = random(0, height);
        ellipse(x, y, eSize, eSize);
     }

    //Mapping time to shape components
    var secIncrease = map(s, 0,59, 0, height);
    var minIncrease = map(m,0, 59, 50, height/2);
    var hrIncrease = map(hr, 0, 23, 100, height * 3/4);

    //Every minute, the blue sky background will decrease, slowly revealing the space
    fill(102, 153, 255);
    rect(0, 0, width, height - minIncrease);

    //Rocket flies upwards every second
    fill(78, 78, 252);
    triangle(225, 525 - secIncrease, 190, 570 - secIncrease, 260, 570 -secIncrease);
    fill(252, 84, 78)
    rect(190, 570 - secIncrease, 70, 100);
    stroke(0);
    strokeWeight(10);
    fill(255);
    ellipse(225, 600 - secIncrease, 30, 30);
    noStroke();
    fill(252, 153, 78);
    triangle(190, 670 - secIncrease, 225, 730 - secIncrease, 260, 670 - secIncrease);
    fill(170, 110, 196);
    triangle(190, 670 - secIncrease, 190, 710 - secIncrease, 230, 670 - secIncrease);

    //Pink circle is the sun, which is changing color every hour
    //The sun also goes down every hour
    noStroke();
    fill(hrIncrease, 180, 220);
    ellipse(100, hrIncrease, 60, 60);
  }

This project was challenging as I had to analyze how to incorporate the time concept into my canvas, letting each element pace by a specific rate of time. I imagined a rocket flying up by each second, and the sky slowly disappearing along as the rocket goes further up. The sun would also go down at the same time by every hour. With this, I got to review the map function once more, as I got to think about the range that is needed to limit the movement of the rocket. Also it took some time figuring out how to move the rocket in second increments up, which I eventually did by subtracting “secIncrease,” since the coordinates get smaller as it gets nearer to the top.

Sarah Kang- Looking Outwards – 06

“Medusa”, by Fabio Morreale, PHD

Fabio Morreale’s research focuses on how understanding the influence of computer technologies in shaping the way people compose, learn, listen to, and perform music. “Medusa” is one of his few visual works that “explore the redistribution of control between human and computer agents in the creation of visual artworks” (Morreale). What first drew me to this artwork was the fluidity and organic nature of the composition. This project was coded on Processing. Morreale uses the initial position of a virtual pen on his virtual canvas as his driver, and traces lines that produce numbers of autonomous agents that independently begin to roam the canvas, while leaving a trail. The only human control in this artwork is the original location of the agents, not the control over their evolution. Through this artwork, Morreale explores the cause and effect evolution paths between the relationship of humans with computer technologies, and the ratio of control between the two spectrums.

Another piece from “Medusa”, by Fabio Morreale, PHD

https://fabio.kiwi/medusa

Monica Chang – Project 06 – Abstract Clock

sketch

//Monica Chang
//mjchang@andrew.cmu.edu
//Section D
//Project 06 - Abstract Clock

var prevSec;
var millisRolloverTime;

var rVal = 50;
var bVal = 50;

//--------------------------
function setup() {
    createCanvas(480, 480);
    millisRolloverTime = 0;
    frameRate(5);
    r = random(255);
    g = random(255);
    b = random(255);
}

//--------------------------


function draw() {
    background(0);
  
    //millis is represented in drawGrid
    drawGrid();
    
    // Fetch the current time
    var H = hour(); 
    var M = minute();
    var S = second();
    var a = H*3600 + M*60 + S;
    
    // Reckon the current millisecond, 
    // particularly if the second has rolled over.
    // Note that this is more correct than using millis()%1000;
    if (prevSec != S) {
        frameRate(25);
        millisRolloverTime = millis();
    }
    prevSec = S;
    var mils = floor(millis() - millisRolloverTime);
    
    fill(128,100,100);
    stroke(128,100,100);
    text("Hour: "   + H, 10, 22);
    text("Minute: " + M, 10, 42);
    text("Second: " + S, 10, 62);
    text("Millis: " + mils, 10, 82);
    
    var hourCircSize = map(H, 0, 23, 0, width);
    var minuteBarWidth = map(M, 0, 59, 0, width);
    
    var blueChange = map(S, 0, 60, 0, 255); //blue changing color
    var radiusChange = map(S, 0, 60, 0, 400); //increasing circle size
  
  // hours
    fill(3);
    noStroke();
    ellipse(width / 2, height / 2, hourCircSize / 2);
    

  //minutes
  
    rectMode(CORNER);
    noStroke();
    fill(20);
    rect(50, height / 2, 380, 20);//darker background
    noStroke();
    fill(r, g, b);
    rect(50, height / 2, minuteBarWidth, 20); //minutes passed
    strokeWeight(1);
  
  
  //seconds: empty, blue circles getting bigger and bigger.
    noFill();
    stroke(66, blueChange, 244);
    ellipse(width / 2, height / 2, radiusChange);
    a = a + 1;
    
 
  
  //analog clock
    fill(128,100,100);
    noStroke();
    textAlign(LEFT);
    text(H % 12, width / 2 - 20, 460);

    textAlign(CENTER);
    text(M, width / 2 , 460);
  
    textAlign(LEFT);
    text(S, width / 2 + 7, 460);
    
}

//millis
function drawGrid() {
  // noprotect
    for (var y = 0; y < 490; y += 10) {
        for (var x = 0; x < 650; x += 10) {
            frameRate(millis());
            rVal = (rVal - 1) % 200;
            bVal = (bVal + 3) % 200;
            //color gradient
            fill(rVal, 0, bVal);
            noStroke();
            ellipse(x, y, 10, 10);
            
        }
  }
}

It was really interesting how much I had to think about the readability of this concept. To make something that we look at daily, making it abstract can arguably take more time for it to function regularly like it does now for it. With this idea, I concentrated on abstracting the form of the clock while also allowing it to still require not that much cognitive processing to understand.

my sketch

Sean Leo – Project 06 – Abstract Clock

sleo-project-06

//Sean B. Leo
//sleo@andrew.cmu.edu
//Section C

//Project 6
//Abstract Clock

function setup() {
    createCanvas(600, 600);
    pixelDensity(1);
    frameRate(1);
  }
  
  function draw() {
    
    var S = second();
    var M = minute();
    var H = hour();
    
    var s1 = map(S, 0, 60, 0, 255);
    var m1 = map(M, 0, 60, 0, 255);
    var h1 = map(H, 0, 24, 0, 255);
    
    
    loadPixels();
    for(var y=0; y<400; y++){
      for(var x=0; x<400; x++){
        var index= (x + y *width)*4;
        pixels[index+0] = y-m1;
        pixels[index+1] = h1;
        pixels[index+2] = x-s1;
        pixels[index+3] = 255;
      }
    }
    
    updatePixels();
  
  }

I started thinking about abstracting the concept of time itself. Instead of viewing time as an exacting and regimented number, what if it could be displayed more like a feeling or mood? What if by looking at a display we could have a sense of the passing of time rather than knowing what time it is exactly?

I created a color field that adjusts it’s rgb values over time through a pixel array. No second is the same composition as the next though the change is subtle. Below you can see the progression of time over the day and familiar timestamps.

I think there are a lot of artistic applications of this project; mainly using the generated color field as a light source. Rather than a reading of time in a specific format: a watch, wall clock, microwave, etc. A lamp emitting the color field would affect the room it is in a subtly convey time passing.

8:30am
noon
6:30pm
midnight

Sean Leo – Project 05 – Wallpaper

For my wallpaper I thought to use a textile pattern I was familiar with. Houndstooth is useful in that it can be scaled to be very small or abstractly large.

sleo-wallpaper

//Sean B. Leo
//sleo@andrew.cmu.edu
//Section C
//Project 05 Wallpaper

var x1 = 10; //changing the value of x1 will change the scaling of the pattern
var x2 = x1*2;
var x3 = x1*3;
var x4 = x1*4;
var y1 = x1;
var y2 = y1*2;
var y3 = y1*3;
var y4 = y1*4;
var value = 0;

function setup() {
  createCanvas(600, 600);
}
function draw() {
  noStroke();
  background(255);
  //Scales the color based on the mouse position
  r = map(mouseX, 0, width, 0, 200); 
  g = map(mouseX/mouseY, 0, 600, 0, 200);
  b = map(mouseY, 0, height, 0, 200);
  for (var x = 0; x < width+x1; x += x1*4) {
    for (var y = 0; y <height+y1; y += y1*4) {
    houndstooth (x-30, y-30);
    }
  }
}
function houndstooth(x,y) {
  fill(r, g, b);
  push();
  translate(x, y);
  rect(x2, y2, x2, y2); 
  quad(0, y4, x2, y2, x2, y3, x1, y4);
  quad(x2, y4+y1, x3, y4, x4, y4, x2, y4+y2);
  triangle(x3, y2, x4, y1, x4, y2); 
  triangle(x4, y2, x4+x1, y2, x4, y3);
  pop();
}
/* the original coordinate positions draw to determine the relative values
  rect(50, 50, 50, 50); 
  quad(0,100, 50, 50, 50, 75, 25, 100);
  quad(50, 125, 75, 100, 100, 100, 50, 150);
  triangle(75, 50, 100, 25, 100, 50); 
  triangle(100, 50, 125, 50, 100, 75);
*/

Claire Lee – Project 06 – Abstract Clock

project06

var starX = [];
var starY = [];
// star position arrays

function setup() {
    createCanvas(600, 600);
    for (i = 0; i < 100; i++) {
        starX[i] = random(width);
        starY[i] = random(height);
    } // randomizing star x and y positions
}

function draw() {
    background(0, 0, 10);

    noStroke();
    fill(255, 210, 10); 
    ellipse(300, 300, 50, 50);
    //sun

    stroke(200);
    strokeWeight(1.5);
    noFill();
    ellipse(300, 300, 500, 500);
    // outer orbit

    stroke(200);
    strokeWeight(1);
    noFill();
    ellipse(300, 300, 350, 350);
    // middle orbit

    stroke(200);
    strokeWeight(0.5);
    noFill();
    ellipse(300, 300, 250, 250);
    // inner orbit

    var S = second();
    var M = minute();
    var H = hour();
    var mappedS = map(S, 0, 59, 0, 354);
    var mappedM = map(M, 0, 59, 0, 354);
    var mappedH = map(H, 0,23, 0, 354);
    // time variables

    push();
    //stars
    for (i = 0; i < 100; i++) {
        noStroke();
        fill(255, 255, 255, 75);
        ellipse(starX[i], starY[i], 2, 2);
    } 
    translate(300, 300);
    // red planet
    rotate(radians(mappedH));
        noStroke();
        fill(230, 50, 15);
        ellipse(0, -250, 20, 20);
    // grey planet
    rotate(radians(mappedS));
        noStroke();
        fill(150);
        ellipse(0, -125, 10, 10); 
    pop();

    var moonX = 300 + -175 * (cos(radians(mappedM)));
    var moonY = 300 + -175 * (sin(radians(mappedM)));
    // circle math!
    push();
    translate(moonX, moonY);
        noStroke();
        fill(70, 210, 200);
        ellipse(0, 0, 25, 25);
        // blue planet

        stroke(200);
        strokeWeight(0.5);
        noFill();
        ellipse(0, 0, 60, 60);
        // moon orbit

        rotate(radians(mappedS));
        noStroke();
        fill(150);
        ellipse(0, -30, 10, 10);
        // moon
    pop();
}

This project was really interesting to do because I got to revisit and experiment with the translate() and rotate() functions. I also incorporated arrays into my piece, and was really satisfied with the result. One thing I learned that I don’t think I remember seeing before is the map() function, which I think made it a lot easier to convert measures of time into evenly-spaced coordinates without hard-coding in the math.

Monica Chang – Looking Outwards – 06

There’s always a fear that the use of random data can imply that the creator has no sense of intentionality or ability to make a decision. However, designers have been able to develop a way that randomness becomes more of a generative tool that helps overcome the limits of the artists’ imaginations than an arbitrary statement.

Aaron Tobey, the creator of the project below, agrees with this idea as he specifically states that integrating randomness in design does not “eliminate” the artist, but rather “displaces” the artist in the process of the creation. With this project, Tobey was required to create a pseudo random number generator using the “register and tap” method to also create a design. He was also required to consider the idea of “working” as a set of logical operations rather than watching what the generator comes up with. Furthermore, he creates a frame-by-frame animation with this collection of randomized, data-driven imagery.

Coding Architecture Project: Randomness by Aaron Tobey
A closer look into a single frame of Tobey’s Randomness project.

The amount of thought and registration that was required for this project is what intrigued and satisfied me the most. Integrating randomness within art or a design was something that was always tricky in the notion of producing an elaborate creation. Many believe that when a creator utilizes randomness in their artwork, they either lack in depth or purpose and is nothing but made of surface. However, with this project, it helps build a visual piece of evidence that even randomness can open the creator’s option of forming a design that can be composed within the artist’s visual field.