diff --git a/doc/design.md b/doc/design.md deleted file mode 100644 index ce4999b..0000000 --- a/doc/design.md +++ /dev/null @@ -1,121 +0,0 @@ -# Manual de Diseño -Diaz Camacho Pedro Emilio - -# Resumen -manigraph es un graficador de variedades que lee archivos binarios con un forma -to espacial, este viene con un manual explicando como correr el programa, como -interactuar con el programa y las especificaciones del archivo binario. - -# Tecnologias -## Lenguajes: -* C89 -## Librerias: -* OpenGL -* GLFW -* cglm - -# Archivos -* Ejecutable. -* Ejemplo. - * Una libreria tipo STB, con las funciones para hacer variedades con una - funcion parametrizadora. - * LA PARAMETRIZACION DEBE SER CONTINUA. - * El codigo fuente de un programa que cree la variedad de una botella - de klein usando esta libreria. -* Manual - * Explicando como correr el programa desde la terminal. - * Explicando como interactuar con el programa con el teclado y mouse. - * Explicando el formato binario de las variedaedes. - * Explicando la libreria STB. - -# Objetivos -## Prioridad alta -_ El programa debe actualizarse cuando interactuan con el. -_ El usuario quiere: - X Ver 3 ejes en todo momento. - _ Ver que ejes esta viendo. - _ Ver cuantos ejes hay. -X El usuario quiere: - X Rotar estos ejes, - X Ver donde quedan los ejes despues de la rotados. -_ El usuario experimentado quiere ejecutar el programa y pasar la variedad: - _ Como argumento del programa. - _ Desde la entrada standar del programa. - -## Prioridad media - -_ El usuario quiere: - _ Cambiar los ejes que se ven por pares. - _ Cambiar los ejes donde esta la informacion de los ejes. -_ El usuario quiere interactuar con el programa: - _ Usando solo el mouse. - _ Usando solo el teclado. - -## Prioridad baja -_ El usuario quiere guardar las transformaciones como un archivo GIF. - -# Camino - -0 Graficadora de un cubo. - 0 Se hace un programa que muestre un cubo. - 0 Se muestran los 3 ejes del cubo - 0 Se rota el cubo en sus 3 ejes usando el teclado. - 0 Se rota el cubo en sus 3 ejes usando el mouse. - 0 Se muestran la etiqueta de los ejes. - 0 Se hace el formato de objetos multidimensionales. -0 Programa ejemplo - 0 Se hace un programa que divida un cuadrado en triangulos. - 0 Se mapea cada vertice del triangulo en un punto de la cinta de - mobius usando una parametrizacion - 0 Se mapea cada vertice del triangulo en un punto de la botella de - klein usando una parametrizacion - 0 Se divide cada lado de un cubo de n dimensiones, en triangulos. - -0 Graficadora de variedades - 0 Se generaliza el programa para usar este formato. - 0 Se muestran la informacion de los ejes mostrados y cuantos hay. - 0 Se pueden cambiar los ejes por pares - 0 Usando el mouse. - 0 Usando el teclado. -0 Detalles. - 0 Se anima el cambio de eje. - 0 Se hace el generador de GIF. - 0 Se puede cambiar el shader - 0 Documentacion - -# Cronograma - -| Persona | Ver | Objetivo| Fecha| -|.........|....|..........|......| -|Alan ||Familiarizarse con el codigo| 15-Sep-2024| -||3.1| Sombreado |17-Nov-2024| -|...|...|...|...| -|Francisco||Familiarizarse con el codigo|15-Sep-2024| -||0.4| Seleccionar ejes con el mouse|29-Sep-2024| -||0.4|Rotar ejes con el scroll del mouse| 13-Oct-2024| -|...|...|...|...| -|Roberto||Familiarizarse con el codigo|15-Sep-2024| -||1.2 Programa ejemplo mobius|13-Oct-2024| -||1.3 Programa ejemplo klein|20-Oct-2024| - - -## Problemas -OpenGL esperan objetos tridimensionales, no de n dimensiones. - -Usando glVertexAttribPointer podemos pasar las coordenadas que -queramos de los puntos de las variedades, y con ello usar objetos 3D en -el shader. - -## Rotar ejes por pares en una animacion continua. -* Con glVertexAttribPointer podemos pasar las coordenadas del eje -seleccionado, al shader. -* Con la funcion mix del shader y bloqueando el input, podemos hacer -una animacion pasando una variable con la cpu. -* Cuando la animacion termine intercambiar los indices del layout, -usando glVertexAttribPointer otra vez. - -## Volumen de la variedad. -Dado que la funcion parametrizadora es continua, mandamos la frontera -de un n-cubo a la frontera de una variedad, por lo que solo basta -graficar la frontera de la variedad. - diff --git a/doc/es/dev/estructura-archivos.md b/doc/es/dev/estructura-archivos.md new file mode 100644 index 0000000..ffd0e1a --- /dev/null +++ b/doc/es/dev/estructura-archivos.md @@ -0,0 +1,50 @@ +# Estructura de archivos +Díaz Camacho Pedro Emilio + +# Headers +## main.h +Este archivo incluye los prototipos internos que va a usar el programa +funge como api interna para los desarrolladores y debe estar bien documentada. + +# Datos +## data/cube.h +## data/axis.h +## data/shaders.h + +# codigo fuente +## main.c +Este archivo inclye la función principal, debe inicializar, ejecutar, y terminar el programa correctamente, +así como avisar de los errores cuando aparezcan. +## color.c +Incluye las funciones para escoger y pintar el color de fondo. +### Depende de +- +## input.c +Incluye el código necesario para interactuar con el program +### Depende de +- +- +## matrix.c +Debe cargar en la gpu las matrices que use el programa. +### Depende de +- +- +- +## mesh.c +Debe crear, destruir y dibujar los mesh, que son la representación de objetos tridimensionales. +### Depende de +- +- +## shader.c +Debe crear, destruir y usar los shaders, que son programas para la gpu, así como tener funciones +para cargar estructuras a la gpu. +### Depende de +- +## texture.c +Debe cargar, usar, destruir las texturas, también crea una textura para una paleta de colores. +### Depende de +- +## window.c +Crea, usa, y cierra una ventana, también avisa cuando la ventana está abierta. +### Depende de +- diff --git a/doc/es/tech/diseno.md b/doc/es/tech/diseno.md new file mode 100644 index 0000000..21aa525 --- /dev/null +++ b/doc/es/tech/diseno.md @@ -0,0 +1,121 @@ +# Manual de Diseño +Diaz Camacho Pedro Emilio + +# Resumen +manigraph es un graficador de variedades que lee archivos binarios con un forma +to espacial, este viene con un manual explicando como correr el programa, como +interactuar con el programa y las especificaciones del archivo binario. + +# Tecnologias +## Lenguajes: +- C89 +## Librerias: +- OpenGL +- GLFW +- cglm + +# Archivos +- Ejecutable. +- Ejemplo. + - Una libreria tipo STB, con las funciones para hacer variedades con una + funcion parametrizadora. + - LA PARAMETRIZACION DEBE SER CONTINUA. + - El codigo fuente de un programa que cree la variedad de una botella + de klein usando esta libreria. +- Manual + - Explicando como correr el programa desde la terminal. + - Explicando como interactuar con el programa con el teclado y mouse. + - Explicando el formato binario de las variedaedes. + - Explicando la libreria STB. + +# Objetivos +## Prioridad alta +- [] El programa debe actualizarse cuando interactuan con el. +- [] El usuario quiere: + - [X] Ver 3 ejes en todo momento. + - [] Ver que ejes esta viendo. + - [] Ver cuantos ejes hay. +- [X] El usuario quiere: + - [X] Rotar estos ejes, + - [X] Ver donde quedan los ejes despues de la rotados. +- [] El usuario experimentado quiere ejecutar el programa y pasar la variedad: + - [] Como argumento del programa. + - [] Desde la entrada standar del programa. + +## Prioridad media + +- [] El usuario quiere: + - [] Cambiar los ejes que se ven por pares. + - [] Cambiar los ejes donde esta la informacion de los ejes. +- [] El usuario quiere interactuar con el programa: + - [] Usando solo el mouse. + - [] Usando solo el teclado. + +## Prioridad baja +- [] El usuario quiere guardar las transformaciones como un archivo GIF. + +# Camino + +0. Graficadora de un cubo. + 1. Se hace un programa que muestre un cubo. + 1. Se muestran los 3 ejes del cubo + 1. Se rota el cubo en sus 3 ejes usando el teclado. + 1. Se rota el cubo en sus 3 ejes usando el mouse. + 1. Se muestran la etiqueta de los ejes. + 1. Se hace el formato de objetos multidimensionales. +0. Programa ejemplo + 1. Se hace un programa que divida un cuadrado en triangulos. + 1. Se mapea cada vertice del triangulo en un punto de la cinta de + mobius usando una parametrizacion + 1. Se mapea cada vertice del triangulo en un punto de la botella de + klein usando una parametrizacion + 1. Se divide cada lado de un cubo de n dimensiones, en triangulos. + +0. Graficadora de variedades + 1. Se generaliza el programa para usar este formato. + 1. Se muestran la informacion de los ejes mostrados y cuantos hay. + 1. Se pueden cambiar los ejes por pares + 1. Usando el mouse. + 1. Usando el teclado. +0. Detalles. + 0. Se anima el cambio de eje. + 0. Se hace el generador de GIF. + 0. Se puede cambiar el shader + 0. Documentacion + +# Cronograma + +| Persona | Ver | Objetivo| Fecha| +|.........|....|..........|......| +|Alan ||Familiarizarse con el codigo| 15-Sep-2024| +||3.1| Sombreado |17-Nov-2024| +|...|...|...|...| +|Francisco||Familiarizarse con el codigo|15-Sep-2024| +||0.4| Seleccionar ejes con el mouse|29-Sep-2024| +||0.4|Rotar ejes con el scroll del mouse| 13-Oct-2024| +|...|...|...|...| +|Roberto||Familiarizarse con el codigo|15-Sep-2024| +||1.2 Programa ejemplo mobius|13-Oct-2024| +||1.3 Programa ejemplo klein|20-Oct-2024| + + +## Problemas +OpenGL esperan objetos tridimensionales, no de n dimensiones. + +Usando glVertexAttribPointer podemos pasar las coordenadas que +queramos de los puntos de las variedades, y con ello usar objetos 3D en +el shader. + +## Rotar ejes por pares en una animacion continua. +- Con glVertexAttribPointer podemos pasar las coordenadas del eje +seleccionado, al shader. +- Con la funcion mix del shader y bloqueando el input, podemos hacer +una animacion pasando una variable con la cpu. +- Cuando la animacion termine intercambiar los indices del layout, +usando glVertexAttribPointer otra vez. + +## Volumen de la variedad. +Dado que la funcion parametrizadora es continua, mandamos la frontera +de un n-cubo a la frontera de una variedad, por lo que solo basta +graficar la frontera de la variedad. +