-
[solucionado] con juego de tenis
Hola a todos, sé que esto no tiene mucho que ver con modelado o con 3d, pero seguramente hay mucha gente que conoce de matemáticas y física por aquí.
Sin más preámbulos:
Estoy empezando a hacer un juego de tenis en frebasic con la librería ninfa3d.
Venia todo bien hasta que me tope con la parte de calcular el tiro.
Voy a empezar usando un tiro oblicuo sin considerar el rozamiento del aire ni el spin de la pelota. Lo que conozco son 3 puntos, el punto desde dónde parte el tiro, el punto a la altura de la red donde quiero que pase la pelota, y finalmente donde quiero que caiga y por ahora solo consideré 2 dimensiones, más tarde me encargo de la tercera.
Llame a los puntos (xo,yo) (xc, yc) y (xf,yf).
Este es un gráfico de la situación:
La pregunta es: se puede calcular voy (velocidad inicial de y) y vox(velocidad inicial de x (constante)) conociendo estos 3 puntos? Como llego al resultado?
Llevo un par de días tratando y unas 10 hojas de tachones, agradezco cualquier ayuda. Gracias y saludos.
Última edición por emasg; 18-07-2009 a las 02:47
-
Ayuda con juego de tenis
Hola emasg. He de decirte que no entiendo cómo planteas el problema. En el juego de tenis lo que deberías conocer es con que velocidad sale despedida la pelota de la raqueta y de donde, los otros puntos son variables, además otro tema seria el ángulo respecto al suelo, o a la normal del suelo como prefieras, que también influye en el tiro. Es un problema de tiro parabólico además un movimiento acelerado ya que la gravedad es una aceleración, no es constante. Un saludo.
-
Ayuda con juego de tenis
Hola emasg. He de decirte que no entiendo cómo planteas el problema. En el juego de tenis lo que deberías conocer es con que velocidad sale despedida la pelota de la raqueta y de donde, los otros puntos son variables, además otro tema seria el ángulo respecto al suelo, o a la normal del suelo como prefieras, que también influye en el tiro. Es un problema de tiro parabólico además un movimiento acelerado ya que la gravedad es una aceleración, no es constante. Un saludo.
El problema es que no puedo tirar una velocidad al azar porque nunca voy a saber dónde cae la pelota.
Básicamente lo que necesito es lograr la ecuación para un tiro seguro, que pase por encima de la red y caiga donde quiero.
-
Ayuda con juego de tenis
Sinceramente, creo que te estás metiendo en berenjenales. Hoy día nadie calcula esas cosas, simplemente debes usar un motor de físicas para que al lanzar la pelota se calcule la trayectoria y sus rebotes automáticamente.
-
Ayuda con juego de tenis
A ver. No comprendo, si es un juego debería poderse fallar ¿no? Edito: como te ha dicho Caronte, hay otras opciones más sencillas. Si quieres hacer tu las cosas, por amor al arte, por que te gusta, o por la razón que sea, puedes mirar estos enlaces sobre el tiro parabólico: http://descartes, cnice, mec.es/desc...parabolico.htm. http://www.youtube.com/watch?v=dkovgwkyaj4.
Última edición por Bluder; 14-07-2009 a las 14:17
-
Ayuda con juego de tenis
Les agradezco los consejos. Ahora, estoy usando ninfa3d, tiene algo de física, le puedo aplicar un impulso a un cuerpo, pero no puedo conocer la trayectoria, es decir, nunca se dónde va a tocar con el suelo entre otras cosas. Me podrían recomendar algún engine?
Por otra parte, el tiro seguro es necesario para programar la inteligencia artificial, se empieza por hacer un jugador que no falle y luego se le agrega un margen de error de acuerdo con el nivel del jugador.
Pero bueno, si insisten quiero comprender lo que proponen, sería algo, así como lanzar la pelota con una velocidad inicial que invento de alguna forma basándome en la posición de la cancha en la que está la pelota. De acuerdo con esa velocidad cálculo la trayectoria para que la pelota no toque la red y toque el suelo donde quiero. El problema en este caso seria conseguir esa velocidad inicial, requeriría de un algoritmo que le de sentido puesto que si la pelota esta baja y muy cerca de la red no se le puede pegar a 100 km/h porque nunca va a entrar, por ejemplo.
Con respecto al enlace de tiro parabólico me gustó, está muy bien explicado, pero no encontré en ninguna web ni libro un ejemplo donde se calcule un tiro oblicuo a partir de 3 puntos, tal vez sea imposible (¿).
-
Ayuda con juego de tenis
Bueno. Teniendo el último punto, el punto central y el ángulo creo que puedes obtener la v inicial, basándote el alcance máximo y altura máxima:
X = (vo2)*sen(2*a)/g (x del punto de caída).
Y(max) = (vo2)*(sen(a))2/(2*g) (y del punto central).
La duda que tengo es si dispones del ángulo.
Aquí puedes encontrar como hallar la parábola a partir de los puntos: http://es.answers, Yahoo.com/questio...11133557abpkr7. http://leonardoparada.cl/matemática/...ados-3-puntos/.
Última edición por Bluder; 14-07-2009 a las 15:54
-
Agradecimientos - 1 Gracias
-
Ayuda con juego de tenis
La duda que tengo es si dispones del ángulo.[/quote]Gracias bluder. No tengo el ángulo, porque todo depende de todo, eso es lo que no término de comprender.
Si parametrizo el tiempo que quiero que tarde el tiro en tocar el piso o la velocidad inicial o el ángulo solucionó, pero no es lo que quiero parametrizar porque así no es el tenis, en el tenis uno calcula la altura a la que se quiere que pase la pelota por encima de la red y donde se quiere que caiga, de ahí sale el ángulo y la velocidad de x.
En principio parece una función cuadrática que pasa por 3 puntos, busque en internet y encontré cosas en Wikipedia, pero no lo pude aplicar.
-
Ayuda con juego de tenis
Hola pues a mí se me ocurre esto, no sé si será correcto ya que no soy programador, pero bueno. Seria una cosa así supongo.
Maxtiempo=colisión con la pala1.
Mintiempo=clision con la pala0.
Bucle.
If colisión con la pala=1 then gravedad=gravedad+1 and x=x-1.
If colisión con la pala0=1 then gravedad=ravedad+1 and x=x+1.
If recorrido=0 // donde 0 en la mitad de la pista de tenis// then gravedad=gravedad-1.
Repetir bucle.
No se a lo mejor no te funciona, pero prueba a ver supongo que, será una cosa así.
-
Ayuda con juego de tenis
Metalthink, te has pasado 3 pueblos con ese pseudo-código. Insisto, usa un motor de físicas (yo te recomendaría bullet que es el que usa Blender) y así no tendrás que reinventar la rueda y podrás centrarte tanto en la inteligencia artificial de tu juego como en aspectos más importantes, por ejemplo, la jugabilidad.
-
Agradecimientos - 1 Gracias