Generación de paletas cíclicas      Por Ariel S.

Como se vio anteriormente calculamos el valor de cada punto del conjunto que se va a representar tomando el número de iteraciones necesarias para salir de un bucle que engloba diferentes condiciones relacionadas al conjunto en sí mismo. Una vez que tenemos todo ese conjunto de valores necesitamos representarlos en pantalla como una imagen, y lo que se hace es asignarle a cada número correspondiente la velocidad de escape del bucle, un determinado color.
Podemos asignar aleatoriamente un color cualquiera a cada velocidad de escape, pero el resultado que obtenemos al representar no es del todo bueno, veremos algo así

pal2.GIF (126757 bytes)


Para obtener una imagen un poco mas suave en el cambio de colores lo que se utiliza es una de las llamadas paletas cíclicas, esto significa que va variando gradualmente en forma de ciclos de colores, paulatinamente variando de uno a otro y no de manera brusca como el caso anterior.
Como se sabe, cada color puede descomponerse en tres canales, el del R (rojo), G (verde) y B (azul), si estamos utilizando una profundidad de color de 24 bits , significa que tenemos disponibles 2²4 colores disponibles en la paleta, o lo que es lo mismo, la cantidad de colores que surge de combinar 28 valores de cada color primario (R, G, B).
Despues de buscar la fórmulas para generar este tipo de paletas las encontré en unas revistas viejas de PCManía que tenía archivadas por ahí. En realidad eran fórmulas para generar el efecto "plasma" pero con algunas modificaciones servirán ahora.
Lo que se hará es tomar secuencias de valores periódicos por ejemplo mediante el uso de la función seno o coseno, y tomando diferentes desplazamientos obtenemos distintas paletas, escrito en C quedaría algo como:

void paleta(int rr, int gg, int bb)
{    int q=30,t=40,u=40;
     for (int x=0;x<=itmax;x++)
     {    int r,g,b;
          r=int(t+u*sin((x-rr)*M_PI/q));
          g=int(t+u*sin((x-gg)*M_PI/q));
          b=int(t+u*sin((x-bb)*M_PI/q));
          pal[x]=RGB(r,g,b);
     }    
}

donde itmax es la cantidad máxima de iteraciones que puede tomar un punto en el conjunto, por consiguiente será la cantidad de colores que tendrá la paleta. Y rr, gg y bb son los valores iniciales que se toman para generar el vector de colores pal. Los parámetros que llamé q, t y u son valores que modifican el comportamiento de la paleta final, desplazando, multiplicando o dividendo al valor de cada componente de color primario.
La misma imagen que anteriormente se había representado con una peleta aleatoria ahora con la nueva paleta queda mucho mejor

pal1.jpg (52647 bytes)

Dejá un comentario, sugerencia u opinión