William Su – Project 11 – Landscape

sketch

// William Su
// Section E
// wsu1@andrew.cmu.edu
// Project 11

var terrainSpeed1 = 0.0002; 
var terrainDetail1 = 0.0007; 

var terrainSpeed2 = 0.0002; 
var terrainDetail2 = 0.001; 

var terrainSpeed3 = 0.0003; 
var terrainDetail3 = 0.005; 

var c1, c2;

function draw() {
  ellipse(mouseX, mouseY, 30, 30);
}

function setup() {
    createCanvas(480, 480);
    c1 = color(255, 204, 0); //Gradient Sky
    c2 = color(255);
    setGradient(c1, c2);
    frameRate(30);
}

function draw() {
    fill(255, 251, 130);
    ellipse(width/2, height/2 - 40, 40, 40); //Sun
    water3(); //Distant water
    DrawBoat(); //Fixed Boat
    water2(); //Middle Water
    water1(); //Near Water
}

function setGradient(c1, c2) {
  // noprotect
  noFill();
  for (var y = 0; y < height; y++) {
    var inter = map(y, 0, height, 0, 1);
    var c = lerpColor(c1, c2, inter);
    stroke(c);
    line(0, y, width, y);
  }
}

function water1() {
    noStroke();
    fill(90, 200, 250); 
    beginShape();
    for(var x = 0; x < width; x++){
        var t = (x * terrainDetail1) + (millis() * terrainSpeed1);
        var y = map(noise(t), 0, 2, 400, 300);
        vertex(x, y);
    }
    vertex(width, height);
    vertex(0, height);
    endShape(CLOSE);
}

function water2() {
    noStroke();
    fill(72, 150, 200); 
    beginShape();
    for(var x = 0; x < width; x++){
        var t = (x * terrainDetail2) + (millis() * terrainSpeed2);
        var y = map(noise(t), 0, 1, 330, 300);
        vertex(x, y);
    }
    vertex(width, height);
    vertex(0, height);
    endShape(CLOSE);
}

function water3() {
    noStroke();
    fill(60, 200, 250); 
    beginShape();
    for(var x = 0; x < width; x++){
        var t = (x * terrainDetail3) + (millis() * terrainSpeed3);
        var y = map(noise(t), 0, 2, 250, 200);
        vertex(x, y);
    }
    vertex(width, height);
    vertex(0, height);
    endShape(CLOSE);
}

function DrawBoat() { //Boat
    push();
    fill(150,75,0); 
    rect(width/2,height/2,5,60);
    pop();

    noStroke();
    push();
    fill(250);
    triangle(width/2 - 30, height/2 + 50, width/2 + 2, 220, width/2 + 30, height/2 + 50);
    pop();

    push();
    fill(140);
    arc(width/2, height/2 + 60, 100, 80, 0, PI, CHORD);
    pop();
}



I decided to make a generative landscape of the ocean. I made 3 wave “layers” and had a fixed object in the horizon.

Jina Lee – Looking Outwards 11

Here is a photo of Mimus interacting with someone.

Mimus is an industrial robot coded to explore and respond to her surrounding environment from data collected through sensors. Typically industrial robots follow instructive movements, but she is different. She is in a glass room, so that she can interact with people walking around her by approaching them and moving along with their movements. Madeline Gannon is the designer. Gannon created Mimus to help people that fear that robots are taking work away from humans. She believes in “a more optimistic future, where robots do not replace our humanity, but instead amplify and expand it.” In her works, robots are treated as living creatures with emotions rather than objects, and she works towards a relationship of empathy and companionship between man and machine.

For you to better understand what Mimus is, here is a video.

Gannon graduated from Carnegie Mellon University with a Ph.D. in Computational Design. After graduating, she has been developing projects with natural gesture interfaces and digital fabrication. Her work intends to blur the line between man and machine and to break the stereotypical idea of dominance, and to prove that co-existence and collaboration can better amplify our human capabilities. I think it is really cool how she tries to bring together man and machine, because it seems like many people are trying to divide them as much as possible. In addition, as a design major who is interested in computational design, it is interesting to see what she does.

