Simulador de Buceo

Experiencia interactiva

Visualiza la teoría del buceo
en un entorno 3D

Este simulador te ayuda a comprender cómo la profundidad, el tiempo y el gas respirado influyen en conceptos clave como NDL, carga de nitrógeno, consumo de aire y exposición al oxígeno. Está diseñado para educación y conciencia, no para planificar inmersiones reales.

Qué hace este simulador

Durante la inmersión virtual, el sistema actualiza en tiempo real los indicadores principales: NDL, carga de nitrógeno, consumo de aire, presión parcial de oxígeno (PPO₂) y exposición CNS. Además registra un perfil de profundidad para generar un reporte final.

Experiencia 3D controlable

Movimiento y cámara con controles adaptados a móvil, tablet y PC.

  • Joystick de movimiento
  • Joystick de mirada/rotación
  • Zona neutral para estabilidad

Indicadores en HUD

Instrumentos visuales en pantalla para comprensión inmediata.

  • Tanque: bar / PSI / porcentaje
  • Barra de nitrógeno (educativa)
  • NDL y estado de ascenso

Reporte completo

Resumen de la inmersión para aprendizaje y análisis.

  • Profundidad máxima
  • Tiempo total
  • NDL total y restante
  • Ceiling (profundidad mínima segura)

Modelos y conceptos representados

El simulador implementa modelos fisiológicos y reglas educativas habituales en el buceo recreativo: absorción y liberación de nitrógeno por tejidos, límites sin descompresión, y exposición al oxígeno.

Modelo de tejidos (16 compartimentos)

Simula la carga de nitrógeno en distintos tejidos con velocidades diferentes, permitiendo estimar saturación, “ceiling” y el comportamiento en inmersiones repetitivas.

Carga baja Carga media Carga alta
Exposición al oxígeno (PPO₂ / CNS)

Calcula PPO₂ según profundidad y fracción de oxígeno (FO₂), y acumula exposición CNS con un modelo de límites por PPO₂. Incluye niveles de alerta (OK / WARNING / DANGER).

OK WARNING DANGER

NDL (No Decompression Limit)

Calcula un NDL “recreativo” basado en profundidad y tiempo, con soporte para Nitrox (EAD).

  • NDL total permitido
  • NDL restante según el perfil
  • Interpretación educativa del riesgo

Ceiling y ascenso

Estima una profundidad mínima segura (ceiling) y evalúa si el ascenso puede hacerse sin paradas.

  • Ceiling en metros
  • Detección de “stop requerido”
  • Recomendación de parada de seguridad

Inmersiones repetitivas

Mantiene carga residual entre inmersiones y simula intervalos en superficie.

  • Tejidos se conservan entre inmersiones
  • Intervalo en superficie reduce carga
  • Aprendizaje de acumulación residual

Instrumentos y visualización (HUD)

Para facilitar la comprensión, el simulador muestra instrumentos visuales en pantalla durante la inmersión. Su propósito es que el usuario “vea” cómo cambian los conceptos con su comportamiento.

Tanque de aire (AL80)

Simula consumo según SAC, presión ambiente y tiempo simulado.

  • Presión en bar y PSI
  • Porcentaje restante
  • Alerta de reserva (ej. 35 bar)
  • Estado “sin aire” (out of air)

Barra de nitrógeno

Visualización educativa del aumento/disminución de carga.

  • Suavizado visual (carga lenta / descarga normal)
  • Colores por nivel (verde→rojo)
  • Enfoque didáctico, fácil de interpretar

NDL y estado del ascenso

Indicadores para comprender límites sin descompresión y hábitos de ascenso.

  • NDL restante
  • Recomendación de parada de seguridad
  • Ceiling (si aplica)
Escala de tiempo (1×, 2×, 5×, 10×)

Puedes acelerar la simulación para observar más rápido cómo cambian los valores. Esta función es útil para educación: muestra la tendencia de los indicadores sin tener que esperar largos periodos.

Safety Stop (Parada de seguridad recreativa)

Este módulo simula la parada de seguridad a 5 metros en buceo recreativo. Su lógica está basada en control de tiempo real escalado, tolerancia de profundidad y detección de interrupciones o redescensos para validar o invalidar la parada.

Recomendación de parada

