Anthony Ra – Project 07 – Curves

sketch

/* Anthony Ra
Section-A
ahra@andrew.cmu.edu
Project-07 */

function setup() {
    createCanvas(480, 480);
    frameRate(100);
}

function draw() {
    background(255);

/* mapping the colors so that it changes based on mouseX */
    var r = map(mouseX, 0, width, 140, 180);
    var g = map(mouseX, 0, width, 160, 190);

/* printing hypotrochoid */
    push();
    stroke(r, g, 255);
    strokeWeight(0.25);
    translate(width/2, height/2);
    drawHypotrochoid();
    pop();
}

function drawHypotrochoid() {
/* naming variables */
    var hypoX;
    var hypoY;
/* radius of hypotrochoid */
    var hypoRadius = 240;
/* hypotrochoid alteration with cursor */
    var a = map(mouseX, 0, width, 0, 5);
    var b = map(mouseY, 0, height, 0, 3);
    beginShape();
      for(var i = 0; i < 300; i ++) {
        var angle = map(i, 0, 200, 0, 360);
/* equation of hypotrochoid from the link */
        hypoX = (a - b) * cos(angle) + hypoRadius * cos((a - b) * angle);
        hypoY = (a - b) * sin(angle) - hypoRadius * sin((a - b) * angle);
        vertex(hypoX, hypoY);
      }
    endShape();
}

hypotrochoid chart

Thinking about the project that we did a couple weeks ago on string art, I focused on curves that bring lightness, tranquility, and balance in regards to symmetry and motion. The purpose of picking a hypotrochoid is the many ways in which the control points of each line or curve responds differently but respects the symmetry in balance.

variation with the largest radius

Looking back at the hypotrochoid chart, that moment of the cursor provides the twelfth iteration, producing a modular set of filleted triangular curves.

second variation
a similar variation to the above one
a similar variation to the above one

Anthony Ra – Looking Outwards 06

one computable art piece by Frieder Nake

Frieder Nake has done a series of matrix multiplications in which all contain various series of squares outlines of different colors. Some lines are thicker than others while some lines are slanted while others are not.

similar code with different generated art

The decisions of which colors and which sides of each squares should be filled are from a mathematic algorithm within a matrix that Nake used for several images. The result produced from it is what is the randomness of it.

another mathematical algorithm for this series
another mathematical algorithm for this series

Anthony Ra – Project 06 – Abstract Clock

sketch

/* Anthony Ra
Section-A
ahra@andrew.cmu.edu
Project-06 */

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

