Jacky Tian LookingOutwards 03

Generative Design – The Water Cube in Beijing

Exterior View of The Water Cube

The Water Cube is the perfect prove that the generative design provides a powerful opportunity for architecture to explore new ideas and techniques regarding structure. Generative design becomes a new introduced grammar in architecture. Moreover, with the help of generative design techniques, architects can explore the relationship between environment and structure. For example, in The Water Cube, during the day the building mostly rely on natural light and safes 55% of the energy for lighting. Also, the envelope is built with 3065 blue air cushions with customized sizes that can withhold the 20% of solar energy. With the solar energy reserves, it can be used to heat the swimming pools. In addition, 80% of the rain can be collected by the facade and be recycled and reused.

Interior View of The Water Cube

Source Link: https://www.arup.com/projects/chinese-national-aquatics-center

Victoria Reiter-Project 03-Dynamic Drawing

sketch

/*Victoria Reiter
Section B
vreiter@andrew.cmu.edu
Project-03
*/

// establishes global variables
// states amount of increase for angular rotation
var increment = 5;
// states angle of rotation
var angle = 0;
// states sizes of rectangles
var sizeA = 25;
var sizeB = 75;
// states center points of rectangles
var rect1X;
var rect2X;
var rect3X;
// states colors
var colorA = 255;
var colorB = 0;
var colorYellow = 'rgb(255, 251, 155)';
var colorBlue = 'rgb(181, 243, 255)';
var colorGreen = 'rgb(201, 255, 165)';

function setup() {
    // creates canvas dimensions
    createCanvas(640, 480);
    // defines positions of central points
    // for the drawing of rectangles
    rect1X = width / 6;
    rect2X = width / 2;
    rect3X = (5 * width) / 6;
}

function draw() {
    // sets background color to be pink
    // and a little opaque
    background('rgba(255,187,203,0.05)');
    // left most rectangle rotation
    push();
    translate(rect1X, height - mouseY);
    rotate(radians(angle));
    // draws rectangle from center point
    rectMode(CENTER);
    // sets visual aspects of rectangle
    strokeWeight(4);
    stroke(colorA);
    fill(colorB);
    rect(0, 0, sizeA, sizeA);
    pop();
    angle = angle + increment;
    // center rect rotation
    push();
    translate(rect2X, mouseY);
    rotate(radians(angle));
    // draws center rect
    rectMode(CENTER);
    strokeWeight(10);
    stroke(colorB);
    fill(colorA);
    rect(0, 0, sizeB, sizeB);
    pop();
    angle = angle - increment;
    // rightmost rect rotation
    push();
    translate(rect3X, height - mouseY);
    rotate(radians(angle));
    // draws right most rect
    rectMode(CENTER);
    strokeWeight(4);
    stroke(colorA);
    fill(colorB);
    rect(0, 0, sizeA, sizeA);
    pop();
    angle = angle + increment;

    // if mouse is located on bottom half of canvas
    // then rectangles change size and direction of rotation
    if (mouseY > height / 2) {
        sizeA = 75;
        sizeB = 25;
        increment = 5;
    }
    // if mouse is located on top half of canvas
    // then rectangles change size and direction of rotation
    if (mouseY < height / 2) {
        sizeA = 25;
        sizeB = 75;
        increment = -5;
    }
    // defines visual characteristics for when mouse is
    // in upper left section of canvas
    if ((mouseX < width / 3) & (mouseY < height / 2)) {
        colorA = colorYellow;
        colorB = 0;
    }
    // defines visual characteristics for when mouse is
    // in bottom left section of canvas
    if ((mouseX < width / 3) & (mouseY > height / 2)) {
        colorA = 0;
        colorB = colorYellow;
    }
    // defines visual characteristics for when mouse is
    // in upper middle section of canvas
    if ((mouseX > width / 3) & (mouseX < (2 * width) / 3) && (mouseY < height / 2)) {
        colorA = 0;
        colorB = colorBlue;
    }
    // defines visual characteristics for when mouse is
    // in bottom middle section of canvas
    if ((mouseX > width / 3) & (mouseX < (2 * width) / 3) && (mouseY > height / 2)) {
        colorA = colorBlue;
        colorB = 0;
    }
    // defines visual characteristics for when mouse is
    // in upper right section of canvas
    if ((mouseX > (2 * width) / 3) & (mouseY < height / 2)) {
        colorA = colorGreen;
        colorB = 0;
    }
    // defines visual characteristics for when mouse is
    // in bottom right section of canvas
    if ((mouseX > (2 * width) / 3) & (mouseY > height / 2)) {
        colorA = 0;
        colorB = colorGreen;
    }
    // defines visual characteristics for when mouse is
    // on the left section of the canvas
    if (mouseX < width / 3) {
        fill('rgb(187, 4, 131)');
        textAlign(CENTER);
        textSize(25);
        textFont('Georgia');
        textStyle(BOLD);
        text("YOU", rect1X, mouseY);
    }   else {
        noStroke();
        }
    // defines visual characteristics for when mouse is
    // on the middle section of the canvas
    if ((mouseX > width / 3) & (mouseX < (5 * width) / 6)) {
        fill('rgb(187, 4, 131)');
        textAlign(CENTER);
        textSize(25);
        textFont('Georgia');
        textStyle(BOLD);
        text("ARE", rect2X, height - mouseY);
    }   else {
        noStroke();
        }
    // defines visual characteristics for when mouse is
    // on the right section of the canvas
    if (mouseX > (5 * width) / 6) {
        fill('rgb(187, 4, 131)');
        textAlign(CENTER);
        textSize(25);
        textFont('Georgia');
        textStyle(BOLD);
        text("BEAUTIFUL", rect3X, mouseY);
    }   else {
        noStroke();
        }
}

