viernes, 27 de febrero de 2015

La batalla de Esmolensco

(es) La batalla de Esmolensco

(eo) La batalo de Smolensko

(be) Смаленская бітва

La batalla de Esmolensco

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

Descripción artística:

Un baño de sangre sobre el suelo helado de Esmolensko (Смаленск).

Motivación:

Una serie de documentales sobre la Segunda Guerra Mundial, particularmente sobre la Operación Barbarroja y cómo se desarrollaron los hechos del avance alemán en suelo soviético en el período de 1941-1943.

Descripción técnica:

Una vista de un conjunto de Julia con semilla c=0.39-0.252857i en el intervalo de los reales: [-0.21,0.63] y en los imaginarios: [-0.865714,-0.025714].
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 son puntos de tono rojo y brillo máximo con saturación más baja para los puntos mientras más rápido se determine que no pertenecen al conjunto, y más alta mientras más se tarde en determinar la no pertenencia. Los puntos que sí pertenecen al conjunto se pintan como rojo intenso.

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


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

startshape julia3(0.39, -0.252857)

LADO = 0.84
CX = 0.21
CY = -0.445714
LIMIZQ = CX - LADO/2
LIMABAJO = CY - LADO/2
LIMDER = CX + LADO/2
LIMARRIBA = CY + LADO/2

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 julia3(c_r,c_i) {
 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)
   SQUARE[x z_r y z_i size TAMX TAMY b 1 sat ((numPasos-1)/(MAXPASOS-1))]
  }
 }
}

shape julia1(c_r,c_i) {
 FILL[ h 30 sat 0.16 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){
    CIRCLE[x z_r    y z_i    b 0 size TAMX TAMY]
   }
  }
 }
}

No hay comentarios:

Publicar un comentario