ITERATIVE DESIGN (II)_##4th round##____ STAGE 3&4 (CONSTRUCTION&TEST SEVERAL TIMES)

INDEX

TRIALS:

Adding the sound input:

Adding sound-sensitive shapes to the image, capturing thus the sound factor:

Splitting the image in four with the aim of making a looking-Kaleidoscope image.

Testing it in a different place.

Testing the sensibility of the sound, stoping the image with the lack of it.

Trying to duplicate and flip the image to get a more kaleidoscopic effect

Tests and portraits out doors.

Realise of the need to regulate sound sensibility if there is too much sound such in the following examples:

LAST TRIAL CODE:

MAIN PIECE OF CODE, SETUP AND DRAW


import processing.video.*;
Capture cam;

void setup(){

  cam = new Capture(this, 320, 240, 50);
  cam.start();
  background(255);
  colorMode(HSB);
  size(640, 480);
  frameRate(4);
  smooth();
  soundSetup();
  fondoSetup();

}

int N=0;

void draw() {   

   colours();
    fondoDraw();
    centre();
    soundDraw();
    tint(255,120);
    float k = getAmplitude();

    if (k>0.03){
    pushMatrix();
     translate(width/2, height/2);
     rotate(rot);
     rot = rot + 1;

    image(cam, -320,-240); //TL
    scale(1, -1);
    image(cam, -320, 0); //BL

    image(cam, 0,0); //TL
    scale(1, -1);
    image(cam, 0, -240); //BL

    image(cam, 0,-240); //TL
    scale(1, -1);
    image(cam, -320, -240); //BL

    image(cam, 0,-240); //TL
    scale(-1, 1);
    image(cam, 0, -240); //BL

    popMatrix();
  }

void captureEvent(Capture c){
  c.read();
}

CENTRAL SPINNING SHAPES, SENSITIVE TO SOUND


 int d = 100;
 int n = 50;
 int m = 50;
 int o = 50;
 int p = 50;
 int rot=0;

void centre(){

  float k = getAmplitude();

  if (k>0.03){
    pushMatrix();
      translate(width/2, height/2);
      rotate(rot);
      rot = rot + 1;
      drawCircle(0,0);
    popMatrix();
  }
}

void drawCircle(int x, int y){

  int max = width;

     d=(d+20)%max;

        fill(c2[4],100);
        noStroke();
        rectMode(CENTER);
        rect(x, y, d,d);

    if( d >= 100){
       drawCircle2();
    }
}

void drawCircle2(){

   int max = width; 

        n=(n+20)%max;

     if (brightness(c1[2])<=100){
        fill(c2[1],90);
        noStroke();
        ellipse(0, 0, n,n);
    }else{
        fill(c2[2],60);
        noStroke();
        rectMode(CENTER);
        rect(0, 0, n,n);
    }

     if( n >= 100){
      drawCircle3();
      }
  }

  void drawCircle3(){

   int max = width; 

        m=(m+20)%max;

     if (brightness(c1[3])<=100){
        fill(c2[4],60);
        noStroke();
        ellipse(0, 0, m,m);
    }else{
        fill(c2[0],70);
        noStroke();
        rectMode(CENTER);
        rect(0, 0, m,m);
    }

      if( m >= 100){
      drawCircle4();
    }

  }

    void drawCircle4(){

     int max = width;
      o=(o+20)%max;

     if (brightness(c1[0])<=100){
        fill(c2[1],60);
        noStroke();
        ellipse(0, 0, o,o);
    }else{
        fill(c2[3],80);
        noStroke();
       rectMode(CENTER);
        rect(0, 0, o,o);
    }

      if( m >= 100){

        drawCircle5();

    }

  }

      void drawCircle5(){

   int max = width; 

        p=(p+20)%max;

     if (brightness(c1[2])<=100){
        fill(c2[0],90);
        noStroke();
        ellipse(0, 0, p,p);
    }else{
        fill(c2[2],60);
        noStroke();
        rectMode(CENTER);
        rect(0, 0, p,p);
    }

  }

COLOURS TAKEN FROM WEBCAM


 color[] c1 = new color[5];
 color[] c2 = new color[5];

void colours(){

   c1[0] = cam.get(int(random(width/2)),int(random(height/2)));
   c1[1] = cam.get(int(random(width/2)),int(random(height/2)));
   c1[2] = cam.get(int(random(width/2)),int(random(height/2)));
   c1[3] = cam.get(int(random(width/2)),int(random(height/2)));
   c1[4] = #FFFFFF;

    c2[0] = cam.get(10,15);
    c2[1] = cam.get(250,100);
    c2[2] = cam.get(60,200);
    c2[3] = cam.get(300,160);
    c2[4] = cam.get(160,120);

}

SUBTILE BACKGROUND CIRCLES

AudioInput in;

void fondoSetup(){
  in = minim.getLineIn();
  in.enableMonitoring();

}

void fondoDraw(){

    float k = getAmplitude();
    int w=50;

    if (brightness(c2[4])<=126){
     for(int y=0; y<height; y=y+w){
       for(int x=0; x<width; x=x+w){
         noStroke();
         fill(c1[int(random(1,5))],2);
         rect(x, y, w, w);
       }
     }
    }else{
     for(int y=0; y<height; y=y+w){
       for(int x=0; x<width; x=x+w){
         noStroke();
         fill(c1[int(random(1,5))],2);
         ellipse(x, y, w, w);
       }
     }
}

}    

    float getAmplitude(){

  float n = 0;
  for(int i=0; i < in.bufferSize() - 1; i+=10){
    n += abs(in.mix.get(i));
  }
    println(n/10,"val");

  return n/10;                                   

}

SOUND

import ddf.minim.*;

Minim minim;
AudioPlayer player;

void soundSetup(){
    minim = new Minim(this);
    player = minim.loadFile("infinity.mp3");
    player.play();
}

void soundDraw(){
  float k = getAmplitude();

  for(int i = 0; i < in.bufferSize() - 1; i++)
  {
    float x1 = map( i, 0, in.bufferSize(), 0, width );
    float x2 = map( i+1, 0, in.bufferSize(), 0, width );

    fill(c1[4]);
    noStroke();
    ellipseMode(CENTER);
    ellipse(width/2, height/2, 150 + in.right.get(i)*50,150 + in.right.get(i+1)*1000);
    fill(c2[4]);
    strokeWeight(2);
    noStroke();
    ellipse(width/2, height/2, 50 + in.right.get(i)*1000,50 + in.right.get(i+1)*1000);

if(k>0.01){
    noFill();

    stroke(c2[4]);
    strokeWeight(1);

    line( x1, 450 + in.left.get(i)*1000, x2, 450 + in.left.get(i+1)*1000 );
}

  }

}

INDEX

ITERATIVE DESIGN (II)_ ##4th round##___ STAGE 2 (SOLVE)__MAIN CONCEPT

INDEX

MAIN CONCEPT 

Up to now, I have been struggling to find the style of my piece and the methodology to construct it.

However, I have it clear now. The main concept I will communicate is FINITE MOMENTS IN THE INFINITY OF THE UNIVERSE. Although the name of the project will be “Finite Moments”.

With my piece, I am going to communicate SUBJECTIVISM, MUNDANE LIFE, and UNIVERSE or MISTIC AND SPIRITUAL DIMENSION. To do so, I will dive into the concepts of INFINITY and FINITY. Wrapping everything up under the concept of GENERATIVE ART.

Generative Art is the art created by a non-human entity, in which the artist does not have full control of the result. Mostly, Generative Art is associated with pieces which are made using computers and code, although it might be done with other kind of systems that behave on their own, such as chemistry, biology or physics. (Wikipedia, 2015)

Here is another definition of Generative Art that I find really clear and comprehensible:

“Generative art refers to any art practice where the artist uses a system, such as a set of natural language rules, a computer program, a machine, or other procedural invention, which is set into motion with some degree of autonomy contributing to or resulting in a completed work of art.” (Galanter, )

Below there is an example of Generative Art made with robots. (Regin, 2012)

Another kind of Generative Art could be made with data blending. An artist which I personally love and who uses this method is Sabato Visconty:

glitch10
glitch11

glitch13

(Visconty, 2015)

I have decided to relate this project with Generative Art because it makes me think of life itself. In which, apparently, you have control over some factors but not over the whole. And there is always, what appears to be, a random surprising factor that you would not expect. In fact, I could say that, Generative Art and Life itself, have quite a lot in common (the surprise factor, control over some parts, events that some times get out of hand, the uniqueness and unrepeatableness of each piece/moment, the subjectiveness in the interpretation of it…).  And since my concept is directly related with life itself, what a better way to capture it than with the magic randomness of Generative Art.

As I have said, my piece is about life itself, and since I have decided to approach it in an artistic way, I will construct the essence of the project from my point of view. Not as something absolute and final but as something subjective and questionable.  Having said that, for me life is, apart from many other things, about the constant wavy mixture of INFINITY AND FINITENESS.

The dictionary describes these words as follows:

INFINITY: “In general, infinity is the quality or state of endlessness or having no limits in terms of time, space, or other quantity. In mathematics, infinity is the conceptual expression of such a “numberless” number.” (Rouse, 2005)

FINITENESS: “The quality of being finite” (Memidex, 2013)

FINITE:”Limited in size or extend” (Oxford Dictionary, 2015)

And from my point of view, Infinity is: UNIVERSE, COLOUR, ABSOLUTE IDEAS SUCH AS ARCHETYPES, THE “ALL”, CONCEPTS, THE IDEA OF DIFFERENT EXPERIENCES, SPIRITUAL RELATED MATTERS, ABSOLUTE IDEAS. Whereas finiteness is: MUNDANE LIFE, EXPERIENCES ITSEF, TIME, SPACE, OBJECTS, EVERY MATERIAL OBJECT, BODIES, WORLDLY RELATED MATTERS, 3DIMENTIONAL WORLD. In a nutshell, finiteness in life would be described by any experience that does not last forever. Whereas INFINITY would be anything which remains everlasting.

In the last post I was exploring fractals. They are a good example of infinite shapes made out of finite ones. It is a part of the wavy relationship between finiteness and infinity I was describing before. Small parties, that even with their limitation, together make something endless/boundless.

Nowadays, fractals are created mathematically using computer software, but they have been reproduced for many years of humanity. Long before computers existed and long before it was known that they were infinite by mathematical laws. One example is mandalas: “(Sanskrit: मण्डल Maṇḍala, ‘circle’) is a spiritual and ritual symbol in Hinduism and Buddhism, representing the Universe.” (Wikipedia, 2015). Mandalas have been reproduced since the 4t century. The creation of a mandala symbolises a kind of catalyst that transforms the pains of life into beauty and joy. Some subjects also use it to meditate and become a better self (Blume, 2015).

mandala-3_21177966 OLYMPUS DIGITAL CAMERA rosemary_jewels_colored circle_of_light

I find it really thought provoking and makes me ponder many things the fact that many centuries before fractals were discovered, monks were already creating those infinite patterns to describe the universe without knowing that those shapes had infinity properties for real. It makes me believe that it can not be something else but intuition and connectedness.

Traveling a bit closer to the present, in 1817, a Scottish inventor named Sir David Brewster, created a sort of telescope which he himself coined with the term of “Kaleidoscope”.  It is an opaque tube with an entrance of light at the bottom, and with different mirrors placed in the interior, with an angle of 60º, so that one reflects the other. There is a third component, small pieces that get reflected by the mirrors. The idea is to look through an small hole at one end of the tube while rotating the artefact. The mirrors reflect the pieces while those are moving because of the rotation, creating thus different fractal shapes.  (Wikipedia, 2015)

praxi kaleidoscope on purple car's white headlights Kaleidoscope katie_paterson_horizon_kaleidoscope

I always have find this object very magical. And it is another example of how you can create infinite patterns out of finite objects such as small pieces, light, mirrors and reflection.

Therefore, what I have decided, is to recreate a Kaleidoscope making a camera Kaleidoscope. And with it represent both, the finiteness found in the infinity and the infinity found in finiteness.

It will take values of our finite and mundane world such as SOUND, COLOUR, BRIGHTNESS, IMAGE, AND ALSO MOMENTS. Creating a fractal-like pattern, similar to a kaleidoscope. Trying, hence, to portrait the finiteness of the moment in which the picture/video is taken, and transport it to the infinity in which it is found.

REFERENCES:

Blume, N., 2015. Exploring the mandala, symbols of the universe.  [online] Asia Society. Available on: http://asiasociety.org/asia101/exploring-mandala

Galanter, P., What is Generative Art? Complexity Theory as a Context for Art Theory. Interactive Telecommunications Program, New York University, New York, USA

Memidex, 2013. Finiteness. [online] Memidex. Available on: http://www.memidex.com/finiteness

Regin, 2012. The 2012 Kinetica Art Fair: Intuition and Ingenuity. [online] Folksonomy. Available on: http://folksonomy.co/?search=robot&go=3

Rouse, M., 2005. Infinity. [online] TechTarget .Available on: http://whatis.techtarget.com/definition/infinity

Visconti, S., 2015. Glitch Art. [online] Sabato Visconti. Available on: http://www.sabatobox.com/glitch-photography

Wikipedia, 2015. Mandala. [online] Wikipedia. Available on: http://en.wikipedia.org/wiki/Mandala

Wikipedia, 2015. Kaleidoscope. [online] Wikipedia. Available on: http://en.wikipedia.org/wiki/Kaleidoscope

Wikipedia, 2015. Generative art. [online] Wikipedia. Available on: http://en.wikipedia.org/wiki/Generative_art

INDEX

ITERATIVE DESIGN (II)_##3rd round##____ STAGE 3 (CONSTRUCTION)

INDEX

I have followed a couple of tutorials to make some of the most famous fractal shapes.

THE SIERPINSKI TRIANGLE

It is one of the most famous fractal figures, the name was coined by the Polish mathematician in 1915. Although he only described it, since the triangle had been used from long before. It can be found in Italian cathedrals from the XIII century. It is a triangle which is filled with three triangles, forming thus, a white inverted triangle in the middle. Each triangle in the main triangle can be filled with the same pattern. It can be done infinitely.  (Westein, 2015)

IMAGE

sierpinski#

CODE::


void setup(){
size(640,600);
}

void draw(){
background(255);
drawCircle(width/2, height/2, 300);
}

void drawCircle(float x, float y, float d){
stroke(0);
noFill();
ellipse(x, y, d, d);
if (d > 2){
drawCircle(x+d/2, y, d/2);
drawCircle(x-d/2, y, d/2);
drawCircle(x, y+d/2, d/2);
}
}

THE KOCH LINE

The Koch line was first described by Koch in 1905. Is is built from an equilateral triangle, or from a line. It is cut in thirds, and the one in the middle is removed. Then another equilateral triangle is drawn where the third has been removed. In the case of the line, two lines with the same size of the one which has been removed are added, forming a kind of triangle without base. The process is repeated which each new line of the drawing.  (Westein, 2015)

IMAGE::

koch_line#

CODE::

ArrayList <KochLine> lines;

void setup(){
size(800, 400);
background(255);
lines = new ArrayList<KochLine>();
PVector start = new PVector(0, height-50);
PVector end = new PVector(width, height-50);
lines.add(new KochLine(start, end));
}

void keyPressed(){
if (key == 'b'){
generate();
}
}

void draw(){
background(255);
for(KochLine l : lines){
l.display();
}
saveFrame("koch_line#.png");
}

void generate(){
ArrayList next = new ArrayList<KochLine>();
for (KochLine l : lines) {
PVector a = l.kochA();
PVector b = l.kochB();
PVector c = l.kochC();
PVector d = l.kochD();
PVector e = l.kochE();

next.add(new KochLine(a, b));
next.add(new KochLine(b, c));
next.add(new KochLine(c, d));
next.add(new KochLine(d, e));
}
lines = next;
}


class KochLine {
PVector start;
PVector end;

KochLine(PVector a, PVector b) {
start = a.get();
end = b.get();
}

void display() {
stroke(0);
line(start.x, start.y, end.x, end.y);
}

PVector kochA() {
return start.get();
}
PVector kochB() {
PVector v = PVector.sub(end, start);
v.div(3);
v.add(start);
return v;
}

PVector kochC() {
PVector a = start.get();

PVector v = PVector.sub(end, start);
v.div(3);
a.add(v);

v.rotate(-radians(60));
a.add(v);

return a;
}

PVector kochD() {
PVector v = PVector.sub(end, start);
v.mult(2/3.0);
v.add(start);
return v;
}

PVector kochE() {
return end.get();
}
}

REFERENCES::

Shiffman, D., 2013. 8.2 Fractal Recursion (The Nature of Code) [online] Vimeo. Available on:http://vimeo.com/64424402

Shiffman, D., 2013. 8.3 Recursion with ArrayList of Objects (The Nature of Code). [online] Vimeo. Available on: http://vimeo.com/64424401

Weisstein, Eric W. Sierpiński SieveMathWorld— [online] Available on: http://mathworld.wolfram.com/SierpinskiSieve.html

Weisstein, Eric W. Koch Snowflake. MathWorld— [online] Available on: http://mathworld.wolfram.com/KochSnowflake.html

INDEX

ITERATIVE DESIGN (II)_##3rd round##____ STAGE 2 (SOLVE)

INDEX

I have discarded to using L-systems for several reasons which I have already described in the previous post. To summarise, I had decided to start making an image based on L-systems because, as I said at the beginning of the project, I would start making something simple using the concept of Generative Art, and develop the piece from there on without a clear aim. After the first iteration I decided to  experiment with the quick changeable feelings that a kinetic image can create in a viewer. However, while learning L-systems, I had come across the concept of fractals and I feel a deep curiosity towards them. This is why I have decided to explore these further.

Fractals are shapes which are self-similar at different scales. Therefore, they repeat themselves over and over again infinitely. (Shiffman, 2013)

The word fractal was coined in 1975 by the mathematician Benoit Mandelbrot. He says that a fractal is: “a rough or fragmented geometric shape that can be split into parts, each of which is (at least approximately) a reduced-size copy of the whole.” (Mandelbrot, 1982)

Fractals can be found in nature and they could be reproduced infinitely. Most articles and books about fractals talk about the property of self-similarity, but not about the one of self-affinity, which means that fractals are self-similar to themselves, and also similar to something greater than them. Finding, thus, the same patterns over and over again zooming in and out.   (Ramin, 2006)

Self-similarity:

fractal_nature phi5 phi2 phi1

Self-affinity:

brain_cell_universe

(Constantine, 2006)

Fractals, self-similarity and self-affinity are all related with the number Phi:  1.6180339887. This number is found in nature at all scales. From the leaves of a tree to a universe black hole.  It has been used by many artists, composers, architects and others, to make their pieces. (Chown, 2003)

IMG_6941

“La plaza de toros de Benicarló”, by Jordi Benito, Barcelona 

Here there are a couple of examples of fractals which struck me quite a lot:

(Repasky, 2013)

(Fractal, 2010)

Researching a bit more, I have discovered that who drew this last fractal was Escher:

m_c_escher_circle_limit_iii___fractal_projection_by_vladimir_bulatov-d4jzwwj

Maurits Cornelis Escher (1898-1972), is a wide-world known artist born in Netherlands. Much of his art work is done with fractals and “impossible” mathematic laws. An impressive fact about his artwork is that he did not have mathematical knowledge,  but a strong intuition of it. (Escher Foundation,. 2015)

1007.escher2 bond dragon escher10k hds-Tinguely-Niki-1 print-gallery

“To have peace with this peculiar life; to accept what we do not understand; to wait calmly for what awaits us, you have to be wiser than I am” – M.C. Escher

“The universe is mathematical chaos. It is both perfectly ordered and imperfectly chaotic, all at once.” (Troll2rocks, 2013)

Therefore, I have decided to make a piece using fractals.

REFERENCES:

Chown, M., 2003. The golden rule [on line] The Guardian. Available on: http://www.theguardian.com/science/2003/jan/16/science.research1

Constantine, D., 2006. [online] New York Times. Available on: http://www.nytimes.com/imagepages/2006/08/14/science/20060815_SCILL_GRAPHIC.html

Fractal., 2010. Fractal Zoom (Last Lights On) Mandelbrot (HD) e228 (2^760) [online] Youtube. Available on: https://www.youtube.com/watch?v=foxD6ZQlnlU

Repasky, D., 2013. 10 Hours of Infinite Fractal and Falling Shepard’s Tone. [online] Youtube. Available on: https://www.youtube.com/watch?v=u9VMfdG873E

Mandelbrot, B., 1982. The Fractal Geometry of Nature. USA: H.B. Fenn and Company

M.C Escher Foundation,. 2015. M.C Escher. [online] M.C Escher Foundation. Available on: http://www.mcescher.com/

Moran, G., 2013. Un escultor en el ateneo Barcelonés. [online]. Blogspot. Available on: http://totbarcelona.blogspot.co.uk/2013/08/un-escultor-en-el-ateneo-barcelones.html

Ramin., 2006. Fractl and nature. [online] Blogspot. Available on: http://fractal-nature.blogspot.co.uk/2006_11_01_archive.html

Shiffman, D., 2013. The Nature of Code. [online] Available on: http://natureofcode.com/book/

 Troll2Rocks., 2013 The similarity of chaos in a universe that might not exist. [online]. Disclose. Available on: http://www.disclose.tv/forum/to-make-you-think-why-are-we-t82762.html

INDEX

ITERATIVE DESIGN (II)_ ##2nd round##___STAGE 5 (EVALUATION)

INDEX

After a couple of days working with L-systems, I have decided to change my methodology. L-systems is a methodology that I would like to explore further but I am concerned about not having enough time to build something decent because the deadline is getting closer and my understanding of L-systems seems to progress at a slower pace than I imagined when I started. And it might even become tougher when trying to make it interactive.

Apart from this reason, I have been advised to go towards another type of figure since, there is the risk of freezing the computer. It might happen because the code in a L-system grows really quickly and the image can easily become too big to render with the memory of my laptop.

INDEX

ITERATIVE DESIGN (II)_##2nd round##____ STAGE 3 (CONSTRUCTION)

INDEX

I have been building an L-system based branch:

import toxi.geom.*;
import peasy.*;
import controlP5.*;

PeasyCam cam;

Stick bob;

ControlP5 controlP5;
ControlWindow controlWindow;

ArrayList <Stick> allBobs;

void setup(){
 size(800,400,P3D);
 smooth();

 allBobs = new ArrayList <Stick> ();

 cam = new PeasyCam(this, 100);

 Vec3D v = new Vec3D (0,0,0);
 Vec3D iniVel = new Vec3D (100,0,0);
 bob = new Stick(v, iniVel, 8, "A");

 allBobs.add(bob);
}

void draw(){
 background(0);

 stroke(255);
 noFill();
 strokeWeight(1);
 //box(400);

 for(Stick b : allBobs){
 b.run();
 }
}


class Stick{

 Vec3D loc;
 Vec3D oriLoc;
 Vec3D vel;

 int generations;
 String type;

 Stick(Vec3D _loc, Vec3D _vel, int _generations, String _type){
 loc = _loc;
 oriLoc = _loc.copy();
 vel = _vel;
 generations = _generations;

 type = _type;

 //stack of functions that get executed only once
 updateDir();
 updateLoc();
 spawn();

 }

 void run(){
 display();
 }

 void spawn(){

 if(generations > 0){

 if(type == "A"){
 Vec3D v = loc.copy();
 Vec3D iniVel = vel.copy();
 Stick newBob = new Stick(v, iniVel, generations-1, "A");

 allBobs.add(newBob);

 Vec3D v2 = loc.copy();
 Vec3D iniVel2 = vel.copy();
 Stick newBob2 = new Stick(v2, iniVel2, generations-1, "B");

 allBobs.add(newBob2);
 }

 if(type == "B"){
 Vec3D v = loc.copy();
 Vec3D iniVel = vel.copy();
 Stick newBob = new Stick(v, iniVel, generations-1, "C");

 allBobs.add(newBob);

 }

 if(type == "C"){
 Vec3D v = loc.copy();
 Vec3D iniVel = vel.copy();
 Stick newBob = new Stick(v, iniVel, generations-1, "A");

 allBobs.add(newBob);

 }

 }

 }

 void updateDir(){
 if (type == "A"){
 float angle1 = radians(0);
 float angle2 = radians(30);
 float angle3 = radians(0);

 vel.rotateX(angle1);
 vel.rotateY(angle2);
 vel.rotateZ(angle3);

 }
 if (type == "B"){
 float angle1 = radians(-30);
 float angle2 = radians(0);
 float angle3 = radians(0);

 vel.rotateX(angle1);
 vel.rotateY(angle2);
 vel.rotateZ(angle3);
 }
 if (type == "C"){
 float angle1 = radians(0);
 float angle2 = radians(0);
 float angle3 = radians(10);

 vel.rotateX(angle1);
 vel.rotateY(angle2);
 vel.rotateZ(angle3);
 }

 }

 void updateLoc(){
 loc.addSelf(vel);

 }

 void display(){
 stroke(255,0,0);
 strokeWeight(4);
 point(loc.x,loc.y,loc.z);

 stroke(255);
 strokeWeight(1);
 line(loc.x,loc.y,loc.z, oriLoc.x,oriLoc.y,oriLoc.z);

 }

}

To do it, I have used a tutorial by Jose Sanchez.

REFERENCES:

Sanchez, J., 2013. Processing Tutorial S02E02 – L-SYSTEMS. [on line]. Youtube. Available on: https://www.youtube.com/watch?v=qF8LGLVrwfo

INDEX