La mayoría de las imágenes tienen tres canales de datos: rojo, verde y azul, a menudo llamados datos RGB. Cada píxel de la imagen tiene un valor para cada canal de color, y en JMP (0,0,0) será negro, (1,1,1) blanco, (1,0,0) rojo y (0,5,0,5) ,0.5) gris.
A los diseñadores web les gusta otro canal de información para la transparencia; los iconos a menudo tienen áreas transparentes que dejan ver el fondo. Ese canal se llama canal alfa y se convierte en RGBA.
El canal alfa, como los canales de color, puede tener valores fraccionarios; alfa y 1 - alfa son las fracciones del primer plano y el fondo que se utilizan para hacer el resultado. Los resultados son bastante buenos si no miras demasiado de cerca.
Alpha transparency around JMP's iconTransparencia alfa alrededor del icono de JMP
Puede experimentar con esto ejecutando el AlphaIcon.jmpapp adjunto. El degradado detrás del ícono se muestra a través de las áreas transparentes, y los bordes se desvanecen entre azul y verde o azul y naranja. Un valor alfa de 0,0 permite mostrar el degradado; 1.0 muestra el icono y los valores fraccionarios muestran el fundido cruzado. (Utilicé una aplicación de lupa para obtener la gran imagen pixelada. Usé el generador de aplicaciones para hacer flotar el cuadro del icono sobre un gráfico con un degradado).
El ejemplo anterior es la forma típica en que se utiliza el canal alfa. El siguiente ejemplo es una variación. El JSL dibuja el color con los valores RGB y dibuja las líneas blancas (o negras) con el valor alfa. Hay otras formas de obtener el mismo efecto, pero de esta manera no se necesita código adicional para fusionar los datos. El color de la línea está determinado por el color de fondo del cuadro de borde que contiene el cuadro de imagen. Cuando el valor alfa es 0, se muestra el fondo. En la función de representación, se combinan dos matrices, bitcolor y bitcurve, para crear la imagen. bitcurve está construido con 1.0 donde debería aparecer la línea, por lo que 1-bitcurve crea el canal alfa que se necesita.
{red,green,blue} = colortorgb(bitcolor);
image=newimage("rgba",{red,green,blue,1-bitcurve});Cambiar los resultados de línea blanca sobre fondo negro a línea negra sobre fondo blanco se realiza cambiando el color del cuadro del borde.
newwindow("curves",bb=borderbox(textbox("")));
bb<<SETBACKGROUNDCOLOR></SETBACKGROUNDCOLOR>El cuadro de borde se crea con un cuadro de texto secundario ficticio que se reemplaza por la primera imagen.
(bb<<CHILD></CHILD>
Bitcurve a la izquierda, bitcolor en el centro, RGBA a la derecha. En esta imagen, los datos RGB son en su mayoría negros y el fondo blanco muestra dónde el canal alfa es > 0.0.
Border box with a white backgroundcuadro de borde con un fondo blanco
En esta imagen, los datos RGB son en su mayoría blancos y, en cambio, se ve el fondo negro.
Border box with a black backgroundcuadro de borde con un fondo negro
En las dos imágenes de arriba, el lado derecho muestra la combinación alfa de los colores sobre el color de fondo del cuadro del borde.
El curveyBlog.jsl adjunto crea la imagen incrementando las líneas activas, ramificándolas al azar y tomando una foto. el video es aquí y quiere ser maximizado.
ejemplo anterior .
¡Gracias! Me gustan los algoritmos que tienen varios parámetros ajustables que ayudan a dirigir cómo se usan los elementos aleatorios. Este corrió hasta que las enredaderas ocuparon suficiente espacio para evitar un mayor crecimiento. Una vez que se eligieron los parámetros, lo ejecuté varias veces para obtener un conjunto de imágenes que me gustaron, en el tamaño de paso correcto para hacer una duración de video que me gustara.