Saltar al contenido

¿Cómo calcular el ángulo de rebote?

Nuestro team de redactores ha estado horas buscando para dar soluciones a tus preguntas, te brindamos la respuestas por esto nuestro objetivo es serte de mucha ayuda.

Solución:

Podría pensar que debido a que sus paredes están alineadas con los ejes de coordenadas, tiene sentido escribir un código de caso especial (para una pared vertical, negar la coordenada x de la velocidad; para una pared horizontal, negar la coordenada y de la velocidad ). Sin embargo, una vez que hayas logrado que el juego funcione bien con paredes verticales y horizontales, probablemente lo siguiente que pensarás es “¿qué pasa con las paredes en ángulos arbitrarios?”. Así que vale la pena pensar en el caso general desde el principio.

En el caso general, suponga que su misil tiene una velocidad v y golpea una pared con superficie normal norte.

Proyectil con vector v a punto de golpear oblicuamente una pared con superficie normal n.

Separar v en componentes tu perpendicular a la pared y w paralelo a ella.

Triángulo rectángulo con hipotenusa para v, lado corto u paralelo a la pared y lado largo w paralelo a la pared.

Donde:

tu = (v · norte / norte · norte) norte
w = vtu

Aquí, v · norte es el producto escalar de los vectores v y norte. Consulte el enlace para obtener una explicación de cómo calcularlo. el producto punto norte · norte se evalúa al cuadrado de la longitud del vector normal; si siempre mantiene sus normales en forma de vectores unitarios, entonces norte · norte = 1 y puedes omitir la división.

Después de rebotar, el componente de movimiento paralelo a la pared se ve afectado por la fricción. Fy el componente perpendicular a la pared se ve afectado por la elasticidad, que se puede dar en forma de un coeficiente de restitución r.

Entonces la velocidad después de la colisión es v′ = Fwrtu. En una colisión perfectamente elástica y sin fricción, v′ = wtu; es decir, el movimiento se refleja con respecto a la normal en el punto de colisión, como en el diagrama de la respuesta de Bill.

Este enfoque también funciona igual en tres dimensiones.

(Obviamente, esta es una noción muy simplificada de rebote; no tiene en cuenta el momento angular o la deformación. Pero para muchos tipos de videojuegos, este tipo de simplificación es perfectamente adecuada).

Creo que una forma más fácil de hacer esto es usar la velocidad del misil en lugar de calcular los ángulos. Digamos que tienes un misil que tiene xVelocity y yVelocity para representar su movimiento horizontal y verticalmente. Esas velocidades pueden ser positivas o negativas para representar izquierda, derecha, arriba o abajo.

  • Si un misil golpea un borde superior o inferior, invierta el signo del yVelocity.
  • Si un misil golpea un borde izquierdo o derecho, invierta el signo del xVelocity.

Esto mantendrá igual el movimiento en el eje opuesto.

Tomando prestada la imagen de la respuesta de ChrisF, digamos que el misil comienza en la posición I.

Ángulo de reflexión

Con el xVelocity y yVelocity siendo ambos positivos (en los gráficos 2D, la derecha y la parte inferior suelen ser positivas), el misil viajará en la dirección indicada. Solo vamos a asignar valores de

xVelocity = 3
yVelocity = 4

Cuando el misil golpea la pared en la posición Csu xVelocity no debería cambiar, pero es yVelocity debe invertirse a -4 para que viaje de regreso en la dirección hacia arriba, pero siga yendo hacia la derecha.

El beneficio de este método es que solo necesita realizar un seguimiento de un misil xPosition, yPosition, xVelocityy yVelocity. Usando solo estos cuatro componentes y la tasa de actualización de tu juego, el misil siempre se volverá a dibujar en la posición correcta. Una vez que te encuentres con obstáculos más complicados que no estén en ángulos rectos o que se estén moviendo, será mucho más fácil trabajar con velocidades X e Y que con ángulos.

Para partículas perfectas (y luz), el ángulo de reflexión es igual al ángulo de incidencia, como se ilustra en este diagrama (de commons.wikimedia.org).

Ángulo de reflexión

Haga una búsqueda de “ángulo de reflexión” (sin las comillas) en Google.

Es un poco más complicado cuando se tiene en cuenta la elasticidad y los materiales del objeto y los obstáculos 😉

valoraciones y comentarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *