Академический Документы
Профессиональный Документы
Культура Документы
Introduccin a Processing
I. Entorno de programacin processing.
Processing es un entorno de programacin de cdigo abierto y basado en
Java que no requiere muchos conocimientos sobre informtica pero si
requiere suficiente dosis de creatividad. Por su facilidad de uso permite
empezar rpidamente a generar sofisticadas aplicaciones graficas e
interactivas al mismo tiempo minimizando la dificultad asociada a la
compilacin y generacin de software.
De hecho se puede crear una aplicacin con una sola linea de cdigo.
Introduzca lo siguiente en el editor y pulse el botn Run.
Size(600,400);
size(600,400);
background(0);
fill(255,255,0);
stroke(255,0,255);
strokeWeight(10);
ellipse(300,200,200,200);
se obtiene:
Modo interactivo
int i = -50;
void setup(){
size(300,300);
fill(255);
stroke(0);
strokeWeight(3);
}
void draw(){
background(100);
ellipse(150,i,100,100);
i++;
if (i > 350){
i = -50;
}
}
Al ejecutar este boceto, vera un circulo blanco con un contorno negro que
se desplaza hacia abajo sobre un fondo gris.
Formas primitivas.
point()
Solo acepta dos parametros que representan los valores x e y, y que
traza un solo pixel (con el color determinado por el valor de color
actual de stroke()) en ese punto.
line()
Acepta cuatro argumentos para representar las coordenadas X e Y
de cada extremo de la lnea.
triangle()
Acepta seis argumentos para representar las coordenadas de los
vrtices de la forma.
quad()
Acepta ocho argumentos para representar las coordenadas de los
vrtices de la forma.
rect()
Acepta cuatro argumentos para crear un rectngulo. De forma
predeterminada, los dos primeros representan las coordenadas de
ellipse()
Tiene un funcionamiento similar al anterior y la funcin ellipseMode()
puede aceptar los mismos cuatro argumentos de modo: CORNER,
CORNERS, RADIUS y CENTER. Su significado es similar al del
caso del rectngulo.
arc()
Traza una parte de una elipse desde un ngulo a otro. Esta funcin
acepta seis argumentos. Los dos primeros representan la posicin
del arco, los dos siguientes representan la anchura y la altura de la
elipse, y los dos ltimos representan los ngulos de origen y destino
del arco. En Processing los ngulos se expresan en radianes y los
dos ltimos argumentos de esta funcin debe indicarse en radianes.
Los ngulos de la funcin arc() giran en el sentido de las agujas del
reloj.
void setup(){
size(500,500);
colorMode(HSB,1);
}
void draw(){
for (int x=0;x <= 500; x++){
stroke(x/500.0,mouseX/500.0,0.7);
line (x,0,x,500);
}
}
Trigonometra sencilla.
Int angle = 0;
float rads = 0.0;
void setup(){
size(500,500);
colorMode(HSB,1);
}
void draw(){
background(0.5);
rads = radians(angle);
noFill();
stroke(0.0,0.0,1.0);
arc(250,250,200,200,0,rads);
stroke(0.0,0.0,0.0);
line(250,250,250+cos(rads)*100,250);
line(250,250+sin(rads)*100,250,250);
angle++;
if (angle==360){
angle=0;
}
}
stroke(0.0,0.0,1.0);
fill(0.0,0.0,cos(rads));
rect((cos(rads)*200)+250,50,20,20);
fill(0.0,0.0,1.0 - cos(rads));
rect((-cos(rads))*200+250,450,20,20);
fill(0.0,0.0,sin(rads));
rect(50,(sin(rads)*200)+250,20,20);
fill(0.0,0.0,1.0 - abs(sin(rads)));
rect(450,(-sin(rads)*200)+250,20,20);
angle++;
if (angle==360){
angle = 0;
}
}
Crear un nuevo archivo en el mismo boceto. Para ello, aada una ficha al
boceto haga clic en el icono en forma de flecha en la parte superior de la
barra de la ficha, en la parte superior de la ventana de Processing y
seleccione New Tab.
class Spot {
int x, y;
int rate = 1;
int initialY;
boolean fall = true;
boolean active = false;
Spot(int xpos, int ypos){
x = xpos;
y = ypos;
initialY = y;
}
void display(){
noStroke();
fill(255);
ellipse(x,y,95,95);
fill(0);
ellipse(x,y,80,80);
fill(255);
ellipse(x,y,65,65);
fill(255,0,0);
ellipse(x,y,50,50);
fill(255);
ellipse(x,y,25,25);
fill(0);
ellipse(x,y,10,10);
}
}
spots[i].display();
if (spots[i].active){
if (spots[i].fall){
spots[i].y = spots[i].y + spots[i].rate;
spots[i].rate++;
}else{
spots[i].y = spots[i].y - spots[i].rate;
spots[i].rate--;
}
}
if (spots[i].y > height - 45){
spots[i].fall = false;
}
if (spots[i].y < spots[i].initialY){
spots[i].rate = 1;
spots[i].fall = true;
}
}
}
void mousePressed(){
if (spotcount == spottotal){
spotcount--;
for (int i=0; i < spotcount; i++){
spots[i] = spots[i+1];
}
}
spots[spotcount] = new Spot(mouseX,mouseY);
spotcount++;
}
void mouseReleased(){
spots[spotcount-1].initialY = mouseY;
spots[spotcount-1].active = true;
}
que
estar
desplazando
en
forma
vertical
rebotando