La parada se recomienda automáticamente según el perfil de inmersión.

  • Se activa si la profundidad máxima supera 10 m
  • Se desactiva si existe deco activa o requerida
  • Estado: recommended → activa el safety stop
  • Callback opcional de notificación al usuario

Lógica de ejecución

El sistema controla el tiempo en la zona de 5 metros con tolerancia y escalado temporal.

  • Zona de parada: 5 m ± 2 m
  • Zona de pausa: 5 m - 3 m (sin progreso)
  • Acumulación de tiempo en segundos simulados
  • Escalado por velocidad de simulación (GET_TIME_SCALE)
  • Completado tras 180 segundos efectivos
  • Pausa automática al salir de la zona

Interrupciones y redescenso

Detecta si el buceador abandona la parada o vuelve a profundidad tras completarla.

  • Salida de zona invalida la progresión
  • Estado cancelled activa reinicio de seguimiento
  • Marca interrupción si se rompe la lógica
  • Redescenso > 6 m reanuda recomendación
  • Ventana de 30 s para invalidación post-completado
Control de tiempo en parada

El tiempo se calcula en tiempo real simulado, acumulando solo cuando el buceador permanece dentro del rango correcto. Si abandona la zona, el contador se pausa. Si completa los 3 minutos efectivos, la parada se marca como completada. Sin embargo, un redescenso posterior puede invalidarla bajo ciertas condiciones fisiológicas.

Barra de carga de nitrógeno (UI educativa)

Este módulo visualiza en tiempo real la carga de nitrógeno en los tejidos rápidos del buceador. Su objetivo es educativo: mostrar cómo evoluciona la saturación relativa durante la inmersión mediante una barra de progreso suavizada y codificada por colores.

Carga de nitrógeno 65%
GF: 0.75

Visualización de la carga de N₂

Representa de forma simplificada el nivel de saturación de nitrógeno en tejidos rápidos.

  • Basado en tejidos rápidos del modelo fisiológico
  • Valor expresado en porcentaje (0–130%)
  • Suavizado visual para evitar saltos bruscos
  • Actualización en tiempo real durante la inmersión

Código de colores

La barra cambia de color según el nivel de carga para facilitar la interpretación rápida.

  • Verde: carga baja y estable (< 60%)
  • Amarillo: zona de atención (60%–85%)
  • Naranja: carga alta (85%–100%)
  • Rojo: sobresaturación potencial (> 100%)

Lógica de suavizado y estabilidad

El valor visual no cambia instantáneamente, sino que se aproxima progresivamente al valor real.

  • Interpolación progresiva (ease-in / ease-out)
  • Respuesta más lenta al aumento que a la disminución
  • Prevención de flickering visual
  • Clamp de valores entre 0% y 130%
Información secundaria (GF / estado fisiológico)

La barra puede incluir texto adicional (como Gradient Factor o estado fisiológico del modelo). Esto permite correlacionar visualmente la saturación de nitrógeno con el estado de descompresión, ofreciendo una representación más intuitiva del riesgo acumulado.

Consumo de aire (AL80 multi-tanque)

Este módulo simula el consumo real de gas en tiempo dinámico utilizando SAC (Surface Air Consumption), presión ambiente y escala de tiempo. Soporta configuraciones de uno o múltiples tanques y calcula el agotamiento progresivo del sistema completo.

Modelo de consumo

El consumo se basa en el SAC del buceador ajustado por la presión ambiente y el tiempo simulado.

  • SAC configurable por usuario
  • Presión ambiente = 1 + profundidad/10
  • Escalado por GET_TIME_SCALE()
  • Consumo proporcional por tanque

Sistema multi-tanque

El sistema distribuye el consumo entre todos los tanques activos del equipo.

  • Tanque base AL80 (2265 L)
  • Soporte para múltiples tanques
  • Consumo dividido entre tanques activos
  • Estado global OUT OF AIR

Visualización HUD

Cada tanque se representa con una barra vertical de nivel y lectura de presión en bar y PSI.

AL80 #1
207 bar
3000 psi
AL80 #2
207 bar
3000 psi
  • Nivel visual por porcentaje de volumen
  • Conversión bar / PSI en tiempo real
  • Color según reserva (verde → naranja → rojo)
  • Alerta por debajo de 35 bar
Estado del sistema de aire