This is a clear sketch model of how Mimus can interact with people.

Gretchen Kupferschmid-Looking Outward-11

As a graduating project, Hannah Rozenberg of the Royal College of Art created a project by the name of “Building without Bias: An Architectural Language for Post-Binary”. This project is a digital aimed to calculate underlying gender bias in our english architectural terms to hopefully create more gender-neutral environments. The project works by using a algorithm which helps you find out whether or not a building is biased & helps the user add or subtract elements to improve the balance. The calculator in the program basically assigns a “gender unit” to various architecture terms (such as steel, cement, or nursery) and based of their “gu”, the user can then create spaces that are not weighted either more feminine or masculine by the calculation of all the components. I appreciate how Rozenberg has began to tackle something like gender biases and spaces in architecture because I think its something that isn’t given enough attention in terms of gender-studies. Rozenberg’s project allows design to still occur in a responsible manner and align traditional practice like architecture with ideas and societal advancements in the 21st century.

https://www.dezeen.com/2018/08/12/gender-neutral-architecture-hannah-rozenberg-rca-graduate-building-without-bias/

Jina Lee – Project 11

sketch

// Jina Lee
// jinal2@andrew.cmu.edu
// Project 11
// Section E

var sushi = [];
var count = 0;
var riceSize = 70;

function setup() {
    createCanvas(480, 280);
    // for loop to create the sushi
    for (var i = 0; i < 5; i += 20){
        sushi[i] = makeSushi(width);
    }
    frameRate(120);
}


function draw() {
    count += 1;
    // beige
    background(207, 185, 151);
    sushiText();
    sushiConveyorBelt();
    updateAndDisplaySushi();
    removeSushiThatHaveSlippedOutOfView();
    addNewSushiConstantly();
}

function sushiText(){
    // frame for sign
    fill(150, 0, 0);
    rect(340, 22, 120, 48, 5);
    // white sign
    fill(255);
    rect(350, 28, 100, 35, 5);
    // turned on open sign
    fill(150, 0, 0);
    textSize(18);
    text("OPEN", 370, 52);
    // menu
    fill(255);
    rect(50, 22, 250, 150);
    fill(0);
    textSize(30);
    text("menu", 70, 60);
    stroke(0);
    strokeWeight(3);
    line(75, 100, 240, 100);
    line(75, 80, 280, 80);
    line(75, 90, 280, 90);
    line(75, 110, 280, 110);
    line(75, 120, 100, 120);
    line(75, 130, 240, 130);
    line(75, 140, 240, 140);
    line(75, 150, 280, 150);
}

function updateAndDisplaySushi(){
    for (var i = 0; i < sushi.length; i++){
        sushi[i].move();
        sushi[i].display();
    }
}


function removeSushiThatHaveSlippedOutOfView(){
    var sushiToKeep = [];
    for (var i = 0; i < sushi.length; i++){
        if (sushi[i].x + sushi[i].breadth > -200) {
            sushiToKeep.push(sushi[i]);
        }
    }
    sushi = sushiToKeep;
}

// keeps adding sushi to the end
function addNewSushiConstantly() {
    if (count > 270) {
        sushi.push(makeSushi(width));
        count = 0;
    }
}

// update sushi position every frame
function sushiMove() {
    this.x += this.speed;
}

// draw the sushi
function sushiDisplay() {
    var Height = 30;
    fill(255);
    noStroke();
    push();
    translate(this.x, height - 40);
    // plate
    fill(161, 206, 94);
    ellipse(35, -Height/7, 110, 30)
    rect(5, 5, 60, 10);
    // rice
    fill(255);
    rect(0, -Height, riceSize, 30);
    // eel
    fill(139,69,19);
    rect(0, -Height - 20, riceSize, 20);
    // seaweed
    fill(0);
    rect(25, -Height - 20, riceSize/4, 20);
    // plate
    fill(16, 52, 166);
    ellipse(175, -Height/7, 110, 30);
    rect(145, 5, 60, 10);
    // rice
    fill(255);
    rect(140, -Height, riceSize, 30);
    // tuna
    fill(234, 60, 83);
    rect(140, -Height - 20, riceSize, 20);
    pop();
}

