diff --git a/README.md b/README.md new file mode 100644 index 0000000..4d6541c --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +# Manigraph: Graficadora de variedades +Diaz Camacho Pedro Emilio + +# Resumen +manigraph es un graficador de variedades que lee archivos binarios, con la información de +una variedad y grafica esta variedad en una proyección tridimensional, se puede +interactuar con el programa usando el teclado o mouse. + +# Tecnologias +## Lenguajes de programación +- C89 +## Librerias +- OpenGL +- GLFW +- cglm + +# Compilación +Para compilar basta usar ´make´ pero también se pueden usar los siguientes comandos. +## Linux +´´´ +cc -fPIC -shared -D_GLFW_X11 -D_GLFW_BUILD_DLL ./ext/glfw/src/*.c -o libglfw.so +cc -L. -lglfw -lGL -I ext/cglm/include/ -I ext/glfw/include/ src/*.c -o manigraph +´´´ + +# Ejecutar +Para ejecutar el programa antes de instalarse base usar ´make run´, sin embargo también se puede usar lo siguiente +## Linux +´´´ +LD_LIBRARY_PATH=. ./manigraph +´´´ diff --git a/doc/es/tech/diseno.md b/doc/es/tech/diseno.md index 21aa525..57becd8 100644 --- a/doc/es/tech/diseno.md +++ b/doc/es/tech/diseno.md @@ -1,58 +1,31 @@ # 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: +- [ ] 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. + - [ ] 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. +- [ ] 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: + - [ ] 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. + - [ ] Usando solo el mouse. + - [ ] Usando solo el teclado. ## Prioridad baja -- [] El usuario quiere guardar las transformaciones como un archivo GIF. +- [ ] El usuario quiere guardar las transformaciones como un archivo GIF. # Camino @@ -78,10 +51,10 @@ interactuar con el programa y las especificaciones del archivo binario. 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 + 1. Se anima el cambio de eje. + 1. Se hace el generador de GIF. + 1. Se puede cambiar el shader + 1. Documentacion # Cronograma @@ -98,24 +71,3 @@ interactuar con el programa y las especificaciones del archivo binario. ||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/tech/problemas.md b/doc/es/tech/problemas.md new file mode 100644 index 0000000..e449956 --- /dev/null +++ b/doc/es/tech/problemas.md @@ -0,0 +1,22 @@ +# Problemas esperados al desarrollar +Diaz Camacho Pedro Emilio + +## 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. +