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
🎯 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?
Iteración 1: Dibuja la curva simple de 4 segmentos
Iteración 2: Cada segmento se convierte en una curva de Koch
Iteración 3: Cada sub-segmento se convierte nuevamente en una curva
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:
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:
Iteración 1:
Aparece la curva básica (un pico en el centro)
Iteración 2:
Cada segmento de la curva se convierte en una curva de Koch
Aparecen 4 picos más pequeños
Iteración 3:
Se forman 16 sub-curvas
El dibujo comienza a parecer un copo de nieve
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
Cambiar el ángulo: Probar con 45° o 90° en lugar de 60°
Variar el factor de escala: Usar división entre 4 o 5
Combinar colores: Cambiar color en cada iteración
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
🚀 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
Publicar un comentario