martes, 26 de mayo de 2015

TP2

TP 2

Ejercicios de Interactividad:

1) Realizar un programa que permita mover una figura circular de color negro de la siguiente forma:
- Al mover el mouse hacia arriba, la figura debe moverse hacia abajo
- Al mover el mouse hacia abajo, la figura debe moverse hacia arriba
- Al hacer click con el mouse, la figura debe pasar a ser azul
– Al presionar una tecla, la figura debe pasar a ser negro

void setup(){
    size(400,400);
    background(255);
    }
void draw(){
        ellipse(200,height-mouseY,50,50);
    }
void mousePressed(){
    fill(0,0,255);
    ellipse(200,height-mouseY,50,50);
}
void keyPressed(){
    fill(O);
   ellipse(200,height-mouseY,50,50);
}


2) Realizar un programa que me permita dibujar en la pantalla, con trazo negro.

void setup(){
    size(400,400);
    background(255);
    }
void draw(){
    fill(0);
    line(pmouseX,pmouseY,mouseX,mouseY);
    }



3) Tomando el Ejercicio 2), a medida que se va dibujando, el programa me debe permitir cambiar el color de la figura a Azul a medida que presiono una tecla, y aumentar el tamaño del mismo cuando presione el mouse.

  float m=2;
void setup(){
    size(400,400);
    background(255);
       }
void draw(){
    strokeWeight(m);
    line(pmouseX,pmouseY,mouseX,mouseY);
 }
void mousePressed(){
m++
    }
void keyPressed(){
    stroke(0,0,255);
    line(pmouseX,pmouseY,mouseX,mouseY);
}


4) Realizar un programa que me permita dibujar una elipse centrada en la pantalla, luego, a medida que muevo el mouse en forma horizontal me permita modificar el ancho, y si lo muevo en forma vertical, modificar el alto.

void setup(){
    size(400,400);
    }
void draw(){
    ellipse(200,200,mouseX,mouseY);
}


5) Para qué sirve la función random()? Cuales son las diferencias entre random(50) y random(-50,50)

La funcion random() se utiliza para obtener un valor alazar entre un rango anteriormente establecido.
La diferencia entre el primero y el segundo, es que uno da un valor entre 0 y 50 y el otro entre -50 y 50.

6) Realizar un programa que se encargue de ubicar 100 cuadrados en posiciones aleatorias de la pantalla, con dimensiones también aleatorias , siendo el tamaño mínimo 50 y el máximo 200.

void setup(){
    size (400,400);
    }
void draw(){    rect(random(50,200),random(50,200),random(50,200),random(50,200));
}

  
7) Realizar un programa que me permita ir moviendo el mouse en la pantalla, y a medida que voy moviendo el mismo, se va desplazando una elipse. Otra cosa es que debe haber 4 líneas que salen de las esquinas y se unen al centro de la elipse, se manera que las 5 figuras se mueven juntas.

void setup(){
    size(400,400);
    background(255);
}
void draw(){
    strokeWeight(-3);
    line(0,0,mouseX,mouseY);
    line(0,400,mouseX,mouseY);
    line(400,400,mouseX,mouseY);
    line(400,0,mouseX,mouseY);
    fill(17,130,55);
    ellipse(mouseX,mouseY,80,80);
}


8) Realizar un programa que me permita diagramar líneas ubicadas de forma vertical en la pantalla, pero que las mismas se vayan dibujando de acuerdo a la posición X del mouse. Aparte, el color de las mismas debe de ser aleatorio cada vez que se dibujen.

void setup(){
    size(400,400);
 }
void draw(){
    strokeWeight(4);
    stroke(random(255),random(255),random(255));
    line(mouseX,0,mouseX,mouseY);
 }


9) Basándonos en la posición del mouse en la pantalla, escribir un programa que permita escribir líneas en la pantalla que partan desde el punto (0,0) y (400,400), hacia la posición del puntero del mouse. La pantalla debe de ser de 400 X 400. Los colores de las líneas que parten desde el punto (0,0) deben poseer la tonalidad verde y el mismo debe variar de acuerdo a la distancia del mouse al punto mencionado. Lo mismo para las líneas que parten desde (400,400) pero con tonalidades azules.