Here is the design I made! As the mouse moves from left to right, the colors of the rectangles, as well as their outline, changes, and different words appear depending on where the mouse is located. Two squares move in opposite direction of the y-value of the mouse, and one moves along with the mouse’s y-value, and opposite for the words. As the mouse moves from top to bottom of the screen, the squares also change size and direction of rotation. Also, the background is not completely opaque, allowing you to see the outlines of the shapes as they move, which I think creates a kind of soothing echo-effect that adds to the aesthetics of the graphic.

Ultimately, the factors that change are: position, size, color, and angle.

I think it is a pretty little interactive image with a good message that can cheer you up if you’re ever feeling gloomy. :’)

ChristineSeo-Project-03-SectionC

sketch

// Christine Seo
// Section C
// mseo1@andrew.cmu.edu
// Project-03

var leftColor; 
var rightColor;
var inBetweenColor;
var inBetweenPosition;
var angle1 = 0;
var angle2=0;


function setup() {
    createCanvas(640, 480);
    leftColor = color (200, 171, 223);
    rightColor = color (35, 42, 97);
    inBetweenColor = color (115, 171, 223);
    inBetweenPosition = 0;
    
}

function draw() {
	//background color change
	inBetweenPosition = map (mouseX,0, width, 0, 1);
	inBetweenColor = lerpColor(leftColor,rightColor,inBetweenPosition);
	background(inBetweenColor);

	//triangles bottom
	push();
	fill(mouseX+200, mouseY, 100);
	triangle(100, 360, 0, 480, 140, 480);
	fill(mouseX+200, mouseY, 300);
	triangle(210, 270, 110, 480, 290, 480);
	triangle(570, 240, 430, 480, 650, 480);
	fill(mouseX+200, mouseY, 100);
	triangle(410, 370, 270, 480, 510, 480);
	pop();

	//triangles top
	push();
	fill(mouseX+200, mouseY, 300);
	noStroke(0);
	triangle(100, 160, 0, 0, 140, 0);
	triangle(410, 170, 270, 0, 510, 0);
	fill(mouseX+200, mouseY, 100);
	triangle(210, 70, 110, 0, 290, 0);
	triangle(570, 30, 430, 0, 650, 0);
	pop();

	//triangle moves
	noStroke(0);
	if (mouseY>height/2){
		fill(mouseX+200, mouseY, 100);
		triangle(100, 270, 0, 0, 140, 0);
		fill(mouseX+200, mouseY, 300);
		triangle(100, 270, 0, 480, 140, 480);

		fill(mouseX+200, mouseY, 100);
		triangle(210, 140, 110, 480, 290, 480);
		fill(mouseX+200, mouseY, 300);
		triangle(210, 140, 110, 0, 290, 0);

		triangle(410, 240, 270, 480, 510, 480);
		fill(mouseX+200, mouseY, 100);		
		triangle(410, 240, 270, 0, 510, 0);

		triangle(570, 150, 430, 480, 650, 480);
		fill(mouseX+200, mouseY, 300);		
		triangle(570, 150, 430, 0, 650, 0);
	}

	//eyes
	fill(255);
	var x1=map(mouseX,0,width,163,173);
	ellipse (x1,270,40,40);
	var x2=map(mouseX,0,width,233,253,true);
	ellipse (x2,270,40,40);

	fill(0);
	var x3=map(mouseX,0,width,154,174);
	ellipse(x3,265,10,10);
	var x4=map(mouseX,0,width,224,254,true);
	ellipse(x4,265,10,10);

	fill(255);
	var x1=map(mouseX,0,width,360,370);
	ellipse (x1,160,40,40);
	var x2=map(mouseX,0,width,430,450,true);
	ellipse (x2,160,40,40);

	fill(0);
	var x3=map(mouseX,0,width,350,370);
	ellipse(x3,155,10,10);
	var x4=map(mouseX,0,width,420,450,true);
	ellipse(x4,155,10,10);

	//rotating rectangles
	fill(255);
	noStroke(0);
	push();
	rotate(radians(-angle1));
    ellipse(angle2, angle2, 0.1, 0.1);
	rect(140,135,10,10);
	rect(30,185,10,10);
	rect(70,245,30,30);
	rect(180,175,20,20);
	rect(120,195,10,10);
	rect(270,295,80,80);
	rect(299,355,10,10);
	rect(350,255,50,50);
	rect(490,155,70,70);
	rect(530,195,40,40);
	rect(620,285,10,10);
	pop();
    angle1 += mouseX/100;
    angle2 += 0.5;
}

