Autor Tema: Calcular velocidadZ (antes me equivoqué).

0 Usuarios y 1 Visitante están viendo este tema.

17 Noviembre, 2011, 03:39 am
Leído 3069 veces

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
En un tema anterior que hice pensé que necesitaba la fórmula que allí me dieron, pero me equivoqué. Les dejo una imagen de ejemplo y les cuento algunas variables que uso (pueden llamarlas como les sea más cómodo):


Z:
Altura de la pelota (en el ejemplo empieza en 0).

ZSpeed (inicial):
Velocidad de Z (en el ej es 5), lo que preciso calcular, luego explicaré por qué.

Disminución de ZSpeed por frame (es un modo de contar el tiempo):
Simulación de la gravedad, cuánto cae la pelota por frame. Es 1.

YSpeed:
Velocidad del movimiento Y (en el ej es 1), cuánto por frame se mueve hacia la cancha del rival.

DistanciaY al punto de pique:
No es la distancia en sí, que se contaría diagonalmente, sino simplemente la distancia considerando el eje de las Y (lo que se asumiría como X). En el ej es 11.

ShotTime:
Tiempo antes de que el tiro llegue al suelo. Resultado de DistanciaY dividido YSpeed. En el ej es 11.

Disminución total (desde el primer movimiento de la pelota hasta tocar el piso) de ZSpeed:
Si de lo demás no estoy seguro de que sea importante, de esto menos. En el ejemplo es 66, que resulta de la fórmula de Gauss aplicada a ShotTime. No es lo que la pelota caerá, es la cantidad de disminución que habrá en ZSpeed antes de llegar al suelo. Lo que sucede es que cuando la pelota está subiendo disminuye la velocidad conque sube, pero no es que empiece a bajar instantáneamente... Dicho de otra forma, ZSpeed llegará un momento en que ser negativo pero podría empezar positivo.

-------

Bueno como dije preciso la ecuación para calcular ZSpeed. Porque la defino no en base a la fuerza del jugador sino en función de cómo sea el tiro (X e Y, definidos sí por la fuerza). Porque así me resulta más fácil. Bueno la pregunta es cual tiene que ser la ZSpeed inicial (cuánto hacia arriba tiene que ir la pelota en principio) como para que caiga en el punto que se marque, no antes ni después.

En el ejemplo las variables son:
Z = 0
Disminución de ZSpeed por frame = 1
YSpeed = 1
DistanciaY al punto de pique = 11
ShotTime = 11
Disminución total de ZSpeed = 66

Entonces:
ZSpeed = 5

¿Cómo se llega a eso mediante ecuaciones?
Yo llegué a ese resultado contando en la imagen y sumando 1 (porque desde el primer movimiento hay disminución, si es 5 aparecerá en 4).

Puede que deban considerar menos datos (YSpeed y DistanciaY por ejemplo son importantes para ShotTime, pero teniendo eso podría alcanzar).

Si quieren más ejemplos simplemente dejen de lado partes iniciales de la imagen. Por ejemplo, podría tomarse como inicio cuando la pelota tiene Z 1 y habría 1 menos de distancia, etc.


Gracias desde ya.

17 Noviembre, 2011, 03:45 am
Respuesta #1

Phicar

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 513
  • Karma: +1/-0
  • Sexo: Masculino
    • redinfocol.org
yo no entiendo. Quieres simular una bola de tenis en movimiento(proyectil) no?
Imagino que este enlace puede servir
http://usuarios.multimania.es/pefeco/movcomb/Movi_proy_Teor.htm
redinfocol.org

17 Noviembre, 2011, 03:54 am
Respuesta #2

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Pues a mí me resulta difícil de entender eso, gracias, pero en principio prefiero algo más simple.

¿Puedo poner un link a descargar el juego (lo que he hecho) o si lo hago me borran del foro o algo?

17 Noviembre, 2011, 04:01 am
Respuesta #3

Phicar

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 513
  • Karma: +1/-0
  • Sexo: Masculino
    • redinfocol.org
Si no quieres nada real..le podrias dar la altura que quieras..al fin y al cabo tu defines cuantas iteraciones sumas y cuantas restas, no?

Si quieres que parezca real, te toca seguir esas ecuaciones.

No creo que haya problema en ponerlo. Yo quiero verlo ademas :)
redinfocol.org

17 Noviembre, 2011, 04:05 am
Respuesta #4

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
No creo que haya problema en ponerlo. Yo quiero verlo ademas :)
Así te hago responsable  ;)

http://www.megaupload.com/?d=4W7TCT34

Te mueves con las flechas y lanzas o golpeas la pelota (según) con la a. Ojo: Donde dice "Inserte un número" tenés que poner alguno. Probá distintos y bueno ¿cual es el que corresponde? Depende de la velocidad del saque y de hacia donde tires (por ahora no hice eso), depende de varias cosas, y ta, tiene que calcularlo la compu.

