Esta entrada es una ampliación de las Fichas 2-6 realizadas en clase. Algunas cosas son útiles y otros son simples detalles. Explicaré brevemente las funciones usadas sin concretar cómo es el código, para la experiencia propia.
Ficha 2
En la ficha 2 aprendemos formas basicas de processing siendo estas rectas, elipses y manejo de tamaño de las mismas. Como ampliación decidimos usar curvas para letras como la «D» y una función escalar para ampliar una diana.
Nombres:
Para esta tarea podemos usar la funcion «arc(a, b, c, d, start, stop, mode)»
Donde a es la posición inicial X y b es la posición inicial Y, como haríamos en una elipse y
c es el ancho y d el alto, podéis poner un número arbitrario para ir probando.
Lo complejo viene en start y stop. Tenemos que pensar en forma radial, lo mejor de estos ejercicios es ir probando.
En start pondremos donde deseamos que empiece (por ejempo -PI/2) y en stop el final de nuestro arco deseado (PI/2 en caso de la «D»), así conseguimos un semicirculo vertical. Ejemplos:
Mode es un parametro opcional pero muy util: OPEN dejará el arco tal y como es, abierto; CHORD lo cerrará, simplemente haciendo un stroke sobre las puntas del arco; PIE lo segmentará, yendo desde cada punto del arco al centro.
En esta ficha también ponemos varias elipses seguidas, recomendamos encarecidamente que en lugar de ir jugando con la separacion de los centros a ver si acertamos pongáis que el siguiente circulo esta posicionado a una distancia «radio del anterior + pequeña separacion», es decir:
elipse 1: ellipse(x, y, 10, 10); elipse 2: ellipse(x+(10+5), y, 10, 10);
Ficha 3
Vamos a aprender dos ampliaciones para esta ficha:
1. A la hora de crear colores, también existen las variables que los almacenen. Su sintaxis es «color x = color(r, g, b);«, esto es realmente util si se desea cambiar colores y así mantener una legibilidad. Pueden ser inicializadas al principio del programa.
2. La funcion FrameRate, aunque es algo mas compleja, nos va a ayudar a variar la velocidad de fotogramas por segundo que va a tener nuestro programa, es decir, su fluidez.
A dia de hoy la mayoría de programas y videos van de 60 frames per second (fps) para arriba, y si jugamos con esta funcion en el programa del seno veremos una imagen mas fluida y rapida o mas lenta y a saltos.
Aquí un ejemplo:
Ficha 4
En esta ficha aprenderemos dos tipos de interacción con el ratón. Si es cierto que hemos dado que hacen las funciones pero no como sacar mas potencial.
La primera es una ampliación de mouseDragged:
Si deseamos transformar colores según la posición del ratón, va a ser muy complicado (en general modificar colores es complicado), pero lo explicaremos para entender la función map.
map(valor, minimo, maximo, nuevoMinimo, nuevoMaximo);
Puede parecer muy compleja de entrada pero con un ejemplo se ve mejor:
(En el ejemplo usamos round, ya que map devuelve un valor FLOAT)
– Prueba a pasar el ratón por encima del lienzo.
Ficha 5
Imaginate que quieres crear una serie de elipses con un centro especifico, y que tienes problemas a la hora de centrarlas o bien porque se mueven o por cualquier otro motivo. Existe un función llamada translate, que nos va a permitir mover por decirlo así la CAMARA del lienzo.
Ficha 6
No se hizo mucho en la ficha 6 como ampliación, explico un par de propiedades variadas:
final: Si añades final antes de una variable, esta nunca, bajo ningún concepto cambiará.
Ejemplo:
final int n = 3;
n será inmutable.
return: Hará que una función devuelva un valor. ¿Sabes cuando pones void delante de una función? Esto está haciendo que la función devuelva «vacio», que no devuelva ningún valor.
Si tu defines una función como int mifuncion() {}, esa función puede devolver un int.
Ejemplo:
int randomNumber = dameUnNumero();
int dameUnNumero() {
int n = random(0, 100);
return n;
}
Prueba en processing y mira el resultado. Así a secas esta función no tiene mucha utilidad todavía.
Ficha 7
Vamos a explicar una forma distinta de interactuar con el ratón, mouseWheel.
Función mouseWheel está asociada a la rueda del ratón, esta función tiene unos parámetros definidos entre los paréntesis pero no vamos a explicarlos, simplemente hay que saberlo:
Ejemplo:
void mouseWheel(MouseEvent num) {
// num va a ser la variable que almacene que está pasando con la rueda
// Para sacar 1 o -1, dependiendo de la dirección del scroll usamos lo siguiente
parametro = num.getCount();
x += parametro;
}
Parámetro va a ser siempre 1 o -1 depende de la dirección de la rueda y con ello podemos hacer lo que sea, en el ejemplo se lo sumamos a una posible posición x (no definida).
Ficha 8
Explicaciones varias de los if:
if(condicion) {}
A la hora de escribir la condición (como ya sabemos existen las booleanas), está va a ser entendida como un true o un false.
Si yo pongo 4 < 5 va a traducirse como true, y se va a cumplir el if.
En ocasiones, para no hacer bucles complejos o si no se nos ocurre el planteamiento, podemos revertir este resultado, es decir, que si algo es true, el bucle de falso y no se cumpla
Por ejemplo:
if ( 4 < 5 ) {} se va a ejecutar.
if ( !(4 < 5) )
Básicamente poner la exclamación, encerrando la condición en un paréntesis, invertirá el resultado.
Ficha 9 y Ficha 10
Clases y objetos (Entrada aparte)