0% encontró este documento útil (0 votos)
34 vistas19 páginas

Fractales y Graficación en Informática

El documento presenta un estudio sobre fractales y su aplicación en diversas disciplinas, destacando su utilidad en la modelación de fenómenos naturales, compresión de imágenes y diseño gráfico. Se detalla el uso de herramientas como DOSBox y Fractint para generar fractales, así como los pasos necesarios para crear un fractal específico, el copo de nieve de Koch. Además, se incluye un análisis del código utilizado para la creación de este fractal en 3D.

Cargado por

201809255
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
34 vistas19 páginas

Fractales y Graficación en Informática

El documento presenta un estudio sobre fractales y su aplicación en diversas disciplinas, destacando su utilidad en la modelación de fenómenos naturales, compresión de imágenes y diseño gráfico. Se detalla el uso de herramientas como DOSBox y Fractint para generar fractales, así como los pasos necesarios para crear un fractal específico, el copo de nieve de Koch. Además, se incluye un análisis del código utilizado para la creación de este fractal en 3D.

Cargado por

201809255
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD MAYOR DE SAN SIMÓN

FACULTAD DE CIENCIAS Y TECNOLOGÍA

CARRERA DE INGENIERÍA INFORMÁTICA

CARRERA DE INGENIERÍA DE SISTEMAS

Graficación por computadora


Fractales / Raytracing

Materia: Graficación por computadora

Estudiantes: Alcocer Villarroel Octavio Andre


Alderete Antonio Alexander
Aliaga Parrado Xavier Angel
Calli Rodriguez Boris Victor
Delgadillo Ponce Demys Jesus

Docente: Ing. Boris Marcelo Calancha Navia

Fecha: 18 de Diciembre de 2024

Cochabamba - Bolivia
1.Introducción
¿Qué son los fractales?
Los fractales son formas que se repiten una y otra vez, sin importar cuánto las acerques o
alejes, siempre tienen un patrón parecido. Son como un dibujo que se copia a diferentes
tamaños, pero sigue siendo similar al original.

Por ejemplo, piensa en un copo de nieve o en las ramas de un árbol: si miras de cerca, las
partes pequeñas se parecen al todo. Esto ocurre porque los fractales se crean siguiendo reglas
simples que se repiten muchas veces.

¿Para qué sirven?

Los fractales tienen muchas aplicaciones prácticas porque su estructura ayuda a describir y
modelar formas y fenómenos complejos que ocurren en la naturaleza y en la tecnología. Algunas
de sus principales utilidades son:

En la naturaleza y ciencias:

● Modelar fenómenos naturales: Los fractales se usan para entender y representar


cosas como la forma de las montañas, costas, nubes, ríos, rayos y árboles.
● Biología: Para estudiar patrones de crecimiento, como los vasos sanguíneos, las
neuronas o los pulmones, que tienen estructuras fractales.

En la tecnología:

● Compresión de imágenes y videos: Los fractales permiten comprimir información


visual al representar imágenes con patrones repetitivos, lo que reduce el tamaño de los
archivos.
● Diseño de antenas: Las antenas fractales son muy eficientes porque pueden operar en
varias frecuencias gracias a su estructura autosimilar.

En gráficos y arte:

● Diseños visuales: Se usan para crear imágenes y animaciones complejas y atractivas,


especialmente en cine y videojuegos.
● Simulación de paisajes: Los fractales ayudan a generar terrenos, montañas y paisajes
virtuales en 3D.

En matemáticas y física:

● Estudio de sistemas complejos: Los fractales describen fenómenos como el caos,


sistemas dinámicos y estructuras que no pueden explicarse con geometría clásica.
● Optimización: En la resolución de problemas que requieren eficiencia, como redes
eléctricas o rutas de transporte.
En medicina:

● Diagnósticos: Los fractales ayudan a analizar imágenes médicas, como radiografías,


para detectar irregularidades en tejidos o vasos sanguíneos.
● Estudio de enfermedades: Permiten estudiar patrones en el comportamiento de
enfermedades como el cáncer o la actividad cerebral.