I enjoyed being able to interact with my work through a mouse. I made sure to use many different elements and played with the color of the background and triangles. I also wanted to focus on using both the mouseX and mouseY. I think the eyes made the piece come together to make it more interesting as well!

Kai Zhang-Project-03-Dynamic-Drawing

project03-kaiz1

//Kai Zhang
//Section B
//kaiz1@andrew.cmu.edu
//Project-03

var RECX = 255 / 480; //remap color index in X
var RECY = 255 / 640; //remap color index in Y

var REAX = 720 / 480; //remap angle index in X
var REAY = 720 / 640; //remap angle index in Y

var diffx = 0;
var diffx = 0;
var diffx1 = 0;
var diffy1 = 0;
var x = 240;
var y = 320;
var x1 = 240;
var y1 = 320;

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


function draw() {
	background(x*1.2, y*1.2, abs(x - y));
	
	//set delay for the movement
    diffx = mouseX - x;
    diffy = mouseY - y;
    diffx1 = mouseX - x1;
    diffy1 = mouseY - y1;

    x = x + 0.07*diffx;
    y = y + 0.07*diffy
    x1 = x1 + 0.06*diffx1;
    y1 = y1 + 0.06*diffy1;

    //the central dot
	translate(mouseX, mouseY);

	noStroke();
	fill(y * RECY, abs(x - y) * RECY, x * RECX)
	ellipse(0, 0, 20, 20)

	//the faster arcs
	translate(-mouseX, -mouseY);
	translate(x, y);//recenter canvas by using delayed variable

	strokeWeight(x/50 + y/50);
	noFill();

	stroke(y * RECY, x * RECX, abs(x - y) * RECY);
	arc(0, 0, 50, 50, REAX * x, REAX * x + 120);
	arc(0, 0, 130, 130, REAX * x - y, REAX * x - y + 120);
	arc(0, 0, 210, 210, REAX * y - x, REAX * y - x + 120);

	stroke(x * RECX, abs(x - y) * RECY, y * RECY);
	arc(0, 0, 70, 70, REAY * y, REAY * y + 120);
	arc(0, 0, 150, 150, REAY * y - x, REAY * y - x + 120);
	arc(0, 0, 230, 230, REAY * x - y, REAY * x - y + 120);

	//the slower arcs
	translate(-x, -y);
	translate(x1, y1);//recenter canvas again

	stroke(abs(x - y) * RECY, y * RECY, x * RECX);
	arc(0, 0, 90, 90, -REAX * x, -REAX * x + 120);
	arc(0, 0, 170, 170, REAY * y + x, REAY * y + x + 120);
	arc(0, 0, 250, 250, REAY * x + y, REAY * x + y + 120);

	stroke(abs(x - y) * RECY, x * RECX, y * RECY);
	arc(0, 0, 110, 110, -REAY * y, -REAY * y + 120);
	arc(0, 0, 250, 250, REAY * x + y, REAY * x + y + 120);
	arc(0, 0, 270, 270, -REAY * x + y, -REAY * x + y + 120);

}

