10 Dibujando con funciones recorte-Félix Delgado Plana

 https://www.youtube.com/watch?v=HBTxk1Wkm6g&t=287s

-Félix Delgado Plana

Dibujando Fractales con Funciones Recursivas - La Curva de Koch

Introducción

Los fractales son figuras geométricas fascinantes que se caracterizan por repetir un patrón a diferentes escalas. El ejemplo más clásico y educativo es la curva de Koch, que vamos a aprender a dibujar paso a paso utilizando programación y funciones recursivas.


📚 Conceptos Clave

Término

Significado

Fractal

Figura que se repite a sí misma infinitamente a diferentes escalas

Recursión

Técnica donde una función se llama a sí misma

Iteración

Cada nivel de profundidad en el dibujo del fractal

Curva de Koch

Fractal básico que se construye dividiendo segmentos en 4 partes iguales


🎯 Objetivos del Tutorial

  • Comprender el concepto de recursión aplicado a gráficos

  • Aprender a modularizar código mediante funciones

  • Dibujar la curva de Koch en diferentes niveles de detalle

  • Visualizar cómo aumenta la complejidad con cada iteración


📝 Paso 1: Configuración Inicial

Preparar el escenario

text

1. Cargar el fondo con malla visible

2. Colocar el lápiz en posición inicial: (-240, -180)

3. Orientar el lápiz hacia la derecha (0°)

4. Subir el lápiz para no dibujar mientras nos posicionamos

Configuración del lápiz

  • Tamaño de línea: 3 píxeles (ajustable)

  • Color: El que prefieras

  • Borrar pantalla: Al presionar espacio


📝 Paso 2: Dibujo Básico de la Curva (Iteración 1)

La curva de Koch nivel 1 se dibuja en 4 movimientos:

text

Inicio: (-240, -180) apuntando a la derecha


1. Avanzar 480/3 = 160 unidades

2. Girar 60° a la izquierda

3. Avanzar 160 unidades

4. Girar 120° a la derecha

5. Avanzar 160 unidades

6. Girar 60° a la izquierda

7. Avanzar 160 unidades

graph LR

    A[Inicio] --> B[1. Avanzar 160]

    B --> C[2. Girar 60°]

    C --> D[3. Avanzar 160]

    D --> E[4. Girar 120°]

    E --> F[5. Avanzar 160]

    F --> G[6. Girar 60°]

    G --> H[7. Avanzar 160]


📝 Paso 3: Modularización con Funciones

Crear la función coc(tamaño, iteración)

Parámetros:

  • tamaño: Longitud total del segmento a dibujar

  • iteración: Nivel de profundidad (1 = básico, 2+ = recursivo)

Estructura de la función:

text

función coc(tamaño, iteración):

    si iteración == 1:

        // Dibujar curva básica

        mover(tamaño/3)

        girar(60°)

        mover(tamaño/3)

        girar(-120°)

        mover(tamaño/3)

        girar(60°)

        mover(tamaño/3)

    si no:

        // Llamada recursiva en cada segmento

        coc(tamaño/3, iteración-1)

        girar(60°)

        coc(tamaño/3, iteración-1)

        girar(-120°)

        coc(tamaño/3, iteración-1)

        girar(60°)

        coc(tamaño/3, iteración-1)


📝 Paso 4: Explicación de la Recursión

¿Cómo funciona?

  1. Iteración 1: Dibuja la curva simple de 4 segmentos

  2. Iteración 2: Cada segmento se convierte en una curva de Koch

  3. Iteración 3: Cada sub-segmento se convierte nuevamente en una curva

  4. Y así sucesivamente hasta alcanzar el nivel deseado

Visualización del proceso:

text

Iteración 1:  ▬▬▬▬

               ↓

Iteración 2:  ▬/\▬  (cada línea se convierte en un "pico")

               ↓

Iteración 3:  /\ /\  (cada línea del pico se subdivide)


📝 Paso 5: Código Completo (Pseudo-código)

javascript

// Configuración inicial

al_pulsar(espacio):

    borrar_pantalla()

    subir_lápiz()

    ir_a(-240, -180)

    apuntar_derecha()

    bajar_lápiz()

    tamaño_lápiz(3)

    

    // Llamar a la función fractal

    coc(480, 3)  // tamaño = 480, iteración = 3


