Método, dependencias y licencias
Qué decisiones pedagógicas y técnicas hay detrás de la aplicación, qué bibliotecas se usan realmente, cuáles se evaluaron y se descartaron, y cómo se tratan tus datos. Los datos de repositorios que aparecen aquí se consultaron el 27 de octubre de 2026.
Cómo enseña esta ruta
El material está pensado para estudiantes de secundaria que preparan exámenes de admisión exigentes, en particular el tipo de pregunta de la UNI. Eso impone tres reglas.
1. Ninguna fórmula antes de la imagen
Cada lección abre con una situación concreta (una hoja, una cuerda, una piscina, un lápiz apoyado) y solo después formaliza. Las figuras 3D están ahí para que la definición no llegue en el vacío: puedes girar el sólido, aislar una capa y comprobar con tus ojos lo que dice el teorema.
2. Todo teorema lleva su justificación
No se enuncian resultados «porque sí». Los axiomas de incidencia, el criterio recta-plano, el teorema de las tres perpendiculares y la relación de Euler aparecen con su demostración o con un argumento honesto de por qué no se demuestran (los axiomas). La diferencia entre ambos casos se marca explícitamente.
3. Los errores son contenido, no anécdotas
Cada lección tiene una sección de errores frecuentes con tres columnas: el error típico, la forma correcta y el motivo por el que el error falla. Confundir la altura con la arista lateral en un prisma oblicuo no es un descuido: es un error conceptual con consecuencias numéricas grandes, y por eso se explica.
Sobre la verificación de las respuestas
Todas las fórmulas y los cálculos de los ejercicios se comprobaron por una segunda vía (por ejemplo, calcular el volumen de un tetraedro con la fórmula del tetraedro trirrectángulo y de nuevo con base × altura). La página Autocomprobaciones ejecuta estas comprobaciones en tu navegador y muestra el resultado: no es una afirmación, es una prueba reproducible.
Los distractores de las preguntas de opción múltiple corresponden a errores reales (olvidar el factor 1/3, usar el diámetro como radio, sumar dos bases en una pirámide), no a números aleatorios. Cuando se usa una aproximación se indica el número de decimales y la tolerancia aceptada.
Dependencias realmente integradas
Solo hay una biblioteca de terceros integrada en la aplicación. Todo lo demás es código propio de este repositorio. Los datos de cada repositorio se consultaron en la API pública de GitHub y en el registro de npm el 27 de octubre de 2026.
| Dependencia | Repositorio oficial | Licencia | Estrellas | Último push | Función concreta aquí |
|---|---|---|---|---|---|
| three.js integrada v0.186.1 (npm latest) |
mrdoob/three.js | MIT | 117 008 | 2026-10-26 | Render WebGL de las figuras geométricas. Se sirve desde vendor/three.min.js y vendor/three.module.min.js en este repositorio, sin dependencias externas ni CDN en tiempo de ejecución. Permite abrir el proyecto tanto en servidor como localmente haciendo doble clic en el archivo HTML. |
| Google Fonts integrada | fonts.google.com | SIL Open Font License 1.1 | — | — | Tipografías Outfit (interfaz), Newsreader (variables matemáticas en cursiva) y JetBrains Mono (fórmulas y cifras). Si la red las bloquea, el sistema recurre a fuentes del propio dispositivo y la página sigue siendo legible. |
Sin CDN en tiempo de ejecución para el 3D. Three.js está copiado dentro del repositorio. Es una decisión deliberada: evita que un bloqueo de red, una política escolar restrictiva o una caída de CDN deje sin figuras al estudiante.
Herramientas evaluadas y no utilizadas
Estas opciones se consideraron antes de elegir la ruta 3D principal. Se documentan para que la decisión sea auditable, no para insinuar que sean peores: simplemente no encajan con un sitio estático sin proceso de compilación.
| Herramienta | Repositorio oficial | Licencia | Estrellas | Último push | Decisión y motivo |
|---|---|---|---|---|---|
| React Three Fiber | pmndrs/react-three-fiber | MIT | 33 264 | 2026-10-21 | No integrada Excelente envoltorio declarativo, pero exige React y un paso de compilación. Este proyecto es HTML, CSS y JavaScript servidos tal cual desde el repositorio. |
| Babylon.js | BabylonJS/Babylon.js | Apache-2.0 | 26 235 | 2026-10-27 | No integrada Motor completo y muy activo. Se descartó por tamaño: para seis figuras pedagógicas el peso adicional no se justifica frente a Three.js. |
| three-vrm | pixiv/three-vrm | MIT | 2 237 | 2026-10-22 | No integrada Permitiría cargar un avatar VRM con esqueleto. No se usó porque no hay un modelo VRM original con derechos claros disponible en este proyecto, y no se quería incluir un recurso de procedencia dudosa. |
| Formato glTF / GLB | KhronosGroup/glTF | Especificación Khronos (términos propios) | 7 870 | 2026-10-26 | No usado Sería el formato natural para un avatar con rig. Al no haber modelo propio, la guía se implementó como SVG animado por CSS y las figuras se generan por código, sin archivos binarios externos. |
Una única ruta 3D principal, con alternativa honesta
La ruta 3D principal es Three.js cargado como módulo ES desde el propio
repositorio. La escena se construye a partir de un objeto de especificación
geométrica (js/figuras.js) que declara vértices, aristas, caras, líneas
auxiliares y capas.
La misma especificación alimenta la alternativa 2D en SVG
(js/visor2d.js), que proyecta con la misma cámara y aplica un algoritmo de
líneas ocultas por sondeo. Esto tiene tres consecuencias prácticas:
- Si WebGL no está disponible o el módulo no carga, la figura aparece igual, en SVG, sin mensajes de error visibles.
- Nunca puede ocurrir que el 3D y el 2D muestren cosas distintas: son la misma especificación.
- La vista 2D no descarga nada, funciona con el procesador más modesto y respeta la preferencia de movimiento reducido.
El visor se carga de forma diferida (import()) y solo cuando hay una figura en
pantalla. Además, cada figura pausa su bucle de render cuando sale del área visible, y en
equipos con dos núcleos o menos se abre directamente en 2D. El botón
Vista 2D / Vista 3D está en cada figura, y la elección se recuerda.
Qué se puede hacer con las figuras
- Rotar con arrastre (ratón o dedo), zoom con rueda o pellizco.
- Rotar con las flechas del teclado cuando el lienzo tiene el foco; R recentra.
- Mostrar y ocultar capas: caras, aristas, vértices, nombres, diagonales, alturas, radios, planos y secciones.
- Lectura de la descripción textual de cada figura, disponible para lectores de pantalla.
La guía: Vértiz y el Modo Maestro
Vértiz es un personaje original, dibujado como SVG vectorial dentro de este repositorio. No reproduce ni se inspira en un personaje o marca existente. Su diseño usa la propia paleta de la aplicación y un prendedor triangular en el cabello como guiño al tema.
Locución y Modo Maestro: Vértiz ahora cuenta con síntesis de voz en español nativa (mediante la Web Speech API del navegador), lo que le permite explicar en voz alta los teoremas, figuras y pasos didácticos. Puedes silenciarlo en cualquier momento con el botón de volumen si el maestro prefiere dar la explicación con su propia voz.
Qué hace y qué no hace: Cambia de postura y de mensaje según el momento pedagógico: señala cuando introduce una figura, explica con movimiento labial, celebra un acierto, anima tras un error y piensa cuando pides una pista. En el Modo Maestro, coordina cada paso de la lección con la cámara 3D y el encendido de capas.
Con movimiento reducido activado (por preferencia del sistema o por el botón de la cabecera), las animaciones del avatar, el giro automático de las figuras y las transiciones se detienen por completo, manteniendo el texto y la explicación accesibles.
Accesibilidad y diseño adaptable
- Estructura semántica:
header,nav,main,section,article,figure,figcaption,footer, con jerarquía de encabezados correcta. - Enlace de salto al contenido y foco visible en todos los elementos interactivos.
- Ejercicios construidos con
role="radiogroup"y etiquetas reales; la retroalimentación se anuncia conrole="status". - Cada figura 3D oculta su
canvasa las tecnologías de asistencia y expone una descripción textual completa; la versión 2D usarole="img"conaria-labely untitleinterno. - Contraste comprobado en texto principal, secundario y en los bloques de fórmula oscuros.
- Navegación por teclado: menús, acordeones de módulos, capas de figuras, opciones de ejercicio y fases de los retos se manejan con Tab y Enter/Espacio.
- Diseño fluido de 320 px a pantallas grandes; probado en móvil, tableta y escritorio.
- Hoja de estilos de impresión: las figuras se imprimen y los controles no.
Tus datos
El progreso se guarda exclusivamente en el almacenamiento local de tu navegador, en dos
claves: geo3d.progreso.v1 (lecciones, ejercicios, retos y puntos) y
geo3d.prefs.v1 (preferencias de movimiento y de vista de las figuras). No hay
cuentas, no hay servidor propio, no hay cookies de seguimiento ni analítica.
Como vive en tu dispositivo, se pierde si borras los datos del navegador o si usas otro equipo. Puedes descargar una copia en texto antes de limpiar nada.
Estado del almacenamiento
Comprobando…
Resumen de tu avance
—
La copia es solo de lectura: esta página nunca borra ni modifica tu avance.
Esta aplicación no borra tu progreso. Si en el futuro añades funciones que cambien el formato de los datos, la migración será explícita y conservará los registros existentes. Si alguna vez ves el avance vacío, comprueba si estás en otro navegador, en una ventana privada o si los datos del sitio se borraron.
Alcance y limitaciones declaradas
- La lección «completa» es la del módulo 6 (prismas y diagonales): es la más desarrollada, con 8 ejercicios y 2 retos. El resto de módulos son lecciones sólidas, no monografías.
- El avatar es una animación vectorial, no un rig 3D con esqueleto. Está indicado en esta página y no se presenta como otra cosa.
- No hay figuras con texturas ni modelos GLB: todas se generan por código, lo que mantiene el repositorio sin binarios y sin dudas de licencia sobre recursos externos.
- No hay exámenes oficiales de la UNI reproducidos: los retos son de dificultad comparable, redactados para este proyecto.
- El sitio es estático: se puede alojar en cualquier servidor de archivos, incluido GitHub Pages. La vista 3D requiere WebGL; la 2D funciona en cualquier navegador con SVG.