function makeSushi(birthLocationX) {
    var sushi = {x: birthLocationX,
                breadth: 60,
                speed: -1.0,
                move: sushiMove,
                display: sushiDisplay}
    return sushi;
}

function sushiConveyorBelt() {
    // grey
    stroke(200);
    strokeWeight(30);
    line (0, height - 10, width, height - 10);
}

Here is the sketch of what I envisioned.

For this project, I am creating a sushi conveyor belt. I was inspired because back home, there is an all you can eat sushi restaurant that has sushi on a conveyor belt. The sushi is what moves. I made the signs static so it seems as if you are sitting at the table watching the sushi pass through. I created eel and tuna sushi.

Gretchen Kupferschmid-Project 11- Landscape

sketch

   //initialize variables
    var terrainSpeed = 0.0005;
    var terrainDetail = 0.005;
    var groundDetail= 0.005;
    var groundSpeed = 0.0005;
    var cactus = [];
    var col1, col2;

function setup() {
    createCanvas(480,480);
    frameRate(10);
    //start landscape out with 3 cacti
    for(i = 0; i < 3; i++){
      var rx = random(0,width);
      cactus[i] = makeCactus(rx);
}
}
 function draw (){
    //create gradient colors
    c1= color(255, 149, 0);
    c2= color(235, 75, 147);
    setGradient(c1, c2);
    
    //call functions 
    drawDesertMtn();
    updateCactus();
    removeCactus();
    addCactus();
}

function setGradient(c1, c2){
    //create the gradient background
  noFill();
  
  for(i = 0; i < height; i++){
    var grad = map(i, 0, height, 0, 1);
    var col = lerpColor(c1, c2, grad);
    stroke(col);
    line(0, i, width, i);
  }
}

function drawDesertMtn(){
    //back mtn 
    fill(255, 155, 84);
    noStroke();
    beginShape(); 
    //make the terrain randomize and go off screen
    for (var x = 0; x < width; x++) {
        var t = (x * terrainDetail) + (millis() * terrainSpeed);
        var y = map(noise(t), 0,2, 50, height);
        vertex(x, y); 
    }
    vertex(width,height);
    vertex(0,height);
    endShape();
    
    //middle mtn
    fill(245, 105, 98);
    noStroke();
    beginShape(); 
    //make the terrain randomize and go off screen
    for (var x = 0; x < width; x++) {
        var t = (x * terrainDetail) + (millis() * terrainSpeed);
        var y = map(noise(t), 0,1, 100, height);
        vertex(x, y); 
    }
    vertex(width,height);
    vertex(0,height);
    endShape();
    
    //closest mtn
    fill(224, 54, 139);
    noStroke();
    beginShape(); 
    //make the terrain randomize and go off screen
    for (var x = 0; x < width; x++) {
        var t = (x * terrainDetail) + (millis() * terrainSpeed);
        var y = map(noise(t), 0,1,200,height);
        vertex(x, y); 
    }
    vertex(width,height);
    vertex(0,height);
    endShape();
    
    //groud
    fill(165, 196, 106);
    noStroke();
    beginShape();
    //make the ground randomize and go off screen
     for (var x = 0; x < width; x++) {
        var t = (x * groundDetail) + (millis() * groundSpeed);
        var y = map(noise(t), 0, 1,400,480);
        vertex(x, y); 
    }
    vertex(width, height);
    vertex(0,height);
    endShape();
}


//change x value of cactus as cactus moves
function moveCactus(){
    this.x += this.speed;
}

function makeCactus(cactusX){
    //create the cactus as an object w some random parts
    var cactus={
        x:cactusX,
        speed: -6,
        breadth:311,
        color: random(0,100),
        length: random(50,100),
        move: moveCactus,
        display: displayCactus,
    }
    return cactus;
}