En resumen, los fractales sirven para entender mejor el mundo, crear tecnología avanzada y
generar arte impresionante. Su capacidad para describir patrones complejos los hace útiles en
casi todas las disciplinas.

2.¿Qué herramientas se usaron?:

DOSBox

DOSBox es un emulador de MS-DOS, un sistema operativo ampliamente utilizado en los años


80 y 90. DOSBox permite ejecutar aplicaciones y juegos antiguos diseñados para MS-DOS en
sistemas operativos modernos como Windows, Linux y macOS. Esto es particularmente útil
para programas como Fractint, que fueron desarrollados originalmente para MS-DOS y no son
compatibles de forma nativa con sistemas actuales.

Beneficios clave:

Accesibilidad moderna:

Sin DOSBox, sería casi imposible ejecutar Fractint en un sistema operativo moderno como
windows 11.

Fidelidad gráfica:

DOSBox asegura que los fractales se generen con las características visuales originales
diseñadas para MS-DOS.

Facilidad de experimentación:

Puedes probar diferentes fractales, explorar zonas de zoom, y ajustar parámetros con facilidad
gracias al entorno emulado de DOSBox.
Fractint

Fractint es un programa gratuito y de código abierto diseñado para la generación de fractales,


desarrollado originalmente para el sistema operativo MS-DOS. Fue creado por un grupo de
programadores llamado el "Stone Soup Group" en la década de 1980, y rápidamente se
convirtió en una herramienta de referencia para la visualización de fractales en computadoras
personales.

Fractint es conocido por su versatilidad, rapidez y capacidad para generar una gran variedad de
fractales utilizando fórmulas matemáticas complejas. A principios de los años 90, era
considerado uno de los programas más avanzados para la generación de fractales en sistemas
personales debido a su capacidad para aprovechar el hardware de la época y optimizar cálculos
iterativos.

Ventajas de usar Fractint:

● Variedad de fractales: Permite explorar múltiples tipos de fractales en un solo programa.


● Herramienta educativa: Ideal para aprender sobre matemáticas y geometría fractal.
● Capacidades de zoom: Te permite explorar los detalles infinitos de los fractales.
● Rapidez: A pesar de su antigüedad, sigue siendo eficiente en cálculos iterativos.
● Personalización: Ofrece opciones avanzadas para modificar fórmulas y colores.

En conjunto, Fractint y DOSBox son una combinación perfecta, brindando la capacidad de


experimentar con fractales en un entorno compatible con los sistemas modernos. Esto te permite
explorar y generar imágenes fractales detalladas.

3. Pasos para crear un fractal en Fractint:


3.1 Abrir Fractint:

Inicia Fractint dentro de DOSBox.

3.2 Seleccionar un fractal:

En el menú principal, usa las flechas arriba/abajo para elegir un tipo de fractal (ejemplo:
Mandelbrot, Julia, Newton).

Presiona Enter para seleccionarlo.

3.3 Configurar parámetros (opcional):

Ajusta los parámetros (como iteraciones, constantes o colores) si deseas personalizar el fractal.

Usa las teclas de números para cambiar valores de los parámetros mostrados en pantalla.
3.4 Generar el fractal:

Presiona cualquier tecla para que Fractint calcule y muestre el fractal en pantalla.

3.5 Explorar el fractal:

Zoom: Presiona Z para activar zoom, mueve el rectángulo con las flechas y presiona Enter para
ampliar.

Colores: Usa F7 para cambiar la paleta de colores y F8 para ajustar el ciclo de color.

3.7 Guardar el fractal:

Presiona S para guardar la imagen en el formato de Fractint (o exportar como BMP, si es


compatible).

3.8 Crear nuevos fractales:

Presiona Esc para regresar al menú principal y seleccionar un nuevo fractal.

Copo De Nieve De Koch

#version 3.7;
#include "colors.inc"

// Configuración global
global_settings { assumed_gamma 1.0 }

// Cámara
camera {
location <150, 100, -350> // Cámara elevada y alejada
look_at <0, 0, 0> // Punto de enfoque en el origen
angle 30 // Ángulo amplio para capturar toda la estructura
}

