★ CODING ★ EL FANTASTICO MUNDO DE LAS IMÁGENES FRACTALES|Amstrad Semanal) ★![]() |
| Fractales |
El programa que hoy proponemos desde esta artística sección le va a permitir obtener hermosas representaciones de montañas, utilizando para ello un complejo algoritmo muy conocido y usado en el cine de fantasía e imaginación. La geometría fractal pertenece a una de esas extrañas ramas matemáticas cuyo cometido roza lo incomprensible. Su fundamento básico es el estudio de unas curvas (variedades, dirían los puristas) que se encuentran más allá del mundo unidimensional de las líneas, pero que no alcanzan la bidimensionalidad de las superficies; de ahí su cabalístico nombre, fractal, y que pretende explicar la dimensión fraccionaria de su naturaleza. Una de las aplicaciones que los no matemáticos supieron encontrarle a estas teorías fue la elaboración de asombrosas montañas, y fue precisamente Lucas Film, famosa compañía dedicada a la realización de películas con grandes efectos especiales, quien desarrolló el proceso que formaría muchas de las montañas que aparecen en sus fantásticos paisajes. Naturalente, no podemos pretender que en nuestro pequeño CPC o incluso en nuestro PC 1512, vayan a producirse imágenes excesivamente realistas. La necesidad de grandes resoluciones, paletas de color muy amplias y elevadas capacidades de cálculo y memoria, relegan este tipo de aplicaciones al terreno de los grandes ordenadores, que quedan muy lejos de nuestras capacidades. El proceso de formación de la montaña se fundamenta principalmente en la transformación de un triángulo, del cual generaremos cuatro nuevos triángulos, de cada uno de los cuales generaremos cuatro nuevos triángulos, y así sucesivamente. En la imagen que ilustra la fase 1 podemos apreciar el triángulo con el que comenzaremos a trabajar. Lo primero que va hacer nuestro programa es calcular los puntos medios de cada lado. Posteriormente movemos este punto medio en la vertical, en un factor proporcional a la longitud del lado. De esta forma obtendremos tres puntos, que junto a los tres vértices del viejo triángulo van a formar cuatro nuevos triángulos, como puede apreciarse en la imagen de la fase 2. En este caso en particular, el incremento ha sido negativo y por eso los puntos medios han bajado. Si a cada uno de estos cuatro triángulos le aplicásemos el proceso anteriormente descrito, lo que obtendríamos es algo parecido a lo que se muestra en la fase 3. Según aumenta la fase, iremos obteniendo cada vez un mayor numero de triángulos, y la perfección de nuestra montaña y su realismo será también cada vez mayor. En nuestro caso particular, tanto en la versión CPC como en la versión PC, alcanzamos una profundidad de seis niveles. Dado que comenzamos con un triángulo, el número final de triángulo que tendremos será de Ix4x4x4x4x4 , lo que supone exactamente la cifra de 1.024 triángulos. Y para el caso de que queramos profundizar un nivel más, la cifra sería ya de 4.096. Para realizar la transformación lo que hacemos es coger los puntos medios de cada triángulo y les aplicamos un incremento aleatorio, extraído en la línea 110 del programa. En nuestro programa hemos dado unos valores comprendidos entre —0.15 y 0.25, para la versión PC y entre —0.15 y 0.15 para la versión CPC. Nótese que estos valores permanecen constantes en cada triángulo, y se emplean para modificar los puntos medios de cada uno de los lados. Una vez que obtenemos estos nuevos puntos, los incluimos en nuestro array, sustituyendo el viejo triángulo, que ya no nos sirve para nada, por el nuevo, por uno de los generados, y poniendo el resto al principio de lo que nos queda libre del array. Una vez que hemos realizado la transformación de todos los triángulos, comenzamos de nuevo la tarea, y así hasta cinco veces que son controladas por el bucle de la línea 81 a 332. El bucle final es el encargado de pintar todos los triángulos en la pantalla, formando de esta manera una montaña aleatoria, más o menos convincente. Existen varios parámetros que pueden ser modificados, y con los que obtendremos resultados totalmente distintos, que se prestan a ser experimentados. Lo primero que podemos cambiar el es triángulo inicial. Para ello deberemos modificar los valores de las líneas 40, 50 y 60. La profundidad es otro de los valores que podremos alterar variando la constante (5) del bucle por un valor más bajo, ya que no hay memoria para más. Por último, podremos variar el intervalo del incremento, modificando los valores de la línea 110. El resultado de todo esto no es una variedad fractal, pero si nuestro ordenador fuese capaz de realizar esta tarea infinitas veces y nosotros la paciencia, la enorme paciencia de esperarle, lo obtenido sí que sería una variedad de estas características.
|