function updateCactus(){
    //loop through an array of cactus to update as adding and moving
  for(i = 0; i < cactus.length; i++){
    cactus[i].move();
    cactus[i].display();
  }
}

function displayCactus(){
    //create the cactus visuals with object parts
    noStroke();
    fill(this.color, 107, 9);
    //translate to x value of new cactus
    push();
    translate(this.x+157, height-40);
    ellipse(0,0,94,137);
    fill(this.color, 107,9);
    ellipse(61, -52, this.length,48);
    fill(this.color, 115, 28);
    ellipse(47,-83,19,27);
    fill(90, 115, 22);
    ellipse(81, -74, 24,24);
    fill(90, 115, 22);
    ellipse(-34, -86, this.length, 74);
    fill(this.color, 115, 22);
    ellipse(-18, -131, 41,41);
    fill(252, 197, 247);
    //create flower on cactus
    beginShape();
    curveVertex(-1, -150);
    curveVertex(-7,-152);
    curveVertex(-7, -147);
    curveVertex(-10, -157);
    curveVertex(-5, -141);
    curveVertex(-4, -135);
    curveVertex(1, -140);
    curveVertex(8, -135);
    curveVertex(8, -142);
    curveVertex(8, -147);
    curveVertex(3, -148);
    curveVertex(3, -153);
    curveVertex(-1, -150);
    endShape();
    pop();
}

function addCactus(){
//add a new cactus to the array
  var newCactus = 0.01;
  if(random(0,1)< newCactus){
    cactus.push(makeCactus(width));
  }
    
}
function removeCactus(){
    //remove cactus from array as it goes off the screen
  var keepCactus = [];
  for(i = 0; i < cactus.length; i++){
    if(cactus[i].x + cactus[i].breadth > 0){
      keepCactus.push(cactus[i]);
    }
  }
  cactus = keepCactus;
}

I was inspired by desert landscapes in which the sun is setting and there are cacti as well as communicate the vastness of a place like joshua tree.ca.

Margot Gersing – Looking Outwards 11

This week the female creator I decided to focus on is Yael Braha. She is a designer and creative director from Italy. She focuses a lot on large scale interactive projects and sculptures in her personal time. I was really inspired by her project Animal Race. This project was done for California Academy of Sciences in 2013.

Animal Race installed

This project is a very simple and effective data visualization. People can decided what animal they want to race and then in real time the race with a projected animation. The animation reflects the real speed of the animals so you can see if you are actually faster than a elephant for example. The data from the race is immediately displayed, stored and compared to all the other ‘runs’.

Planning sketches of the project

What I really like about this project is how it is so simple and so effective. She used Arduino, Processing, animation software, Resolume and electronics like a projector. It is so playful that people are drawn in and want to participate. It is also a teaching tool about data, data visualization and animals.

Margot Gersing – Project 11

sketch

//Margot Gersing - Project 11 - mgersing@andrew.cmu.edu - section E

var stars = [];
var terrainSpeedOne = 0.0002; //dark green moutain speed
var terrainSpeedTwo = 0.0004; // water speed
var terrainSpeedThree = 0.0006; // ligth green ground speed
var terrainDetailOne = 0.008; //green moutian
var terrainDetailTwo = 0.001; //water
var terrainDetailThree = 0.005; //light green moutain


function setup() {
    createCanvas(480, 480);
    frameRate(20);
    //fills stars array
    for (var i = 0; i < 75; i ++){
        var strX = random(width);
        var strY = random(0, height / 2);
        stars[i] = makeStars(strX, strY);
    }
    
}

function draw() {
    background(214, 197, 204);
    //moon
    fill(169, 47, 35);
    ellipse(375, 100, 150, 150);
    displayStars(); //stars
    moutainTwo(); //background moutians
    water(); //water
    moutainThree(); //foreground
}