function draw() {

  var phoneStart = 130;
  var phoneEnd = 220;
  var screenWidth = 220;
  var screenHeight = 400;

/* phone */
  noStroke();
  fill(0);
  rect(127.5, 15, 225, 450, 20);
  fill(180);
  rect(phoneStart, 40, phoneEnd, 400, 10);

/* phone lenses */
  stroke(50);
  strokeWeight(3);
  line(width/2 - 20, 27.5, width/2 + 20, 27.5);
  noStroke();
  fill(60);
  ellipse(width/2 + 60, 27.5, 10, 10);
  ellipse(width/2 + 80, 27.5, 5, 5);

  noStroke();

/* grid lines on screen */
  for (var i = 140; i <= 340; i += 10) {
    stroke(255);
    strokeWeight(0.25);
    line(i, 40, i, 440);
  }

  for (var i = 40; i <= 430; i += 10) {
    stroke(255);
    strokeWeight(0.25);
    line(phoneStart, i, 350, i);
  }

/* current time variables */
  var D = day();
  var H = hour();
  var M = minute();
  var S = second();

/* rectangle widths */
  var mappedD = map(D, 0, 30, 0, screenWidth);
  var mappedH = map(H, 0, 23, 0, screenHeight);
  var mappedM = map(M, 0, 59, 0, screenHeight);
  var mappedS = map(S, 0, 59, 0, screenWidth);

  fill(90, 255, 70);
  rect(phoneStart, 310, mappedD, 10);
  fill(255, 204, 0);
  rect(150, 40, 10, mappedH);
  fill(255, 100, 120);
  rect(300, 40, 10, mappedM);
  fill(100, 120, 255);
  rect(phoneStart, 150, mappedS, 10);

/* apps */
  noStroke();
  /* facebook */
  fill(50, 80, 200);
  rect(width/2 - 100, 270, 35, 35, 10);
  /* snapchat */
  fill(255, 230, 0);
  rect(width/2 - 50, 270, 35, 35, 10);
  /* gmail */
  fill(255);
  rect(width/2 + 15, 270, 35, 35, 10);
  stroke(255, 0, 0);
  strokeWeight(5);
  line(258, 273, 272.5, 285);
  line(272.5, 285, 287, 273);
  /* espn */
  noStroke();
  fill(255);
  rect(width/2 - 50, 220, 35, 35, 10);
  stroke(255, 0, 0);
  strokeWeight(5);
  line(203, 230, 218, 230);
  line(200, 237, 215, 237);
  line(200, 237, 197, 244);
  line(197, 244, 212, 244);
  /* messenger */
  noStroke();
  fill(255);
  rect(width/2 + 15, 220, 35, 35, 10);
  fill(80, 120, 255);
  ellipse(width/2 + 32.5, 237.5, 30, 25);
  triangle(262, 237.5, 260, 252, 285, 237.5);
  /* spotify */
  noStroke();
  fill(0);
  rect(width/2 + 65, 270, 35, 35, 10);
  fill(0, 180, 0);
  ellipse(width/2 + 82.5, 287.5, 30, 30);
  stroke(0);
  strokeWeight(4);
  beginShape();
  curveVertex(315, 282);
  curveVertex(315, 282);
  curveVertex(322.5, 280);
  curveVertex(330, 284);
  curveVertex(330, 284);
  endShape();
  strokeWeight(3);
  beginShape();
  curveVertex(315, 288);
  curveVertex(315, 288);
  curveVertex(321, 286);
  curveVertex(328, 290);
  curveVertex(328, 290);
  endShape();
  strokeWeight(2);
  beginShape();
  curveVertex(317, 294);
  curveVertex(317, 294);
  curveVertex(321, 292);
  curveVertex(326, 295);
  curveVertex(326, 295);
  endShape();
  /* phone */
  noStroke();
  fill(0, 180, 0);
  rect(width/2 - 100, 385, 35, 35, 10);
  stroke(255);
  strokeWeight(5);
  beginShape();
  curveVertex(152, 394);
  curveVertex(152, 394);
  curveVertex(150, 400);
  curveVertex(160, 410);
  curveVertex(165, 407);
  curveVertex(165, 407);
  endShape();
  /* contact */
  noStroke();
  fill(230, 140, 0);
  rect(width/2 - 50, 385, 35, 35, 10);
  fill(255);
  ellipse(207.5, 400, 17, 20);
  triangle(208, 405, 196, 415, 220, 415);
  /* message */
  noStroke();
  fill(255, 0, 0);
  rect(width/2 + 15, 385, 35, 35, 10);
  fill(255);
  rect(width/2 + 22, 390, 23, 20, 5);
  triangle(width/2 + 22, 405, width/2 + 20, 415, width/2 + 26, 410);
  /* camera */
  noStroke();
  fill(255, 120, 255);
  rect(width/2 + 65, 385, 35, 35, 10);
  fill(255);
  rect(width/2 + 70, 395, 25, 18);
  noFill();
  stroke(255);
  strokeWeight(3);
  rect(width/2 + 75, 390, 15, 10);
  noStroke();
  fill(255, 120, 255);
  ellipse(322.5, 404.5, 12, 12);
  /* notification */
  noStroke();
  fill(255, 0, 100);
  ellipse(width/2 - 70, 275, 15, 15);
  ellipse(width/2 - 20, 275, 15, 15);
  ellipse(width/2 + 45, 275, 15, 15);
  ellipse(width/2 + 45, 225, 15, 15);
  fill(255);
  text('2', width/2 - 72, 278);
  text('1', width/2 - 22, 278);
  text('8', width/2 + 43, 278);
  text('3', width/2 + 43, 228);
/* Verizon Wireless */
  noStroke();
  fill(0);
  textSize(10);
  text('Verizon Wireless', 140, 50);



}

For some reason, the background screen for the Google Nexus One popped into my head. It is a pixelated background with a series of primary-colored (and yellow) lines moving through the screen.

Nexus One wallpaper

I replicated that onto my current smart phone and mapped it in a way that the viewer would read the time in an abstract manner. Since most of us look at out phones to look at the time, it was a challenge for me look into way to visually tell time.

sketch

Anthony Ra – Looking Outwards 05

Coco – Behind the scenes

Coco cover page

Pixar Animation Studio is recognized as one of the leading producers in animation films and design computer graphics. One of their most recent projects I want to look at is “Coco”. Coco goes beyond just the CG animation in their work and instead used VFX (visual effects).