// Iluminación
light_source { <100, 200, -200> color White }
light_source { <-100, 200, -200> color White }

// Plano de fondo
plane {
y, -50
pigment { color rgb <0.9, 0.9, 0.9> } // Color gris claro para el suelo
}
// Macro para dibujar una línea en 3D con grosor y profundidad
#macro DrawLine3D(A, B, Thickness, Color)
cylinder {
A, B, Thickness
pigment { color Color }
finish {
reflection 0.1 // Reflexión ligera
specular 0.3 // Brillo moderado
}
}
// Esferas en los extremos para suavizar las uniones
sphere { A, Thickness pigment { color Color } }
sphere { B, Thickness pigment { color Color } }
#end

// Macro para el copo de nieve de Koch en 3D


#macro KochSegment3D(A, B, Level, Thickness, Color)
#if (Level = 0)
DrawLine3D(A, B, Thickness, Color)
#else
// Calcular los puntos intermedios
#local V = (B - A) / 3;
#local P1 = A + V; // Punto 1/3
#local P3 = B - V; // Punto 2/3

// Calcular el pico (triángulo equilátero)


#local MidPoint = (P1 + P3) / 2;
#local Normal = vnormalize(<-(B - A).y, (B - A).x, 0>);
#local Height = vlength(V) * sqrt(3) / 2;
#local P2 = MidPoint + Normal * Height;

// Llamada recursiva para cada segmento


KochSegment3D(A, P1, Level - 1, Thickness, Color)
KochSegment3D(P1, P2, Level - 1, Thickness, Color)
KochSegment3D(P2, P3, Level - 1, Thickness, Color)
KochSegment3D(P3, B, Level - 1, Thickness, Color)
#end
#end

// Macro para rotar un punto en 2D


#macro RotatePoint(Point, Angle)
<Point.x * cos(radians(Angle)) - Point.y * sin(radians(Angle)),
Point.x * sin(radians(Angle)) + Point.y * cos(radians(Angle)),
Point.z>
#end

// Crear el copo de nieve con estructura triangular en 3D


#declare RecursionLevel = 4; // Nivel de recursión
#declare Thickness = 1; // Grosor inicial

// Triángulo equilátero inicial


#declare Scale = 100; // Tamaño del triángulo inicial
#declare A = <0, Scale, 0>;
#declare B = RotatePoint(A, 120);
#declare C = RotatePoint(B, 120);

// Colores
#declare Color1 = rgb <1, 0, 0>; // Rojo
#declare Color2 = rgb <0, 0, 1>; // Azul
#declare Color3 = rgb <0, 1, 0>; // Verde

// Dibujar cada lado del triángulo inicial en 3D


KochSegment3D(A, B, RecursionLevel, Thickness, Color1)
KochSegment3D(B, C, RecursionLevel, Thickness, Color2)
KochSegment3D(C, A, RecursionLevel, Thickness, Color3)

Capturas del copo de Nieve de Koch

Haciendo cambios en los parámetros de la cámara podemos obvervar 3 diferentes ángulos.

Captura 1:
Captura 2:

Captura 3:
Explicación del código

1. Configuración global y básicos

pov

Copiar código

#version 3.7;

#include "colors.inc"

// Configuración global

global_settings { assumed_gamma 1.0 }

 Se define la versión de POV-Ray (3.7) y se incluye el archivo estándar colors.inc para


acceder a colores predefinidos.

 global_settings ajusta la gamma para corregir la iluminación.


2. Cámara y luces

pov

Copiar código

// Cámara