In this project, I’ve created a series of arcs that rotates around the same center dot. There are four visual variables of the shapes, the arc rotation, arc colors, arc positions, and arc stroke weight. Also the canvas is changing the colors. All the variables are controlled by the mouse X and Y positions. In order to make it more visually pleasing, I’ve set delays of different parameters of the arc movings and color changings. So they would in fact spend some time to reach their desired conditions.

Victoria Reiter – Looking Outwards – 03

Product design studio uses CAD software to craft stone architecture inspired by nature

Anoma, a product design studio, combines seemingly un-like forces to technologically create natural masterpieces. The studio takes inspiration from nature, such as the delicate and often overlooked vein structure on leaves, and amplifies it to create large-scale works of sculpture and structure on slabs of materials such as granite, marble, and limestone. Designs are first etched out by hand, then drawn using CAD software, amplifying the patterns, charting out where lines will be deeper, until it is sent to a CNC machine to be cut out before ultimately being finished by hand.

See the process below or here.

What I find inspiring about this is how it combines unlike forces: inspiration from nature, execution by technology; large machines cutting through hard rock, with delicate finishes by human hands; utilitarian and heavy building materials like rock, being used for delicate art.

Inspired by xylem
Inspired by maple

Furthermore, growing up my dad always told me how he operated CNC machines for the better part of his life. Since I was a kid when he did this, I never really thought about what this meant. So, seeing a video of a CNC machine operating gave me insight into what it is he did for 28 years.

More information available here.

Looking Outwards – 03 Min Lee

Skyline is a computer-generative music video by Raven Kwok created using many core principles which were used to generate beautiful visual patterns, one of the principles being Voronol tesselation, a geometric model that is used by many computational artists. The geometric patterns in the music video create a behavioral diagram that shifts itself not only according to the audio of the song but also to the animated sequences of the vocalist singing.

What I find amazing about this project is the artist’s ability to use large amounts of geometric shapes to seamlessly create visual stimulation to represent not only the instrumental, but to also use those same shapes to create a smoky figure of the vocalist. The vocalist’s face is fully recognizable as a person if not only for a split second before once again seamlessly changing into an array of different shapes and inkblot-like figures. The creator’s artistry shines through in his ability to not only create computer-generative, but to also use music as a part of his medium.

Source: http://parametricworld.tumblr.com/post/129838926923/prostheticknowledge-skyline-music-video-for

Emily Zhou –– Dynamic Drawing

Moving the mouse to the right side of the frame will draw a colour-changing spiral. Move the mouse to the left side of the frame will erase the spiral.

sketch

// spiral variables:
var angle = 0;
// position parameter
var circleX = 25;
// to keep track of circles
var counter = 0;
// color parameter
var R = -100;
var G = 200;
var B = 20;
// calculation: 360 degrees / 5 degree angle change
var CIRCLES_PER_ROUND = 360 / 5;

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

