Lunes 14 de Junio

Guia 2: Fractal de Koch

Esta guía es un complemento a la clase de cátedra del día Miércoles 9 de Junio en donde ser vio recursividad. Antes de realizar esta guía revise los conceptos vistos en esa cátedra.


Ejercicio 1:

Recupere el programa FractalDeKoch.java (ponga el curso sobre el link, presione el botón derecho del mouse sin soltarlo y elija la opción Save Link As).

Compílelo y ejecútelo varias veces. El programa le pedirá que ingrese un orden (que debe ser un número entero), pruebe con los valores 3, 2, 1 y 0. Luego, pruebe con 4, 5 y 6.

Explicación:

La trayectoria que describe la tortuga se llama fractal de Koch. Un fractal es una figura que a simple vista parece ser muy compleja, pero cuya construcción obedece a principios extremadamente simples.

La definición inductiva del fractal de Koch es la siguiente:

Esta definición inductiva de un fractal de Koch se implementa trivialmente por medio de un procedimiento recursivo. El siguiente es el procedimiento que dibuja el fractal de Koch en el programa:

    void trazar(int orden, double largo, Tortuga tort) {
      if (orden==0) {
        tort.mover(largo);
        // sleep(1./5);
      }
      else {
        trazar(orden-1, largo/3, tort);
        tort.virarIzq(60);
        trazar(orden-1, largo/3, tort);
        tort.virarDer(120);
        trazar(orden-1, largo/3, tort);
        tort.virarIzq(60);
        trazar(orden-1, largo/3, tort);
      }
    }
Quite los // en la línea:

    // sleep(1./5);
y luego ejecute el programa con órdenes 1 y 2. Podrá apreciar mejor el orden en que se dibujan las líneas.


Ejercicio 1:

El fractal cuadrado se define inductivamente al igual que el fractal de Koch. El fractal cuadrado de orden 0 y de tamaño l se construye dibujando una línea recta. El fractal cuadrado de tamaño n (mayor que 0) se construye a partir del fractal cuadrado de tamaño n-1. El fractal cuadrado de orden 1 y tamaño l forma la siguiente figura:

Modifique el programa FractalDeKoch para que dibuje el fractal cuadrado de orden n, con n un número ingresado por el usuario.


Ejercicio 2 (optativo):

Defina su propia figura fractálica siguiendo el siguiente patrón:

    void trazar(int orden, double largo, Tortuga tort) {
      if (orden==0)
        tort.mover(largo);
      else {
        ... trazar( ... ) ... // invocaciones recursivas de trazar
        ... virarIzq(...) ... // virajes a la izquierda o la derecha
        // al final, la tortuga debe mantener la misma dirección
        // que traía antes de esta invocación de trazar y debe
        // haberse desplazado la distancia ``largo'' en esa misma direccion.
      }
    }
Si descubre una figura interesante publique su programa en uch.ing.cursos.cc10a06.