void setup(){
    size(400,400);
 }
    void draw(){
        strokeWeight(3);
        float a=dist(0, 0, mouseX,mouseY);
        float b=dist(400, 400,mouseX,mouseY);
        stroke(0,a,0);
        line(0,0,mouseX, mouseY);
        stroke(0,0,b);
        line(400,400, mouseX,mouseY);
   }


10) Realizar un programa dibuje como si fuese un lápiz, y borre cuando se presiona el botón del mouse, permitiéndome volver a escribir cuando presiono alguna tecla.

void setup(){
    size(400,400);
    background(255);
       }
void draw(){
    line(pmouseX,pmouseY,mouseX,mouseY);
 }
 void keyPressed(){
    loop();
  }
void mousePressed(){
background(255);
noLoop()
    }


11) Para que se utiliza la función noLoop()? Y la función loop()?

noLoop() frena los frames, loop() permiten que los Frames continuen.

12) Realizar un programa que me permita ir generando elipses de ancho y alto aleatorio, pero que las mismas se ubiquen en las coordenadas opuestas a la posición del mouse. De esta forma si el mouse se encuentra en (100,100), se deberá generar una elipse en (300,300) (Suponiendo una pantalla de 400 X 400). Si se encuentra en (150,200), deberá estar en (250,200). Al presionar una tecla, se deberá detener la interacción con la pantalla, de manera que no se generen más elipses, y si hago click en la pantalla, me debe permitir volver a interactuar.

void setup(){
    size(400,400);}
void draw(){
    background(255);
    fill(0);
    ellipse(width-mouseX,height-mouseY,random(200),random(200));
}
 void mousePressed(){
    loop();
}
void keyPressed(){
background(255);
noLoop()
}


13) Realizar un programa que me permita mientras mantengo pulsado el botón del mouse, generar puntos en posiciones aleatorias en una distancia máxima desde la posición del mouse, de 100 pixels.

void setup(){
    size(400,400);
    background(255);
}
void draw(){ 
    fill(random(255),0,random(255));
}
 void keyPressed(){
     ellipse(mouseX-random(-100,100),mouseY-random(-100,100),6,6);
}


14) Para que se utiliza la función round()?

La funcion round() sirve para calcular el valor entero mas cercano dentro de los Floats.

Ejercicios de Variables:

1) Realizar un programa que dibuje una circunferencia de radio 50 en la esquina superior izquierda de la pantalla. Luego, por cada fotograma que se dibuje en la pantalla, la circunferencia debe ir avanzando en diagonal a la esquina inferior derecha.

int a;
void setup(){
    size(400,400);
    background(255);
    a = 1;
    }
void draw(){
        background(255);
    ellipse(a,a,50,50);
    a++
}


2) Realizar el mismo ejercicio que el punto 1), pero con otra circunferencia que se vaya desplazando desde la esquina superior derecha, hacia la esquina inferior izquierda. Ambas circunferencias deberían cruzarse en el medio de la pantalla.

int a;
int b;
void setup(){
    size(400,400);
    a = 1;
    b = 400;
}
void draw(){
    background(255);
    ellipse(a,a,50,50);
    ellipse(b,a,50,50);
    a++
    b--
}


3) Realizar un ejercicio que permita dibujar una fila de circunferencias que toquen sus bordes, de radio 50. El programa debe ser realizado con variables, de forma que solo exista una sola función ellipse

int a;
void setup(){
    size(400,400);
    background(255);
    a = 25;
    }
void draw(){
    fill(255,30,100);
    ellipse(a,25,50,50);
    a = a + 50;
    }



 4) Realizar un programa que permita dibujar un punto centrado en la pantalla, y que este vaya creciendo con forma de cuadrado.

int a;
void setup(){
    size(400,400);
    background(255);
    a = 1;
    noStroke();
    }
void draw(){
    rectMode(CENTER);
    fill(253,255,50);
    rect(200,200,a,a);
    a++
    }


5) Para qué sirve la función println()?