Within this movie, one of the clips of the behind the scenes I found is the computer graphics of the movement of cloth in skeletons. Using a series of meshes, graphic artists simulate those clothing on the skeletal characters.

concept art of clothes on characters

However, the designers issued that the problem is that skeletons are made up of really tiny bones, and because the control points have to match for the clothes and bones, the movement would make some of the bones see through from the clothes. This basically looks like clothes sinking into the cracks of the bones like something falling in quicksand.

concept art of clothes on characters

Their solution is a concept called continuous collision detection, where meshes detect all the collisions of selected objects. This works even if the object is moving really fast, which is prevalent is any characters in animation movies.

Anthony Ra – Project 05 – Wallpaper

sketch

/* Anthony Ra
Section-A
ahra@andrew.cmu.edu
project-05 */

function setup() {
    createCanvas(640, 400);
    background(235, 205, 255);
    var varWidth = 100;
    var varHeight = 60;
    var starty = 0;
    var startx = 0;

    for (var y = 0; y < 10; y++) {
        for (var x = 0; x < 18; x++) {
            var py = starty + y * varHeight;
            var px = startx + x * varWidth;
      /* moving cube to just the right */
            if (y%2 == 0) {
              px = (startx - 25) + x * varWidth;
            }
            else {
              px = startx + x * varWidth;
            }
            noStroke();
          /* top of the cube */
            fill(255, 205, 235);
            quad(px, py, px + 25, py - 15, px + 50, py, px + 25, py + 15);
            fill(255, 230, 255);
            quad(px + 5, py, px + 25, py - 12, px + 45, py, px + 25, py + 12);
          /* left side of the cube */
            fill(255, 170, 200);
            quad(px, py, px + 25, py + 15, px + 25, py + 60, px, py + 45);
            fill(255, 200, 225);
            quad(px + 5, py + 8, px + 20, py + 18, px + 20, py + 52, px + 5, py + 43);
          /* right side of the cube */
            fill(255, 145, 180);
            quad(px + 25, py + 15, px + 50, py, px + 50, py + 45, px + 25, py + 60);
            fill(255, 160, 205);
            quad(px + 30, py + 18, px + 45, py + 8, px + 45, py + 43, px + 30, py + 52);
        }
    }
    noLoop();
}

I brought over the color theory from last week’s project and utilized it to make a series of repeating cubes. The inspiration of this popular pattern came from a bus ride back from a haircut I got at Bloomfield. I did a basic sketch on how the variables would be separated and implemented it in code to make a simple pattern that is stress-relieving to the eye.

sketch

Anthony Ra – Looking Outwards 04

close up on “Lenses”

“Lenses” is an interactive sound art installation by creative agency, Hush, in which the differently shaped prisms refract light in the direction that the user turns. When twisted on the walled surface, the refraction of the light and its composition is translated to a software and projects sound in real time. This allows a calm duality in light projection and soundscape.

the position of the prisms correlate with the direction in which light emits
user interacting with the installation

The idea from the designers was for an audiovisual installation to reflect the ideas between designers, artists, musicians, and technologists. The end result of this piece is allowing to integrate multiple different fields in crossing boundaries and creating something visually appealing and interacting for the user.

Video of “Lenses”

Anthony Ra – Project-04-String-Art

sketch

/* Anthony Ra
Section-A
ahra@andrew.cmu.edu
Project-04 */

var x1;
var x2;
var y1;
var y2;

function setup() {
  createCanvas(400, 300);
  background (0);

}

function draw() {

  /* drawing rectangles increasing */

  for (var i = 0; i <= 500; i += 5) {

    stroke(50);
    strokeWeight(0.25);
    line(i, 0, i, height);


  }

  for (var i = 0; i <= 375; i += 10) {

  /* curve along the top-right corner */
  /* least sloped curve */
  stroke(168, 143, 225);
  line(i, 0, width + i, i);
  /* steeper curve */
  stroke(168, 143, 200);
  line(i, 0, width, i);
  /* slopiest curve along top-right corner */
  stroke(168, 143, 175);
  line(i, 0, width - i, i);
  /* reflection from the previous lines of code along y-axis */
  stroke(213, 142, 165);
  line(i, i, width - i, 0);
  /* long curve along bottom-left corner */
  stroke(295, 142, 165);
  line(0, i, i, height);
  /* long curve along top-left corner */
  stroke(200, 125, 165);
  line(i, 0, 0, height - i);
/* curves along the diagonal axis */
  stroke(154, 89, 140);
  line(i, i, 0, height - i);

  /* curve symmetry along x-axis */
  strokeWeight(0.25);
  stroke(200, 50, 140);
  line(width, height - i, -i, i);
  line(width, i, -i, height - i);

  /*
  strokeWeight(0.25);
  line(0, height - i, width, height);
  line(0, height - i, width, 0);
*/
}

}

