. . . .*** Queda inaugurado el nuevo Foro de Cálcolos!!! Visitalo! *** . . . .

01 febrero 2011

Dibujos curiosos en Processing

Hoy escribo porque he terminado de hacer un Workshop sobre un programa alucinante:.....Processing. Complicado entenderse con este programa de primeras, da un poco de miedo puesto que todo se basa en el lenguaje Java con el que programar las funciones. Con una breve explicación voy a explicaros en que consiste y como puede dibujar estas cosillas.

El programa processing a grandes rasgos tiene la capacidad de dibujar o mostrar en pantalla unos dibujos que se programan a través de un código. Este código se basa en Java, un lenguaje muy intuitivo que en inglés son ordenes muy lógicas, ya que el comando dibujar es DRAW y cuando queremos hablar de tamaño utilizamos SIZE y para el color BLUE, WHITE, BLACK.... Processing en su pagina web cuenta con muchiiiiiisimos ejemplos sobre los cuales podemos trabajar y aprender código (viene todos explicados) y así poder hacer modificaciones. Una cosa que no se me puede olvidar es que este programa acepta INPUTS datos que pueden hacer que modifiquen la función que hemos creado. Producto de este workshop es este código sobre fractales!! muy breve, consiste en unos dibujos que se generan por medio de una función que se repite y dado que processing trabaja con números complejos pude generar estos dibujos por medio de matrices. Lo cuento por encima, porque hay webs que lo puede contar mejor que yo, solo tenéis que ir a la web oficial de processing. Aquí os copio un código sobre el que hemos trabajado:

Arbol Fractal!!

float aa=-.2;
float ab=.2;

void setup() {
  size(400,400);
  background(255);
  stroke(0,0,0,50);
  noFill();
  smooth();
  form(width/2,height,-HALF_PI,7);
}

void draw() {
}

void form(float x,float y, float a, int c) {
  float nx=x+45*cos(a);
  float ny=y+45*sin(a);
  line(x,y,nx,ny);
  if (c>0) {
    form(nx,ny,a+aa,c-1);
    form(nx,ny,a+ab,c-1);
  }
}

void mousePressed() {
  background(255);
  aa=random(-PI,PI);
  ab=random(-PI,PI);
  form(width/2,(height/3)*2,-HALF_PI,7);
}