Otra cosa: Después de poner el número, y antes de lanzar, hay que cliquear fuera del cuadro de texto, sino te queda 1aa (por ejemplo).

17 Noviembre, 2011, 04:51 am
Respuesta #5

Phicar

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 513
  • Karma: +1/-0
  • Sexo: Masculino
    • redinfocol.org
Hola, no jugue porque no tengo flash.. Pero lo decompile...

Que hace la variable norma?

Mas que eso, por que la defines asi? Norma = Math.sqrt(143337.96 + _level0.DistanciaX * _level0.DistanciaX);
redinfocol.org

17 Noviembre, 2011, 05:01 am
Respuesta #6

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Flash player es fácil de conseguir, dos por tres en youtube te dicen que es necesario.

Respecto a Norma, simplemente lo copié de aquí:
http://uruguaygamer.com/foro/topic.php?id=906
del usuario NaBUru38. También me pareció raro el nombre, pero bue XD

Los datos que tenés son un poco distintos al original. Originalmente es algo como:
Norma = Math.sqrt(350*350 + _level0.DistanciaX * _level0.DistanciaX);

Donde 350 es la distanciaY (como es siempre la misma la puse con números). Y no es exactamente 350 no me acuerdo.

Es un poco complicado explicar qué hace. En el link que te di está.


Haciendo pruebas en el juego vi que el número necesario es más o menos -1.5 pero está basado en los datos del juego que son distintos al ejemplo que di en principio.

19 Noviembre, 2011, 12:12 am
Respuesta #7

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Más especificación, espero que simplificación también:
T   Z   ZS
1   0   1
1   1   0
1   2   -1
2   1   1
2   3   0
2   5   -1
3   3   1
3   6   0
3   9   -1

T sería tiempo, lo que antes llamé ShotTime (tiempo antes de que el tiro llegue al suelo).
Z altura en que está la pelota.
ZS velocidad Z de la pelota (qué tanto hacia arriba o abajo se mueve por segundo digamos).

Simplemente preciso la ecuación que implica T y Z y resulta ZS.

Los datos que acabo de dar son de aquí (no precisan entender esto):


Referencias:
Números en la derecha: Altura (indicador de Z).
Circulos de color rojizo: Pelota cuando el ZS inicial es o fue 1.
Circulos de color azulado: Pelota cuando el ZS inicial es o fue 0.
Circulos de color verdoso: Pelota cuando el ZS inicial es o fue -1.
Líneas gruesas de color claro: Lugar al que iría la pelota en principio, si no se aplicara la gravedad.
Líneas gruesas de color negro: Influencia de la gravedad en el inicio del tiro.
Líneas gruesas de colores semioscuros: Representación del movimiento de la pelota.
Números en las pelotas: ZS.

Arriba en vez de usar circulos pinté los cuadrados.

Lo siguiente son "deducciones" que hice:
T   Z   ZS
1   0   1
1   1   0
1   2   -1
Cuando T = 1:   Z+1 --> ZS-1
Posible ecuación:   T-Z
2   1   1
2   3   0
2   5   -1
Cuando T = 2:   Z+2 --> ZS-1
T-Z no sirve.
T-(Z+1)/2 no sirve cuando T=1
T-(Z+1)/T no sirve cuando T=1
T-(Z+T-1)/T
3   3   1
3   6   0
3   9   -1
Cuando T = 3:   Z+3 --> ZS-1
T-(Z+T-1)/T no sirve.

T   Z   ZS
1   3   -2
2   3   0
3   3   1
Cuando Z = 3:   T+1 --> ZS???

19 Noviembre, 2011, 02:48 am
Respuesta #8

Phicar

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 513
  • Karma: +1/-0
  • Sexo: Masculino
    • redinfocol.org
No hombre eso no tiene sentido, en verdad lo que estas haciendo es tratar extrapolar algo en termino a unos datos. Luego con eso no vas a poder hacer nada que no parezca hecho "a la fuerza" deberias invertir un tris tu tiempo en ver lo de los proyectiles que te puse aca.
redinfocol.org

19 Noviembre, 2011, 03:14 am
Respuesta #9

Tachikomaia

  • $$\Large \color{#5b61b3}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 1,297
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
en verdad lo que estas haciendo es tratar extrapolar algo en termino a unos datos.
No sé qué significa eso.

Citar
Luego con eso no vas a poder hacer nada que no parezca hecho "a la fuerza"
¿Por qué?

Ok, veré un poco lo tuyo en un rato, pero me parece rre complicado de entender, creo que hay una "a" rara, como coseno o algo de eso que nunca entendí bien qué es.

¿Has oído hablar de Eureqa? Es un programa que averigua funciones, pero no lo he podido usar bien.