Git Product home page Git Product logo

jantoniovr / geometria-fractal Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 1.0 185.49 MB

Trabajo de Fin de Grado de Juan Antonio Villegas Recio, estudiante de Ingeniería Informática y Matemáticas en la Universidad de Granada. El proyecto consiste en una introducción a los fractales y a sus fundamentos matemáticos, junto visualización de fractales 2D y 3D utilizando técnicas de Ray-Tracing

Home Page: https://jantoniovr.github.io/Geometria-Fractal

License: MIT License

TeX 59.14% Mathematica 13.36% HTML 6.52% CSS 0.41% JavaScript 20.57%
fractal-algorithms fractal-images fractal-rendering fractals tfg tfg-etsiit tfg-ugr ugr

geometria-fractal's Introduction

Fractales

Fundamentos Matemáticos y Visualización con Ray-Tracing

Trabajo de Fin de Grado

Doble Grado en Ingeniería Informática y Matemáticas

Alumno: Juan Antonio Villegas Recio

Tutor de Matemáticas: Manuel Ruiz Galán

Tutor de Informática: Carlos Ureña Almagro

Universidad de Granada

Curso 2021/2022

Este es el repositorio principal en el que pueden encontrarse todos los ficheros correspondientes al proyecto: los guiones de Mathematica, los archivos de $\LaTeX$ utilizados para la elaboración de la memoria, los ficheros de HTML, CSS y JavaScript correspondientes a la web, el código GLSL de los shaders utilizados, imágenes, etc.

Como producto final del proyecto, se sugiere consultar:

  • El despliegue en github pages de este repositorio: jantoniovr.github.io/Geometria-Fractal/. Es el producto software principal del proyecto. Consiste en una web interactiva y documentada en la que se permite visualizar fractales tanto 2D como 3D y modificar su apariencia mediante una serie de parámetros.
  • La memoria del TFG: Disponible en la ruta memoria/main.pdf. En la memoria se describen los fundamentos matemáticos y los principales resultados de la geometría fractal de manera rigurosa. Además, también se explica minuciosamente el proceso de desarrollo y la programación del producto software junto con los fundamentos de las técnicas empleadas.
  • Los guiones de Mathematica: Se pueden consultar en el directorio Mathematica. Durante los primeros capítulos de la memoria se emplea una gran cantidad de imágenes y se describe y referencia código Mathematica para generarlas. Estos guiones recogen dicho código con explicaciones del mismo y ordenados por secciones de la misma manera que la memoria.

Uso del producto Software

La web interactiva, que es el producto software desarrollado en este proyecto, puede consultarse y utilizarse desde cualquier navegador desde la dirección jantoniovr.github.io/Geometria-Fractal/. No obstante, por cuestiones de eficiencia recomendamos ejecutar el proyecto en local. Explicamos el procedimiento en los siguientes párrafos.

  1. Primero de todo necesitamos descargar el código de este repositorio. Para ello, mediante una terminal nos situamos en el directorio que deseemos y clonamos el repositorio:
~$ git clone [email protected]:JAntonioVR/Geometria-Fractal.git
~$ cd Geometria-Fractal

Si no se dispone de git en la pestaña Code se puede encontrar la posibilidad de descargar un ZIP con el código.

  1. Es necesario lanzar un servidor web local. Para esto, se ofrecen algunas de las alternativas más sencillas. Si se dispone de Python, bastaría con ejecutar el comando:
python -m SimpleHTTPServer 8000 # Si se dispone de Python 2

o

python -m http.server 8000 # Si se dispone de Python 3 (recomendado)

Tras esto, abra su navegador en la URL http://localhost:8000/ y encontrará la portada del proyecto.

Otra alternativa para los usuarios del editor Visual Studio Code (VSCode) es la extensión Live Server, la cual con tan solo instalarla y pulsar el botón 'Go Live' que aparecerá en la esquina inferior derecha lanza un servidor web en el directorio que se tenga abierto en el momento y abre una ventana en el navegador.

Por último, en este enlace se explica la posibilidad de crear un servidor web utilizando node.js.

Nota: Con Python se utiliza el puerto 8000, con 'Live Server' el 5500 y con node.js el 8080. Sin embargo, es posible que por cualquier razón esos puertos estén ocupados por otros procesos y aparezca algún error. Si esto ocurre simplemente utilice algún puerto distinto que esté disponible.

  1. Independientemente de la opción que hayamos elegido para lanzar el servidor web, tan solo resta abrir el navegador que queramos e introducir la dirección http://localhost:PPPP/, siendo PPPP el puerto que hayamos elegido finalmente.