The purpose of making all my strings a different shade of pink is for a calming effect for myself. Along with that is a bevy of symmetry along multiple axes; however some of these lines of code produces visually asymmetrical results. Combining those together, with an emotionally stressful week, this is a reminder for me that it id okay to be imperfect and to take my day to day life less seriously. Live my life.

Anthony Ra – Looking Outwards – 03

Wood-Skin Video 

Demonstrating flexibility of wood-skin

Wood-Skin is a fabrication firm that attempts to use ideas of digital fabrication and typical building materials to build new composite materials and technology. It is described as the most flexible 3D surfaces for architecture and design.

Wood-skin can be altered into whatever function and decor is wanted

The process begins with a digital model through a CAD file. What also makes this project unique is the variety of materials that can be utilized such as wood, metal, acrylic, etc. In reality, wood-skin is fabricated with the combination of pliable nylon and polymer mesh.

table made with modules of wood-skin

The composite materials are generated from a digital file to a CNC mill where a series of modules of the same algorithm can be realized by fabricating them. They can also be altered based on thickness, pliability, and even overall shape.

wood-skin can be altered into different triangular patterns

The benefit of this computative fabrication is the elimination of a complex understructure that may be needed for complex forms. One can alter the pattern in however manner they like and can pave the way as using composite materials an option for building material.

 

Anthony Ra – Project03 – Dynamic Drawing

sketch

/* Anthony Ra
Section-A
ahra@andrew.cmu.edu
Project-03-DynamicDrawing */


/* assigning altering variables */
var tor = 150;
var tot = 3;
var torr = 100;
var tort = 5;
var torrr = 30;
var tortt = 0.5;
var dir = 1;
var speed = 2;
var speedd = 5;

function setup() {
  createCanvas(640, 480, WEBGL);
  frameRate(100);
  noCursor();

}

function draw () {

/* altering color of background */
  var r = map(mouseX, 0, height, 220, 215);
  var g = map(mouseX, 0, height, 255, 0);
  var b = map(mouseX, 0, height, 0, 255);
  background(r, g, b);

  noStroke();
  rotateX(mouseX * 0.01);
  rotateY(mouseY * 0.01);
  ambientLight(40, 210, 60);
  ambientMaterial(90, 200, 100);
  speed = mouseX / 20;
  torus(tor + speed*dir, tot + speed*dir);

/* movement of larger torus */
  noStroke();
  rotateX(mouseX * 0.01);
  rotateY(mouseY * 0.01);
  ambientLight(150, 30, 50);
  ambientMaterial(100, 50, 100);
  speed = mouseX / 20;
  torus(torr + speed*dir, tort + speed*dir);

/* movement of smaller torus */
  noStroke();
  rotateX(mouseX * 0.01);
  rotateY(mouseY * 0.01);
  ambientLight(50);
  ambientMaterial(150);
  speedd = mouseX / 10;
  torus(torrr + speedd*dir, tortt + speedd*dir);

}

This process was definitely a bit more challenging than the previous projects because I was thinking more about which lines of code was going to work rather than what I wanted my end product to look like. Something new that I played with is the implementation of 3-dimensional shapes and its movement along the mouse. I felt that toruses best represented the different angles that can be controlled by the mouse.

Anthony Ra – Looking Outwards – 02

“Unreleased Thoughts – neurons fire, images form”

Instead of a specific installation or project, I decided to look at a singular artist’s collection of works. From his biography, Sergio Albiac plays with the “visual intersection between generative computer code and traditional media. I originally ran across his work while on Pinterest and part of what his work that is especially intriguing is his implementation of two things that I have much interest in – portraits and learning art through code.

Using voice and facial recognition to generate a portrait
2016 Internet Age Media Weekend

However, one of his works that stand out the most is “I am”. People sit in a visual portrait studio and, speaking to an audio application program interface, codes those words to create a portrait using those descriptions. It is the type of interactive artwork that does not involve the longevity of sitting through oil paintings or a couple nanoseconds of a flick of a film camera.

generated by sensors from cars

Part of what I really enjoy with his work is that it does not initially seem to have any generative-ness into it. Some of his work seems like oil paintings or watercolor, but upon further look, the ability to put computer programming and coding into a product that is convincingly realistic is something I definitely want to look into in the near future.