function moutainTwo() {
    noStroke();
    fill(22, 56, 32); //darkgreen
    beginShape();
    for(var x = 0; x < width; x++){
        var t = (x * terrainDetailOne) + (millis() * terrainSpeedOne);
        var y = map(noise(t), 0, 1, 300, 250);
        vertex(x, y);
    }
    vertex(width, height);
    vertex(0, height);
    endShape(CLOSE);

}

function water() {
    noStroke();
    fill(72, 90, 103); //blue
    beginShape();
    for(var x = 0; x < width; x++){
        var t = (x * terrainDetailTwo) + (millis() * terrainSpeedTwo);
        var y = map(noise(t), 0, 2, 400, 300);
        vertex(x, y);
    }
    vertex(width, height);
    vertex(0, height);
    endShape(CLOSE);
}

function moutainThree() {
    noStroke();
    fill(110, 135, 84); //light green
    beginShape();
    for(var x = 0; x < width; x++){
        var t = (x * terrainDetailThree) + (millis() * terrainSpeedThree);
        var y = map(noise(t), 0, 2, 500, 300);
        vertex(x, y);
    }
    vertex(width, height);
    vertex(0, height);
    endShape(CLOSE);
}

function drawStars(){ //what stars will look like
    noStroke();
    fill(201, 165, 180, 150);
    push();
    translate(this.x, this.y);
    ellipse (1, 10, 5, 5);
    pop();
}

function makeStars(strX, strY){ //stars object
    var star = {x: strX, 
                y: strY, 
                speed: -1, 
                move: moveStars, 
                draw: drawStars}
    return star;
}

function moveStars(){ //how stars move
    this.x += this.speed;
    if(this.x <= -10){
        this.x += width;
    }

}

function displayStars(){ //display stars
    for(i = 0; i < stars.length; i++){
        stars[i].move();
        stars[i].draw();
    }
}



For this project I decided to go with mountain landscapes. I had a good time messing with colors to create something a little different. I also generated stars in the sky. I decided to make the stars transparent so they were more subtle and you could see them pass over the moon. I also made the objects further back move slower so it would imitate what you see when you look out the window.

Sketch of Landscape

Angela Lee – Looking Outwards – 11

A video showing Shin’m, Eunsu Kang’s environment and performance installation.

I’d like to focus on the media artist Eunsu Kang, the artist behind the installation Shin’m. Kang studied at Ewha Woman’s University, where she received her BFA and MFA. For her postgraduate studies, Kang received an MA from UCSC and a PhD from the University of Washington.

Shin’m is a hybrid of a performance and installation which explores the relationships between the body and space through spatial drawing of sound. Kang created this piece in collaboration with Diana Garcia-Snyder (a choreographer), Donald Craig, and Bo Choi (costume designer). I loved seeing the environment respond visually and sonically to the participants’ movements. I think it inspired the participant to try different movements to see what kind of environment they could generate. Moreover, though the piece is very technical, the sounds of nature add a different dimension to the environment and create a soothing, beautiful atmosphere.

Zee Salman- Sonic Sketch- Project 10

//UPDATED SOUND//

sketch

//Zee Salman
//Project 10
// sketch.js template for sound and DOM
//
// This is the 15104 Version 1 template for sound and Dom.
// This template prompts the user to click on the web page
// when it is first loaded.
// The function useSound() must be called in setup() if you
// use sound functions.
// The function soundSetup() is called when it is safe
// to call sound functions, so put sound initialization there.
// (But loadSound() should still be called in preload().)


function preload() {
    stomach = loadSound("https://courses.ideate.cmu.edu/15-104/f2019/wp-content/uploads/2019/11/447911__breviceps__growling-stomach-stomach-rumbles-1.wav");
    fart = loadSound("https://courses.ideate.cmu.edu/15-104/f2019/wp-content/uploads/2019/11/402628__inspectorj__whoopee-cushion-long-a-1.wav");
    laugh = loadSound("https://courses.ideate.cmu.edu/15-104/f2019/wp-content/uploads/2019/11/259611__stevious42__baby-laugh-1.wav");
    cry = loadSound("https://courses.ideate.cmu.edu/15-104/f2019/wp-content/uploads/2019/11/386923__gumballworld__baby-newborn-cry2-1.wav");
    stomach.setVolume(5);
}



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


