miércoles, 11 de febrero de 2015

Fiordos helados

(es) Fiordos helados

(eo) Malvarmaj fjordoj

Fiordos helados

http://dx.doi.org/10.13140/RG.2.2.34092.90243

Descripción artística:

Una vista aérea de unos fiordos nevados, sus delgadas costas de arena oscura y el mar profundamente azul.

Motivación:

Los fiordos tienen una forma fractal natural.

Descripción técnica:

Una vista de un conjunto de Julia con semilla c=-1.384286+0.004286i en el intervalo de los reales: [0.01,0.09] y en los imaginarios: [0.02,0.10].
El conjunto de Julia con semilla c es el conjunto J c de todos los puntos z del plano complejo tal que la sucesión z n+1 = z n 2 +c (con z 0 =z ) diverge (o más pragmáticamente tal que es no acotada).
El criterio usado para determinar si las sucesiones divergen o no, es si z k , con kN , tiene un módulo mayor que 2, es decir | z k |2 (procedimiento estándar para los conjuntos de Julia y de Mándelbrot). Puesto que no puede evaluarse hasta el infinito, se usa una cota: N . Si la sucesión no “diverge” antes de llegar al N -ésimo término de las sucesiones, se considera que no diverge, es decir que es acotada.
La coloración de esta obra tiene un tinte constante al igual que la saturación, pero el brillo es variable en función del número de pasos en donde se determina que el punto pertenece o no pertenece al conjunto.

 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 fiordos.cfdg fiordos.png

startshape fiordos(-1.384286,0.004286)

LIMITE = 1000 #Resolución de la imagen
MAXPASOS = 300

LIMIZQ = 0.01
LIMDER = 0.09
LIMARRIBA = 0.10
LIMABAJO = 0.02

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)

shape fiordos(c_r,c_i) {
 #Océano:
 FILL[h 214 sat 0.89 b 0.95]
 loop i = (LIMITE) []  {
  z_i = (LIMARRIBA-LIMABAJO)*i/(LIMITE-1) + LIMABAJO #y
  loop j = LIMITE [] {
   z_r = (LIMDER-LIMIZQ)*j/(LIMITE-1) + LIMIZQ #x
   
   numPasos = pasos(0, z_r, z_i, c_r, c_i)
   if(numPasos<MAXPASOS){
    SQUARE[x z_r 
      y z_i
      size TAMX TAMY 
      h 30 sat 0 
      b (1+(1-numPasos)/(MAXPASOS-1))]
   }
  }
 }
}

No hay comentarios:

Publicar un comentario