Detalles del escáner empleado

Esta actividad pertenece al libro de GeoGebra Voronoi Paintings. Para poder aplicar el escáner, antes de nada debemos colocar el cuadro que queremos escanear como fondo de pantalla en la vista gráfica de GeoGebra. Sobre este fondo, construimos las siluetas de las zonas focales del espacio positivo. En aras de la claridad y brevedad, supondremos que queremos aplicar el escáner a un cuadro con solo 3 siluetas, como en la Figura 3: p1, p2 y p3. Estas siluetas pueden ser polígonos, círculos u otro tipo de formas planas. Como GeoGebra puede calcular la distancia de un punto a una lista de objetos, podemos crear diferentes formas planas combinando distintos objetos en una única lista. Para crear nuestro escáner, seguimos los siguientes pasos.
  1. Colocación de un punto inicial.
  2. Colocamos un punto inicial B0 en el lugar deseado de la pantalla. Este punto ocupará la posición superior izquierda del área rectangular que será barrida por el escáner.
  3. Creación de un deslizador numérico.
  4. Creamos un deslizador t, de 0 a 10 (este valor superior dependerá de la anchura del cuadro) con paso 1/50. Elegimos este paso porque en la vista gráfica estándar de GeoGebra cada unidad ocupa 50 píxeles. Asignamos a la velocidad del deslizador el valor 0.2, que tal vez deba corregirse, según sea el resultado, pues depende del procesador y del número de cálculos necesarios en cada paso.
  5. Preparación de la hoja de cálculo.
  6. En la primera columna, definimos los números auxiliares A1 = 1…, A400 = 400. En los pasos siguientes, detallaremos cómo se completa la primera fila, B1, C1, D1, E1, F1 y G1. Copiando (arrastrando) estas definiciones en el resto de la matriz, hasta G400, habremos ultimado el escáner.
  7. El punto B1.
  8. Los puntos B1…, B400 serán los encargados de barrer la pantalla dejando rastro del color que adquieren en cada posición por la que pasen. El punto B1 tiene tamaño 1 píxel y el rastro activado. Se define como: B1 = B0 + (t, -A1/50)
  9. Lista G1 de distancias a las siluetas.
  10. Creamos la lista con la distancia de B1 a cada una de las siluetas p1, p2 y p3: G1 = {Distance(B1, p1), Distance(B1, p2), Distance(B1, p3)}
  11. Lista E1 de distancias ordenadas.
  12. Ordenamos la lista anterior, de menor a mayor distancia: E1= Sort(G1)
  13. La distancia más corta C1 y la segunda más corta D1.
  14. C1= Element(E1, 1) D1= Element(E1, 2)
  15. Identificación F1 de la silueta más cercana.
  16. Como veremos, este último paso solo es necesario para el escáner de la Figura 20. F1= IndexOf(C1, G1)
El escáner ya está completo, ahora basta animar el deslizador t para ponerlo en marcha. La columna de puntos B1…, B400 se desplazará de izquierda a derecha por la pantalla. Pero a su paso solo dejará una mancha monocolor, del mismo color de B1 (seguramente negro), pues nos falta asignar el color dinámico a cada uno de esos puntos. Este color dinámico dependerá del resultado que queramos conseguir. Naturalmente, una vez asignado el color dinámico a B1, deberemos actualizar la hoja de cálculo arrastrando B1 hasta B400.
  • Color dinámico usado en la Figura 3.
  • Para el color dinámico de B1, usamos el modelo RGB con la misma expresión en los tres canales Red, Green y Blue: 1- exp(-10 abs(C1 - D1)) El color resultante varía del blanco al negro en función de la diferencia de distancias C1 - D1, de modo que, al animar el deslizador, toman color negro solo los puntos prácticamente equidistantes, visualizando así el diagrama de Voronoi.
  • Color dinámico usado en las demás Figuras excepto la 20.
  • Para el color dinámico de B1, usamos el modelo RGB con las siguientes expresiones en los tres canales Red, Green y Blue, respectivamente: exp(-abs((C1 - D1) D1/C1)) exp(-abs(C1 - D1)) exp(-abs((C1 - D1) C1/D1)) El color resultante tomará tonos oscuros (ver Figura 13, izquierda) perfilando en azul las siluetas (C1 próximo a cero), mientras que el diagrama de Voronoi aparecerá en blanco, pues los tres canales de color tomarán el valor 1 cuando la diferencia C1 - D1 sea nula. 
  • Color dinámico usado en la Figura 20.
  • Para el color dinámico de B1, usamos el modelo HSL con las siguientes expresiones en los tres canales Hue, Saturation y Lightness, respectivamente: F1/n 1 C1/D1 donde n = Length(G1) es el número de siluetas. El color resultante perfilará en negro las siluetas, el diagrama de Voronoi aparecerá en blanco, y cada región de Voronoi tomará un color diferente según el valor de F1, es decir, según cuál sea la silueta más cercana.
Finalmente, la mayoría de las veces será necesario pasar el escáner a diferentes alturas, para distintas posiciones del punto inicial B0, ya que los 400 puntos no logran abarcar la altura completa del cuadro.