function draw() {
    // you can replace any of this with your own code:
    background(200);
    //baby head
    noStroke();
    fill("brown");
    ellipse(width/2, height/4, 100, 120 );
    //arms
    rect(width/2.75, height/2.2, 140, 100);
    //baby top
    fill("pink");
    ellipse(width/2, height/2, 100, 140);
    ellipse(width/2.5, height/2.25, 50, 60);
    ellipse(width/1.65, height/2.25, 50, 60);
    //chest
    fill("brown");
    triangle(width/2.5,height/2.6, 300, 192, width/2,height/2);
    //baby tummy
    fill("white");
    ellipse(width/2, height/1.9, 70, 90);
    //baby diapers
    fill("gray")
    ellipse(width/2, height/1.63, 100, 90);
     //baby tummy
     fill("pink");
    rect(width/2.5, height/1.95, 100, 40);
    fill("white");
    rect(width/2.32, height/1.98, 69, 30);
    //baby legs
    fill("brown");
    ellipse(width/1.55,height/1.5, 70, 50);
    ellipse(width/2.65,height/1.5, 70, 50);
    fill("pink");
    ellipse(width/2.35,height/1.5, 50, 50);
    ellipse(width/1.7,height/1.5, 50, 50);
    //baby neck
    fill("brown");
    rect(width/2.22, height/4, 50, 90);
    //hair
    fill("black");
    ellipse(width/2, height/5.5, 90, 60);
    //eyes
    fill("black");
    ellipse(width/2.2, height/3.8, 15, 15);
    ellipse(width/1.85, height/3.8, 15, 15);
    //pacifier
    fill("white");
    ellipse(width/2, height/3.2, 30, 20);
    fill("pink");
    ellipse(width/2, height/3.2, 10, 15);
    

    
}
function mousePressed() {
    //click on the baby's bib/ stomach
    if (mouseX < width/2 + 30 &  mouseX > width/2 - 30 && mouseY < height/2 + 40 && mouseY > height/2- 40){
        stomach.play();
        
        }else{
        stomach.pause();
    }
    //click on the baby's neck/pacifier area
    if (mouseX < width/2 + 10  &  mouseX > width/2 - 30 && mouseY < height/2+20 && mouseY > height/4){
        laugh.play();

        }else{
        laugh.pause();
    }
    //click on the baby's diaper
    if (mouseX < width/2 + 10  &  mouseX > width/2 - 30 && mouseY < height/1.5 && mouseY > height/1.7){
        fart.play();
        }else{
        fart.pause();   
    }
    //click on the bab'ys left leg
    if (mouseX < width/1.55 + 10  &  mouseX > width/2.55 - 10 && mouseY < height/1.5+20 && mouseY > height/1.7){
        cry.play();
        }else{
        cry.pause();

    }

}

I wanted to create a sketch that was cohesive but still had different sounds that would be interesting when put together. I was inspired when I was walking past a woman who had two kids, one was crying and one was laughing. Babies make a variety of sounds and these are just a few interesting ones.

Charmaine Qiu – Looking Outwards – 11

Mimi Son is one of the founders of an art studio based in Seoul called Kimchi And Chips that specializes artworks that combine with the sciences and philosophy. One project that I find intriguing is the public artwork Halo created in 2018 that celebrates the fusion of nature and technology. The computational installation involved 99 robotic mirrors that constantly follow the location of the sun. At the same time, the mirrors emit beams of water mist that draw a bright circle in the air, mimicking the shape of the sun as it is brought down to earth. However, the circle’s completion depends entirely on the presence of the sun. In a way, this project collaborated with nature while exploring instances where it coexists with technology. I find the concept of robotic entities being completely controlled by nature very interesting, as it brought polar opposite aspects of design together to form a large scale installation.

Halo installation, 2018