Sobre el proyecto

Graphics Foundations es un recurso de aprendizaje autónomo y organizado por temas para los fundamentos de los gráficos por computadora, que cubre las matemáticas, el pipeline de renderizado y los algoritmos detrás de las imágenes en tiempo real y trazadas por rayos. Surgió de seis trimestres de secciones de discusión para CS 174A de UCLA (Introduction to Computer Graphics, 2019–2021) y ha sido reescrito como un recurso independiente; el autor indica que no es material oficial del curso. Estructura y contenido El material está organizado como una ruta de aprendizaje de 13 capítulos (numerados del 0 al 12), pensados para leerse en orden. Cada capítulo indica qué se aprenderá, lo explica con figuras, enlaza a una demostración y termina con preguntas de autoevaluación y respuestas ocultas. - Capítulo 0: configuración y JavaScript para gráficos (herramientas, módulos, clases, clausuras, arreglos tipados, el bucle de frames) - Capítulo 1: el pipeline de renderizado y GLSL (shaders de vértices y fragmentos, rasterización, espacio de clip) - Capítulo 2: puntos, vectores y sistemas de coordenadas (espacios afines, coordenadas homogéneas y baricéntricas, producto punto y producto cruz) - Capítulo 3: modelado de formas con triángulos (discretización, mallas indexadas, tiras, winding, normales planas vs. suaves) - Capítulo 4: transformaciones (traslación, rotación, escala, corte, reflexión; orden; jerarquías; animación) - Capítulo 5: cambio de base (marcos, conversión de coordenadas, la cámara como marco) - Capítulo 6: visión y proyección (look-at, derivaciones ortográfica y en perspectiva, recorte, z-buffer) - Capítulo 7: iluminación y sombreado (Phong y Blinn–Phong, tipos de luces, sombreado plano/Gouraud/Phong, matriz de normales) - Capítulo 8: mapeo de texturas (mapeo uv, filtrado, mipmaps, interpolación con corrección de perspectiva, bump/normal/displacement) - Capítulo 9: detección de colisiones (volúmenes de contención, teorema del eje separador, fase amplia, paso de tiempo) - Capítulo 10: sombras, espejos y transparencia (shadow mapping, espejos planos, alpha blending, alfa premultiplicado) - Capítulo 11: trazado de rayos (generación de rayos, intersecciones, rayos recursivos, árboles de rayos, aceleración) - Capítulo 12: creación de un proyecto interactivo de gráficos (planificación, temporización y máquinas de estados, partículas, skyboxes, picking, composición, color) Dos conjuntos de prácticas acompañan a los apuntes: Problems I (fundamentos, transformaciones, visión) y Problems II (iluminación, texturas, colisiones, trazado de rayos), cada uno con soluciones completas desarrolladas. Los requisitos previos son programación en cualquier lenguaje y álgebra lineal al nivel de vectores, matrices, producto punto y producto cruz; el Capítulo 0 cubre el JavaScript necesario. Demostraciones Siete demostraciones interactivas para navegador acompañan a los capítulos y están enlazadas desde un sitio publicado mediante GitHub Pages: hello triangle (WebGL puro), transformaciones, cámara y proyección, iluminación y sombreado, mapeo de texturas, trazado de rayos y volúmenes de contención. Las demostraciones 02–07 están construidas sobre TinyGraphics.js, una pequeña biblioteca didáctica de Garett Ridge, cargada desde su copia publicada en lugar de estar integrada en el repositorio. Las demostraciones están pensadas para un navegador de escritorio con WebGL 2. Se incluye un script de servidor local (node tools/serve.mjs), con una opción para desarrollar contra un clon local de TinyGraphics.js. Estructura del repositorio y comprobaciones de calidad El repositorio está organizado en notes/, exercises/, figures/ (figuras SVG generadas por tools/figures.py), demos/ (un archivo HTML por demostración más ayudantes compartidos) y tools/. En particular, los apuntes se prueban como código: los scripts recalculan cada número desarrollado en los apuntes y ejercicios, comprueban enlaces, anclas, originalidad de las figuras y ausencia de logística del curso, cargan cada demostración en Chromium sin interfaz mientras pulsan cada control y toman capturas de pantalla, y auditan cómo se renderizan las matemáticas en github.com. Un script fix_math.py reescribe construcciones de LaTeX (como \mathbf, \boxed, \tag, \operatorname) que se renderizan incorrectamente como MathML nativo en GitHub. La comprobación de demostraciones requiere un Chromium local con WebGL 2 y escribe capturas de pantalla para revisión humana. Créditos y licencia Los apuntes comenzaron como material de secciones de discusión para CS 174A de UCLA, en apoyo de los cursos impartidos por el Prof. Asish Law y el Prof. Demetri Terzopoulos; la elección y el orden de los temas siguen esos cursos. No se incluyen diapositivas de clase, figuras de libros de texto ni tareas. Los materiales semanales originales de discusión siguen disponibles en una etiqueta de archivo y en repositorios por trimestre. Los apuntes, ejercicios, figuras y demostraciones son © Yunqi Guo y están bajo licencia CC BY-NC-ND 4.0: se permite leer, estudiar y compartir copias sin modificar con fines no comerciales y con atribución, mientras que no se permite distribuir versiones modificadas ni el uso comercial. TinyGraphics.js es un proyecto separado con sus propios términos.