(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