Tengo algunos objetos en mi juego que son "arrojados". En este momento estoy tratando de implementar esto haciendo que estos objetos sigan una curva parabólica. Sé el punto de inicio, el punto final, el vértice y la velocidad del objeto.
- ¿Cómo puedo determinar en un momento dado o encuadrar cuáles son las coordenadas x & y?
- ¿Es una curva parabólica incluso la curva correcta para usar?
physics
projectile-physics
Ben Williams
fuente
fuente
Respuestas:
Lo que buscas es una gráfica paramétrica de la función parabólica. Es más fácil hacer que la función paramétrica use un rango de p ∈ [0,1].
La forma canónica para una parábola paramétrica es
Usando esta fórmula y un poco de álgebra básica para la función de transformación y obtuve
Entonces, para obtener estas funciones producirá los números que está buscando.
fuente
f_x
utilizaf_y
la aceleracióna
como su velocidad media? Deberías hacer esox(t) = x0 + vx0*t
yy(t) = y0 + vy0*t + .5*ay*t*t
a
yt
solo eran nombres mal elegidos. Debes notar que no hay un componente de velocidad en las fórmulas. El movimiento de Euler y las parábolas paramétricas no son lo mismo, pero son muy similares al vuelo balístico que traza una trayectoria parabólica.Encontrar la ecuación de una curva por la que desea que se mueva su objeto es una forma de lograr lo que desea, pero probablemente no sea la mejor.
En cambio, uno generalmente realiza un seguimiento de las propiedades locales de un objeto (velocidad, aceleración) y luego usa estos valores para actualizar la posición del objeto en cada cuadro.
Como mencionó una parábola, supongo que está lanzando una pelota en 2D y desea que caiga a lo largo del eje y. Por lo tanto, su objeto tiene una aceleración constante en la dirección y (llamémosle así
g
) y ninguna aceleración en la dirección x. Cuando se arroja el objeto se le da cierta velocidad, llamemos a esovx
yvy
.Luego, en cada cuadro de su aplicación, agregaría la aceleración del objeto a su velocidad, y luego agregaría su velocidad a su posición. Algo como:
Haga esto cada cuadro y su bola comenzará a moverse. Hay mucho más que saber sobre esto, pero es un comienzo.
fuente
La respuesta de Brandon es bastante buena, pero si está buscando algo más avanzado, puede consultar la interpolación lineal: http://en.wikipedia.org/wiki/Linear_interpolation
Además, si su curva es una función, puede conocer las coordenadas x e y (y z) en un momento dado. Esto también podría ayudar: http://www.ucl.ac.uk/Mathematics/geomath/level2/fvec/fv8.html#l1
fuente
En los juegos de consola, a menudo usamos Bicubic Interpolation para resolver este problema. Primero, muestree la posición de un objeto a intervalos regulares de tiempo t. Para un proyectil, agregue aceleración gravitacional [0, dy / dt / dt] a su velocidad [dx / dt, dy / dt] en cada intervalo. Registre todas las coordenadas [x, y] generadas en una matriz.
Más tarde, para reconstruir la posición del objeto [x, y] para una t determinada, lea las cuatro muestras más cercanas a esa t del búfer que registró: [t-1, t, t + 1, t + 2]. Mezcle las cuatro muestras de acuerdo con los coeficientes en el artículo de Wikipedia vinculado para obtener un movimiento suave en el espacio.
Esto no es tan preciso físicamente como realizar cálculos físicos sobre la marcha, pero permite una licencia artística y una economía de escala para ayudar a su simulación.
fuente