Simulación de un tiro balístico parabólico

Explicación de una simulación interactiva de un tiro parabólico usando HTML y JavaScript con cálculos físicos para visualizar la trayectoria de un proyectil.

simulacion-tiro-balistico-parabolico

Vamos a implementar una simulación interactiva de un tiro balístico parabólico usando el elemento <canvas> con JavaScript. Representaremos visualmente la trayectoria de un proyectil influido por la gravedad. La idea es mostrar cómo se pueden combinar conceptos físicos básicos y ver como se puede montar esta visualización con tecnología web.

Descripción general del código

Puedes ver todo el código al final del artículo, está comentado y es entendible pero algo extenso, por eso trataremos de explicarlo a grandes rasgos. El código se organiza en tres grandes grupos de funcionalidades:

Estructura y elementos visuales:

Definimos un elemento <canvas> con dimensiones específicas que actúa como área de dibujo y un bloque de información (<div>) para mostrar parámetros como ángulo, velocidad inicial, tiempo transcurrido, altura, distancia y la altura máxima alcanzada. Estos elementos permiten al usuario observar cómo se modifican los valores conforme avanza la simulación.

<canvas id="canvas" width="800" height="600"></canvas>
<div id="info">
<p>Angle: <span id="angle">0</span> degrees</p>
<p>Initial Velocity: <span id="v0">0</span> m/s</p>
<p>Time: <span id="time">0</span> s</p>
<p>Height: <span id="height">0</span> m</p>
<p>Distance: <span id="distance">0</span> m</p>
<p>Max Height: <span id="max_height">0</span> m</p>
</div>

Dibujo y configuración del entorno

Se establece un sistema de coordenadas personalizado, ubicando el origen en la parte inferior izquierda del lienzo para emular un entorno similar a un plano cartesiano. Con funciones dedicadas dibujamos:

  • Los ejes y las líneas de cuadrícula, facilitando la interpretación de distancias y alturas.
  • Una flecha de dirección que representa, mediante su inclinación y longitud, el ángulo y la magnitud de la velocidad inicial. Además, se dibuja un arco y una etiqueta para indicar el valor del ángulo.
  • La trayectoria del proyectil, utilizando líneas continuas o discontinuas para mostrar el recorrido real y una vista previa calculada antes del disparo.

Cálculos, animación e interactividad

El comportamiento del proyectil se basa en fórmulas clásicas del tiro parabólico. Se calculan las componentes horizontal y vertical de la velocidad y, en función del tiempo, se actualizan la posición y la altura. Para animar la simulación se usa la función requestAnimationFrame, que refresca la escena en cada fotograma y acumula los puntos del recorrido en un arreglo para luego dibujar toda la trayectoria. La interactividad se gestiona mediante eventos de ratón:

  • Al hacer clic y arrastrar, el usuario define la dirección y la fuerza del disparo, actualizando en tiempo real la flecha y el camino de vista previa.
  • Al soltar el botón, se inicia la animación del proyectil y se actualizan los datos mostrados en pantalla. También se contempla la situación en la que la pestaña del navegador pierde visibilidad, deteniendo la animación para reanudarla cuando se vuelve a mostrar.

Resultado final

Puedes ver todo el código y su funcionamiento a continuación:

Conclusión

El ejemplo expuesto demuestra cómo se puede representar el tiro parabólico en la web. Un concepto físico básico fácil de implementar en programación usando JavaScript y HTML.