function draw() {

    // spiraling colored circles

    // to limit circle size of spiral
    if (counter < 25 * CIRCLES_PER_ROUND) {
        push();
        translate(320, 240);
        rotate(radians(angle));
        // stroke overlap creates smaller circles toward center
        // (size parameter)
        stroke(0);
        // RGB used in color parameter
        fill(R + ((counter - CIRCLES_PER_ROUND) / 8), 
             G - ((counter - CIRCLES_PER_ROUND) / 8),
             B + ((counter - CIRCLES_PER_ROUND) / 8));
        // circleX used in position parameter
        ellipse(circleX, 0, 5, 5);
        pop();
        if (mouseX > width / 2) {
            circleX = circleX + 0.1;
            angle = angle + 5;
            // circle is drawn on every count
            counter = counter + 1;
        }
    }
    
    // spiraling black circles 
    // (opposite direction to "erase")

    // to prevent spiral in opposite direction
    if (counter > 0) {
        push();
        translate(320, 240);
        rotate(radians(angle));
        stroke(0);
        fill(0);
        // circleX used in position parameter
        ellipse(circleX, 0, 7, 7);
        pop();
        if (mouseX < width / 2) {
            // circles drawn counterclockwise
            circleX = circleX - 0.1;
            angle = angle - 5;
            // to keep track of last colored circle
            counter = counter - 1;
        }
    }


    // smiley face

    var m = max(min(mouseX, 640), 0);
    // used in angle parameter
    var angleSmile = m * 640 / 360;

    // yellow circle
    fill(255, 230, 0);
    ellipse(width / 2, height / 2, 50, 50);
    // mouth
    strokeWeight(1.5);
    push();
    translate(320, 240);
    rotate(radians(angleSmile));
    arc(0, 0, 35, 35, 0, PI);
    pop();
    angleSmile = angleSmile + 5;
    // L eye
    fill(0);
    push();
    translate(320, 240);
    rotate(radians(angleSmile));
    ellipse(-8, -7, 3.5, 7);
    pop();
    angleSmile = angleSmile + 5;
    // R eye
    fill(0);
    push();
    translate(320, 240);
    rotate(radians(angleSmile));
    ellipse(8, -7, 3.5, 7);
    pop();
    angleSmile = angleSmile + 5;
    
}

I had some trouble with this project. I started with this idea in mind but realized pretty late into the game that the spiral drawing required background() to be under setup() but adding size parameters required it to be under draw(). I eventually found another way using stroke() but it still limited the graphics. Setting color parameters was also difficult since it was hard to predict; I ended up just experimenting with random values.

Looking Outwards 3

https://n-e-r-v-o-u-s.com/projects/sets/kinematics-dress/

The ‘Kinematics’ dress made by nervous system.

I chose to explore the fashion side of the computer generated physical forms. I really admire the movement that the creators were able to achieve with the dress. I inserted a photo of the dress above, but the clickable link includes a GIF of a person walking in the dress, and it really sways like a fabric that has shape but also has fluidity, which is incredible considering the fabric is nylon. It is also amazing to see that the creators have made a garment that is able to be fully customizable and can fit any body type. It is clear that the creators have strong artistic direction in addition to being extremely competent with the computer generation aspect of their art as well. There isn’t much information on the algorithms they use but the creators make their designs very accessible to the public and able for anyone to customize.

P03: Dynamic Drawing – Erin Fuller

I based my initial design off of the idea of the rotational translation we learned in our lab session. Using the mouse position you can change: the background color, sizes of the level one and level two circles, the distance of circles from the center, and the rotation of the level two circles around the level one circles.

//Erin Fuller
//SectionA
//efuller@andrew.cmu.edu
//Project 03

function setup() {
    createCanvas(640, 460);
    rectMode(CENTER);
}

function draw(){
    colorMode(HSB);
	backH = mouseX/width*360; // background hue change depending on mouseX
	backS = mouseY/width*360; // background saturation change depending on mouseY
    var c = color(backH, backS, 70); 
    background(c);

	var eS = mouseX/10 // inner circle size change depending on mouseX
	var eO = mouseX/45 // outer circle size change depending on mouseX

	translate(width/2, height/2);
	for (var num = 0; num < 8; num++) {
		push();
		rotate(TWO_PI * num / 6);
		translate(mouseX/2, 0); // pushes larger circles out based on X postion
		ellipse(0, 0, eS, eS); // inner circles
		for (var j = 0; j < 15; j++) {
			push();
			var spin = mouseX/width * TWO_PI // causes smaller circles to go around the big circle
			rotate(spin * j / 9); 
			ellipse(40, 0, eO, eO); // outer circles
			pop();
		}		
		translate()
		pop();
	}
}

Han Yu Looking Outwards 03

Meshu is a project started by two technological artists Rachel Binx and Sha Hwang. It generates artistically crafted earrings, necklaces, bracelets and rings  from the map data entered by users. I admire this project because the products are both aesthetically pleasing and meaningful to whoever ordered them. You can use it as a sweet reminder of a memorable trip or a special place in your heart and wear it all the time. The all designs are in a minimalist style but guaranteed to be unique.

Meshu’s creation process.

Binx and Hwang use custom algorithm to generate a Meshu based on the cities and locations that customers have entered. I haven’t been able to find the exact algorithmic technique that they use to design the Meshu but each designs are 3D printed before any further work.

White Nylon Earrings made by Meshu.
White Nylon Necklace in pedal by Meshu.