// Función recursiva

definir coc(tamaño, iteración):

    si iteración == 1:

        // Caso base: dibujar curva simple

        mover(tamaño / 3)

        girar(60)

        mover(tamaño / 3)

        girar(-120)

        mover(tamaño / 3)

        girar(60)

        mover(tamaño / 3)

    si no:

        // Caso recursivo: dibujar fractal dentro de cada segmento

        coc(tamaño / 3, iteración - 1)

        girar(60)

        coc(tamaño / 3, iteración - 1)

        girar(-120)

        coc(tamaño / 3, iteración - 1)

        girar(60)

        coc(tamaño / 3, iteración - 1)


📝 Paso 6: Ajustes y Mejoras

Recomendaciones según nivel de iteración:

Iteración

Tamaño de Lápiz

Tiempo Estimado

Observación

1

3-4

Instantáneo

Curva básica

2

3

Rápido

4 curvas pequeñas

3

2

Moderado

16 curvas más pequeñas

4

1-2

Lento

64 curvas

5+

1

Muy lento

Alta complejidad

Consejos prácticos:

  • Para pruebas: Comenzar con iteración 1 o 2

  • Para resultados visuales: Usar iteración 3 o 4

  • Para arte final: Iteración 5+ con lápiz fino


📝 Paso 7: Ejecución y Resultados

Al presionar ESPACIO:

  1. Iteración 1:

    • Aparece la curva básica (un pico en el centro)

  2. Iteración 2:

    • Cada segmento de la curva se convierte en una curva de Koch

    • Aparecen 4 picos más pequeños

  3. Iteración 3:

    • Se forman 16 sub-curvas

    • El dibujo comienza a parecer un copo de nieve

  4. Iteración 4+:

    • La figura se vuelve más detallada

    • El borde se vuelve "dentado" y complejo


🔍 Análisis del Comportamiento

¿Por qué es importante la condición de parada?

javascript

si iteración == 1:  // ¡CASO BASE!

    // Dibujar la curva simple

Sin esta condición, el programa nunca terminaría (recursión infinita).

Relación entre iteraciones y complejidad:

  • Iteración 1: 4 segmentos

  • Iteración 2: 4 × 4 = 16 segmentos

  • Iteración 3: 16 × 4 = 64 segmentos

  • Iteración N: 4^N segmentos


💡 Experimentos Sugeridos

  1. Cambiar el ángulo: Probar con 45° o 90° en lugar de 60°

  2. Variar el factor de escala: Usar división entre 4 o 5

  3. Combinar colores: Cambiar color en cada iteración

  4. Copo de nieve de Koch: Crear un triángulo completo


🎨 Ejemplo Visual de la Evolución

text

Iteración 0:  ────────────────  (línea recta)


Iteración 1:  ────/\────  (un pico)


Iteración 2:  ─/\─/\─/\─/\─  (picos dentro de picos)


Iteración 3:  (patrón más detallado y complejo)


✅ Resumen del Tutorial

Paso

Acción

Concepto

1

Configurar escenario

Preparación del entorno

2

Dibujar curva básica

Entender el patrón

3

Crear función

Modularización

4

Añadir recursión

Llamadas a sí misma

5

Condición de parada

Evitar bucles infinitos

6

Ajustar parámetros

Control de calidad visual


🚀 Conclusión

Has aprendido a:

  • ✅ Dibujar la curva de Koch paso a paso

  • ✅ Usar funciones recursivas para crear fractales

  • ✅ Controlar el nivel de detalle con iteraciones

  • ✅ Modularizar código para hacerlo reutilizable

La recursión es una herramienta poderosa que permite crear complejidad a partir de patrones simples. ¡Experimenta con diferentes valores y crea tus propios fractales!


📚 Material Complementario

  • Copo de nieve de Koch: Repite el proceso en 3 lados

  • Triángulo de Sierpinski: Otro fractal famoso

  • Conjunto de Mandelbrot: Fractal en el plano complejo

Comentarios

Entradas más populares de este blog

1.4 - Interfaz de usuario-Xnergic TCM

1.7 - Bloques de uso más común-Xnergic TCM

1.5 - Personajes-Xnergic