El sistema calcula el volumen total restante sumando todos los tanques activos. El consumo se actualiza en cada frame simulado y permite detectar el punto de reserva o la condición crítica de “sin aire”. El modelo refleja tanto consumo individual como global.

Toxicidad por oxígeno (NOAA CNS)

Este módulo evalúa el riesgo de toxicidad por oxígeno usando PPO₂ y CNS acumulado. El estado se representa mediante niveles de riesgo fisiológico tipo ordenador de buceo.

Presión parcial de oxígeno (PPO₂)

Determina el riesgo inmediato de toxicidad aguda.

  • PPO₂ = FO₂ × presión ambiente
  • Límite operativo: 1.4 bar
  • Crítico: ≥ 1.6 bar

CNS (Sistema nervioso central)

Acumulación progresiva de exposición al oxígeno según modelo NOAA.

  • Modelo NOAA de exposición
  • Incremento progresivo por tiempo
  • 100% = límite recomendado

Estado de toxicidad

Evaluación combinada de PPO₂ y CNS en tiempo real.

OK
WARNING
DANGER
  • OK: exposición dentro de límites seguros
  • WARNING: zona de precaución
  • DANGER: riesgo de toxicidad aguda
Modelo de riesgo de oxígeno

El sistema combina toxicidad aguda (PPO₂) y toxicidad acumulativa (CNS). El estado mostrado refleja el nivel de riesgo dominante en cada momento de la inmersión, similar a un ordenador de buceo técnico real.

Lógica del motor de descompresión (Bühlmann + GF)

Este módulo calcula en tiempo real el plan de descompresión del buceador simulando la saturación de tejidos con nitrógeno, generando paradas obligatorias y ajustando el perfil de ascenso según el estado fisiológico y el gradiente de seguridad (GF). Además, mantiene un historial persistente para no perder progreso entre regeneraciones del plan.

Generación del plan de descompresión

El sistema construye un perfil de paradas basado en el modelo Bühlmann con Gradient Factors.

  • Cálculo del ceiling con GF line (límite de ascenso seguro)
  • Redondeo a escalones de parada (STOP_STEP_M)
  • Simulación de carga de tejidos por parada
  • Finaliza cuando el ceiling baja de 3 m (STOP_REQUIRED_M)
  • Modo preview sin afectar historial real

Historial y persistencia de paradas

El sistema guarda el progreso de cada parada para evitar pérdidas de estado durante regeneraciones.

  • decoHistory almacena progreso por profundidad
  • Hydratación de paradas desde historial
  • Preserva tiempo realizado (timePerformedSec)
  • Evita reinicios de paradas ya iniciadas
  • Fusión entre plan nuevo y estado previo

Actualización en tiempo real

El motor recalcula continuamente el estado de descompresión según profundidad, tiempo simulado y tejidos.

  • Control de parada actual con tolerancia de profundidad
  • Bloqueo de orden (no saltar paradas anteriores)
  • Regeneración si el perfil empeora o mejora
  • Acumulación de tiempo por dtSimSec
  • Auto-completado al 95% de cumplimiento
  • Cálculo dinámico del TTS (ascenso + paradas)
Tiempo total de ascenso (TTS)

El TTS se calcula combinando el tiempo de ascenso tramo a tramo (según velocidad de subida) más el tiempo restante en paradas de descompresión activas. El resultado se ajusta continuamente en función del estado real de los tejidos y del plan vigente.

Uso responsable y aviso importante

Este proyecto es una herramienta educativa e ilustrativa. El buceo real requiere formación, equipo certificado y supervisión profesional.

Preguntas frecuentes

¿Esto es un planificador de buceo?

No. Es una herramienta de aprendizaje visual. No debe usarse para planificar inmersiones reales.

¿Qué gases contempla?

Se contempla aire y Nitrox mediante fracción de oxígeno (FO₂), afectando NDL, nitrógeno y PPO₂/CNS.

¿Funciona en móvil?

Sí. Los controles se adaptan con joysticks y manejo por eventos de puntero (pointer events).

Our Team

Gonzalo Incera Suarez

Instructor de Buceo | Técnico en Software

Imane Ait Ali

Dive Master | Auditora de algoritmos

Paulina Lamuño Encorrada

Dive Master | Diseño UI - CSS

Jonas Miller Hernandez

Ingeniería en Software