camera {

location <-280, 100, -350> // Posición de la cámara

look_at <0, 0, 0> // Enfoca al origen (centro de la escena)

angle 30 // Ángulo de visión de 30 grados

// Iluminación

light_source { <100, 200, -200> color White }

light_source { <-100, 200, -200> color White }

 La cámara está ubicada lejos y elevada, capturando una vista amplia de la escena.

 Se añaden dos fuentes de luz blanca para iluminar desde distintas direcciones y evitar
sombras demasiado duras.

3. Plano de fondo

pov

Copiar código

// Plano de fondo

plane {

y, -50

pigment { color rgb <0.9, 0.9, 0.9> } // Color gris claro para el suelo

 Un plano horizontal (y = -50) representa el suelo, con un color gris claro.


4. Macro para dibujar una línea 3D con grosor

pov

Copiar código

#macro DrawLine3D(A, B, Thickness, Color)

cylinder {

A, B, Thickness

pigment { color Color }

finish {

reflection 0.1 // Reflexión ligera

specular 0.3 // Brillo moderado

sphere { A, Thickness pigment { color Color } }

sphere { B, Thickness pigment { color Color } }

#end

 Esta macro dibuja una línea 3D como un cilindro entre dos puntos A y B con grosor
Thickness y color Color.

 También añade esferas en los extremos para suavizar las conexiones.

5. Macro para el copo de nieve de Koch en 3D

pov

Copiar código

#macro KochSegment3D(A, B, Level, Thickness, Color)

#if (Level = 0)

DrawLine3D(A, B, Thickness, Color)

#else
#local V = (B - A) / 3; // Divide el segmento en tres partes

#local P1 = A + V; // Punto 1/3 del camino

#local P3 = B - V; // Punto 2/3 del camino

// Calcular el pico del triángulo equilátero

#local MidPoint = (P1 + P3) / 2;

#local Normal = vnormalize(<-(B - A).y, (B - A).x, 0>);

#local Height = vlength(V) * sqrt(3) / 2;

#local P2 = MidPoint + Normal * Height;

// Llamada recursiva para los cuatro segmentos resultantes

KochSegment3D(A, P1, Level - 1, Thickness, Color)

KochSegment3D(P1, P2, Level - 1, Thickness, Color)

KochSegment3D(P2, P3, Level - 1, Thickness, Color)

KochSegment3D(P3, B, Level - 1, Thickness, Color)

#end

#end

 Parámetros:

o A, B: Puntos inicial y final del segmento.

o Level: Nivel de recursión (profundidad).

o Thickness: Grosor de la línea.

o Color: Color de la línea.

 Funcionamiento:

o Si Level es 0, se dibuja una línea entre A y B con DrawLine3D.

o Si Level > 0, se divide el segmento en tres partes iguales. Se calcula el pico para
formar un triángulo equilátero en el centro y se realiza una llamada recursiva para
cada uno de los cuatro segmentos resultantes.
6. Macro para rotar un punto en 2D

pov

Copiar código

#macro RotatePoint(Point, Angle)

<Point.x * cos(radians(Angle)) - Point.y * sin(radians(Angle)),

Point.x * sin(radians(Angle)) + Point.y * cos(radians(Angle)),

Point.z>

#end

 Esta macro rota un punto 2D alrededor del origen por un ángulo especificado en grados.

7. Parámetros iniciales y ejecución

pov

Copiar código

#declare RecursionLevel = 4; // Nivel de recursión para el copo de nieve

#declare Thickness = 1; // Grosor de las líneas

#declare Scale = 100; // Tamaño del triángulo inicial

#declare A = <0, Scale, 0>;

#declare B = RotatePoint(A, 120);

#declare C = RotatePoint(B, 120);

// Colores para cada lado del triángulo inicial

#declare Color1 = rgb <1, 0, 0>; // Rojo

#declare Color2 = rgb <0, 0, 1>; // Azul

#declare Color3 = rgb <0, 1, 0>; // Verde


// Dibujar los lados del triángulo inicial usando la macro recursiva

KochSegment3D(A, B, RecursionLevel, Thickness, Color1)

KochSegment3D(B, C, RecursionLevel, Thickness, Color2)

KochSegment3D(C, A, RecursionLevel, Thickness, Color3)

 Se definen los puntos A, B, y C que forman un triángulo equilátero inicial.

 Se llama a KochSegment3D para cada lado del triángulo con el nivel de recursión y color
especificados.

Fundamentos

Definición del copo de nieve de Koch

El copo de nieve de Koch es una curva fractal construida a partir de un proceso recursivo que
comienza con un triángulo equilátero. En cada iteración, los lados del triángulo se subdividen y
se agregan nuevos detalles, creando una forma más compleja.

Proceso de construcción

El copo de nieve de Koch se forma mediante el siguiente proceso iterativo:

1. Paso 1 (Inicialización):
Comienza con un triángulo equilátero.

2. Paso 2 (Iteración 1):


En cada lado del triángulo:

o Divide el segmento en tres partes iguales.

o Sustituye el segmento central por dos segmentos que forman un triángulo


equilátero con la base eliminada.

3. Paso 3 (Iteraciones posteriores):


Repite el proceso para cada nuevo segmento creado en la iteración previa. Con cada
iteración, se agregan más detalles y la figura se vuelve más compleja.

Este proceso se puede repetir infinitamente, y cada iteración añade más "puntas" al copo de
nieve.
Ejemplo de iteraciones

1. Iteración 0:
Un triángulo equilátero simple.

2. Iteración 1:
Cada lado del triángulo se divide y se le añade una punta en forma de triángulo más
pequeño, dando como resultado una estrella de seis puntas.

3. Iteración 2:
Se aplica el mismo proceso a cada segmento nuevo creado en la iteración anterior.

4. Iteraciones posteriores:
El número de puntas crece exponencialmente y la figura se va acercando al patrón
característico del copo de nieve de Koch.

Propiedades del copo de nieve de Koch

1. Longitud infinita

 Aunque el copo de nieve de Koch ocupa un área finita, su perímetro es infinito.

 Esto se debe a que en cada iteración se añade más longitud a la curva. En la iteración
nnn, el perímetro aumenta por un factor de 43\frac{4}{3}34 respecto a la iteración
anterior.

2. Autosimilitud

 La estructura del copo de nieve es autosimilar. Esto significa que si se amplía una parte
de la figura, se verá una réplica exacta de la estructura completa.

 Cada sección se parece a la figura completa sin importar cuán pequeña sea.

3. Dimensión fractal

 La dimensión fractal del copo de nieve de Koch es aproximadamente


1.26191.26191.2619.

 Esto significa que la figura no es una línea unidimensional (d=1d = 1d=1), pero tampoco
es una superficie bidimensional (d=2d = 2d=2). Está en un punto intermedio debido a su
complejidad y detalle infinito.

La fórmula para calcular la dimensión fractal DDD de una curva autosimilar es:

D=log⁡(N)log⁡(r)D = \frac{\log(N)}{\log(r)}D=log(r)log(N)
Donde:

 N=4N = 4N=4 es el número de segmentos creados en cada iteración.

 r=3r = 3r=3 es el factor por el cual se escala cada segmento.

Por lo tanto:

D=log⁡(4)log⁡(3)≈1.2619D = \frac{\log(4)}{\log(3)} \approx 1.2619D=log(3)log(4)≈1.2619

4. Área finita

 A pesar de su perímetro infinito, el área encerrada por el copo de nieve de Koch es finita.

 El área tiende a:

2⋅3⋅s25\frac{2 \cdot \sqrt{3} \cdot s^2}{5}52⋅3⋅s2

Donde sss es la longitud del lado del triángulo inicial.

Aplicaciones del copo de nieve de Koch


El copo de nieve de Koch y los conceptos que representa son fundamentales en varias
disciplinas. A continuación, te detallo algunas aplicaciones destacadas:
1. Ciencias Naturales
2.
Geografía y geología
 Costas y fronteras naturales:
Las líneas costeras y las fronteras naturales presentan patrones fractales similares al
copo de nieve de Koch.
o Ejemplo: La costa de Gran Bretaña o las cadenas montañosas exhiben una
complejidad autosimilar a diferentes escalas.
o La longitud de una costa aumenta cuanto más detallada es la medición, lo que
refleja el mismo principio del perímetro infinito del copo de nieve de Koch.
Estructuras de copos de nieve
 Formación de cristales de hielo:
Los copos de nieve reales muestran patrones autosimilares y simetría hexagonal,
similares al copo de nieve de Koch. Aunque no son fractales perfectos, los principios
fractales ayudan a explicar cómo pequeñas variaciones generan patrones complejos.
Biología
 Crecimiento de organismos:
Muchos organismos vivos muestran estructuras fractales en su crecimiento y forma.
o Ejemplo: Los helechos y los corales crecen siguiendo patrones autosimilares.
o Estas estructuras permiten una eficiencia óptima en la distribución de recursos y
la captación de luz o nutrientes.
2. Tecnología y Telecomunicaciones
Antenas fractales
 Las antenas fractales aprovechan los principios del copo de nieve de Koch para
funcionar en múltiples frecuencias.
o Ventajas:
 Compactas y ligeras.
 Capacidad para recibir y transmitir señales en un amplio rango de
frecuencias sin necesidad de antenas múltiples.
o Se usan en dispositivos como:
 Teléfonos móviles.
 Redes Wi-Fi.
 Sistemas GPS.
Compresión de datos y señales
 Los algoritmos basados en fractales pueden comprimir datos aprovechando la repetición
autosimilar de patrones.
o Ejemplo: Compresión de imágenes y audio para reducir el tamaño de archivos
sin pérdida significativa de calidad.
3. Arquitectura y Diseño
Arte fractal

 Diseño gráfico y arte digital:


Los artistas utilizan fractales como el copo de nieve de Koch para crear obras
visualmente impactantes.
o Ejemplo: Obras de M.C. Escher que juegan con la repetición y la simetría.
o
Arquitectura sostenible
 Algunos arquitectos incorporan principios fractales en el diseño de edificios para
optimizar el uso del espacio y los materiales.
o Ejemplo: Fachadas con patrones fractales que maximizan la captación de luz
natural.
o
3. Matemáticas y Educación
4.
Comprensión de conceptos matemáticos complejos
 El copo de nieve de Koch es una excelente herramienta pedagógica para introducir
conceptos como:
o Geometría fractal.
o Autosimilitud.
o Dimensiones no enteras (dimensión fractal).
o Límites infinitos.

Teoría del caos


 Se utiliza en estudios relacionados con el caos determinista y sistemas dinámicos
complejos.
o Ejemplo: Modelar sistemas meteorológicos y fenómenos impredecibles.
5. Informática y Simulaciones
Gráficos por computadora
 Los fractales se aplican para generar entornos virtuales realistas en simulaciones y
videojuegos.
o Ejemplo: Paisajes naturales con montañas, costas y bosques que se generan
algorítmicamente usando patrones fractales.

Conclusiones
El copo de nieve de Koch es un ejemplo clásico de un fractal que encarna varios conceptos
matemáticos y físicos de gran relevancia:
1. Simplicidad y complejidad:
o A partir de reglas simples y repetitivas se pueden generar estructuras
increíblemente complejas.
2. Autosimilitud:
o La capacidad de una figura de repetirse a diferentes escalas permite comprender
patrones que se encuentran en la naturaleza y en sistemas artificiales.
3. Dimensión fractal:
o La dimensión no entera del copo de nieve de Koch muestra que la realidad no
siempre se ajusta a las dimensiones clásicas (1D, 2D, 3D). Muchas estructuras
naturales tienen dimensiones intermedias.
4. Perímetro infinito y área finita:
o Ilustra una paradoja intuitiva donde un objeto puede tener longitud infinita pero
encerrar una superficie finita, lo que desafía nuestra percepción tradicional de
espacio y medida.
5. Aplicación interdisciplinaria:
o El estudio de los fractales tiene aplicaciones prácticas en campos como:
 Ciencias naturales (biología, geología).
 Tecnología (telecomunicaciones, antenas).
 Arte y diseño (arte digital, arquitectura).
 Educación y matemáticas.

En resumen, el copo de nieve de Koch no es solo una curiosidad matemática, sino una
herramienta poderosa para modelar y entender el mundo que nos rodea, especialmente cuando
se trata de estructuras complejas y repetitivas.
1

También podría gustarte