Sirve ayudar para buscar la "data" que el programa esta produciendo en ese momento.
6) Realizar un programa que arranque con 2 cuadrados en las esquinas superiores, uno en la derecha y otro en la izquierda. Luego 2 círculos en las esquinas inferiores, uno en la derecha y otro en la izquierda. Cada una de estas figuras debe ir incrementando su posición en 1, y cada una en un sentido, así, el cuadrado de la esquina superior izquierda debe ir avanzando hacia la derecha, el de la superior derecha, hacia abajo; el círculo de la inferior derecha hacia la izquierda y el círculo de la inferior izquierda hacia arriba.

int a;
int b;
void setup(){
    size(400,400);
    noStroke;
    a = 0
    b = 375
    }
vooid draw(){
    background(255);
    fill(200,50,70);
    rect(a,0,50,50);
    rect(350,a,50,50);
    ellipse(b,375,50,50);
    ellipse(25,b,50,50);
    a++
    b--
    }


7) Al ejercicio del punto 6), agregar la posibilidad de que el color de relleno de cada figura vaya cambiando. Los círculos en escalas de azules y los cuadrados en escalas de verdes. (De los mas claros a los mas oscuros)

int a;
int b;
int c;
void setup(){
    size(400,400);
    noStroke;
    a = 0
    b = 375
    }
vooid draw(){ 
    c =  map(a,25,375,255,0);
    background(255);
    fill(0,0,c);
    rect(a,0,50,50);
    rect(350,a,50,50);
    fill(0,c,0);
    ellipse(b,375,50,50);
    ellipse(25,b,50,50);
    a++
    b--
    c--
    }


 8) Al ejercicio 7 agregarle la opción de que cada figura vaya desapareciendo a medida que se encuentra avanzando, llegando a desaparecer completamente al llegar a la esquina opuesta.

int a;
int b;
int c;
void setup(){
    size(400,400);
    nostroke
    a = 0
    b = 375
    }
vooid draw(){ 
    c =  map(a,25,375,255,0);
    noStroke();
    background(255);
    fill(0,c,0,c);
    rect(a,0,50,50);
    rect(350,a,50,50);
    fill(0,0,c,c);
    ellipse(b,375,50,50);
    ellipse(25,b,50,50);
    a++
    b--
    c--
    }


9) Identifique el funcionamiento de la función map(). Defina los parámetros que posee.

Map() se utiliza para transformar una escala de valores en otra escala nueva.
Utiliza cinco parámetros: map(x,x1,x2,y1,y2);

10) Realice un programa que permita dadas 2 figuras circulares que avanzan cruzando las diagonales principales de la pantalla, cambien los colores de acuerdo a la distancia que haya entre ellos. Las figuras deben iniciar su recorrido en las esquinas superiores derecha e izquierda.

int a;
int b;
int c;
void setup(){
    size(400,400);
    a = 1;
    b = 400;
    c = dist(a,a,b,a)
    }
void draw(){
    c = dist(a,a,b,a)
    background(255);
    fill(0,0,c);
    ellipse(a,a,50,50);
    fill(0,c,0);
    ellipse(b,a,50,50);
    a++
    b--
    }


11) Realice un programa que permita dadas 2 figuras circulares que avanzan cruzando las diagonales principales de la pantalla, cambien su tamaño de acuerdo a la distancia que haya entre ellos. Las figuras deben iniciar su recorrido en las esquinas superiores derecha e izquierda. Al iniciar el recorrido el tamaño debe ser de 0 para ambas figuras y al cruzarse en el centro debe tener el tamaño máximo de que ocupen en la pantalla, debiendo volver a achicarse cuando lleguen a los extremos opuestos.

float posicion = 25;
void setup(){
size(400,400);
}
void draw(){
  background(255);
  fill(255,150,46);
  posicion++;
  float distancia = dist(posicion,posicion,width-posicion,posicion);
  float tamano=map(distancia,375,0,0,400);
 ellipse(posicion,posicion,tamano,tamano);
  ellipse(width-posicion,posicion,tamano,tamano);
  }


12) Identifique para qué sirve la función pow().

Sirve para multiplicar numeros por si mismos (o sus reciprocos) en largas cuentas.


No hay comentarios:

Publicar un comentario