(es) Latido mestizo
(eo) Mestiza korbato
http://dx.doi.org/10.13140/RG.2.2.34092.90243
Descripción artística:
Un corazón humano latiendo al interior de un exterior mestizo.
Motivación:
El autor es mestizo.
Descripción técnica:
Una vista girada del conjunto de Mándelbrot en el que los puntos que no pertenecen al conjunto se dibujan como capas blancas y grices (según si el número de pasos requerido para determinar que no pertenecen es par o impar), mientras que para los puntos que sí pertenecen se dibujan como puntos rojos con brillo máximo y con saturación igual a la expresión .
El conjunto de Mándelbrot es el conjunto de todos los puntos del plano complejo tal que la sucesión (con ) no diverge (es decir, tal que es acotada).
El criterio usado para determinar si las sucesiones divergen o no, es si , con , tiene un módulo mayor que 2, es decir (procedimiento estándar para los conjuntos de Julia y de Mándelbrot). Puesto que no puede evaluarse hasta el infinito, se usa una cota: . Si la sucesión no “diverge” antes de llegar al -ésimo término de las sucesiones, se considera que no diverge, es decir que es acotada.
Código (CFDG):
# Copyright 2015 Eduardo Adam Navas López # Este archivo es Software Libre liberado bajo la licencia GNU GPLv3 o su versión más reciente: # http://www.gnu.org/licenses/gpl.html #Para generar la imagen: #$ cfdg -b 0 -s 1000 mestizo.cfdg mestizo.png startshape corazon2 PI = 3.14159 LIMITE = 1000 #Resolución de la imagen MAXPASOS = 100 LIMIZQ = -2.0 LIMDER = 1.0 LIMARRIBA = 1.5 LIMABAJO = -1.5 TAMX = (LIMDER-LIMIZQ)/(LIMITE-1) TAMY = (LIMARRIBA-LIMABAJO)/(LIMITE-1) pasos(numPasos,z_r,z_i,c_r,c_i) = if((numPasos < MAXPASOS) && (z_r*z_r+z_i*z_i<4), pasos(numPasos+1, z_r*z_r - z_i*z_i + c_r, 2*z_r*z_i + c_i, c_r, c_i), numPasos) #Versión con suficiente memoria RAM shape corazon { loop i = LIMITE [] { c_i = (LIMARRIBA-LIMABAJO)*i/(LIMITE-1) + LIMABAJO #y loop j = LIMITE [] { c_r = (LIMDER-LIMIZQ)*j/(LIMITE-1) + LIMIZQ #x numPasos = pasos(0, 0.0, 0.0, c_r, c_i) if (numPasos==MAXPASOS){ SQUARE[x c_i y c_r size TAMX TAMY sat (cos(32*(c_i*c_i+c_r*c_r)*180/PI)) b 1] } else { if (mod(numPasos,2)) SQUARE[x c_i y c_r size TAMX TAMY b 0.4] else SQUARE[x c_i y c_r size TAMX TAMY b 0.95] } } } } #Versión con optimización por simetría bilateral shape corazon2 { loop i = LIMITE/2 [] { c_i = (LIMARRIBA-LIMABAJO)*i/(LIMITE-1) + LIMABAJO #y loop j = LIMITE [] { c_r = (LIMDER-LIMIZQ)*j/(LIMITE-1) + LIMIZQ #x numPasos = pasos(0, 0.0, 0.0, c_r, c_i) if (numPasos==MAXPASOS){ saturacion = (cos(32*(c_i*c_i+c_r*c_r)*180/PI)) SQUARE[x c_i y c_r size TAMX TAMY sat saturacion b 1] SQUARE[x (-c_i) y c_r size TAMX TAMY sat saturacion b 1] } else { if (mod(numPasos,2)){ SQUARE[x c_i y c_r size TAMX TAMY b 0.4] SQUARE[x (-c_i) y c_r size TAMX TAMY b 0.4] }else{ SQUARE[x c_i y c_r size TAMX TAMY b 0.95] SQUARE[x (-c_i) y c_r size TAMX TAMY b 0.95] } } } } }
No hay comentarios:
Publicar un comentario