Sin nada más que añadir, deseamos que el lector disfrute de todo lo que se le ofrece, comenzando por las siguientes dos imágenes.

geometria-fractal's People

Contributors

asmilex avatar jantoniovr avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

asmilex

geometria-fractal's Issues

Documentar código

Todo el código debe estar debidamente documentado e incluida dicha documentación en la memoria.

Arreglar o entender fallos en Mathematica

Una serie de códigos ejecutados en Mathematica me han dado problemas (A solucionar con Manuel)

  • El juego del caos
  • La celda en el 2.4.1. que no se ejecuta en mil años
  • En general las que son Length[FixedPointList[...]] no se ejecutan en mil años
  • En 3.1. el DensityPlot pone una imagen en blanco, más abajo hay una función muy similar que usa Mod y funciona pero los colores son horribles. Luego los conjuntos generalizados funcionan crema.
  • En el 4.4. intento sintetizar todo el DensityPlot[...] en una función para no chapar y me sale una salida muy rara. Y uno de los conjuntos sale en blanco por razones oscuras seguramente. Y más abajo pasa lo mismo al intentar hacer una función que grafique M.
  • En el 5.3 muchos problemas derivados de números excesivamente pequeños y cuando $k=1$ dice que no converge.
  • En el 5.4.1 lo mismo, números demasiado pequeños.
  • Del 7.2 no funciona nada.

Dimensión de los objetos fractales clásicos

Habría que probar o referenciar que la definición de dimensión fractal autosimilar es una buena definición, en el sentido de que no depende de la partición concreta ni de k.

Añadir efectos realistas al ray tracing

Para darle un aspecto más realista podemos:

  • Añadir material al suelo en lugar de un color uniforme.
  • Añadir sombras provocadas por las fuentes de luz.
  • Aplicar antiliasing para mejorar los resultados

Redactar la parte de informática

Comenzar a redactar la documentación de la parte de informática:

  • Introducción a las bibliotecas de renderización
  • WebGL y sus componentes (con insistencia en los shader)
  • Visualización de fractales 2D
  • Introducción al ray-tracing
  • Visualización de fractales 3D

Corregir MIL

El modelo de iluminación utilizado en RT es un pelín más complejo de lo que encontré en la bibliografía, por lo que hay que editarlo.

Redactar Capítulo 3

Redactar el capítulo 3, que será la unión de los capítulos 3 y 4 de 'Iteración y Fractales', de forma que se llamará Conjuntos de Julia y Mandelbrot.

Redactar capítulo 4

Redactar el capítulo 4, que tratará de sistemas de funciones iteradas (SFI)

Redactar el capítulo 2

Una vez finalizada prácticamente la redacción del capítulo 1, es momento de redactar el capítulo 2, que trata sobre iteración

Extender lo relativo a la dimensión fractal

En el apartado 1.4 de 'Iteración y Fractales' se trata la dimensión fractal de manera intuitiva. Usar recursos para ampliar este concepto.

Explicar la relación entre las distintas medidas/dimensiones y, si no se usan todas, explicar por qué se introducen

Redactar presupuestos y diseños

La memoria de informática requiere un apartado de presupuestos, análisis de requisitos y diseño del proyecto, hay que hacerla

Añadir interactividad a la página

Añadir código para:

  • Mover de posición el conjunto de Mandelbrot
  • Hacer zoom en las distintas regiones
  • Parametrizar el número máximo de iteraciones.

Estructura de la parte de Matemáticas

Una vez leído el título 'Iteración y Fractales', es momento de estructurar el contenido del proyecto. Qué se va a incluir, qué se va a eliminar, partes en las que merezca la pena pararse más, etc.
Importante no pararse demasiado en pequeños detalles y estructurar de forma que la parte de matemáticas ocupe aproximadamente unas 50-60 páginas (cuidado con las fotos).

Mejorar interacción en la web del canvas

Para mejorar la interacción se proponen algunas propuestas:

  • Desplazar los controles a la derecha
  • Añadir texto con los controles
  • Eliminar el deslizado como método de zoom
  • Añadir botón de 'reset'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.