Comunidad de diseño web y desarrollo en internet online

Cálculo de matematica, Velocidad entre dos puntos.

Citar            
MensajeEscrito el 04 Jun 2009 08:08 pm
Hola, como estan?..

No puedo sacar un calculo de matemática, que por ahi para algunos le resulta fácil, ya busque por todos lados y leí formulas de velocidad y distancias, pero no doy con la clave.. a ver si alguien me puede dar una mano.

Estoy con un proyecto en ActionScript3 donde una pelota va desde un punto inicial hasta un punto final. con una velocidad constante, pero la distancia X es diferente a la distancia Y y la pelota tiene que llegar al mismo tiempo al punto final..

Veamos, tengo un punto de partida en un plano X,Y pongamos como ejemplo x=10, y=10 .
También tengo un punto final, por ejemplo x=40, y=30



La pelota tiene una velocidad de 0.5
osea que hasta ahora lo que estoy haciendo es..
ball.x += 0.5;
ball.y += 0.5;


Pero el problema esta que como la distancia Y es mas corta, llega primero al máximo Y que al máximo X..
asi que la pregunta es.. ¿como calculo las velocidades para que la pelota llegue a su destino al mismo tiempo?

Bueno, espero que me haya echo entender.. desde yá muchas gracias.. :)

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 04 Jun 2009 09:09 pm
oks prueba con esto

se supone que el tiempo de llegada es el mismo, por ende
Vx = Dx/T (Velocidad en x es igual a distancia en x entre el tiempo)
Vy = Dy/T (Velocidad en y es igual a distancia en y entre el tiempo)

Dx=30 // 40 - 10
Dy=20 // 30 - 10

Si igualamos los tiempos tenemos que

Dx/Vx = Dy/Vy

Perfecto ahora despejamos Vy y obtenemos la relacion de velocidad Vy en funcion de Vx

Vy = (Vx * Dy ) / Dx // Funcion chula :D

Y para tu ejemplo en contcreto
Vy = (Vx * 20) / 30
Vy = 2/3 (Vx)


Código :

import flash.geom.Point;

var point_1:Point = new Point(10, 10); // punto inicial
var point_2:Point = new Point(40, 30); // punto final

//Vy = (Vx * Dy ) / Dx
dx = point_2.x - point_1.x;
dy = point_2.y - point_1.y; trace(dy)

velx = 1.5;
vely = (velx * dy) / dx;

_root.onEnterFrame = function():Void
{
   clip._x += velx;
   clip._y += vely;
}



Modifica las coordenadas de los puntos inicial y final, y prueba!!
El clip debe pasar por el punto exactamente al mismo tiempo :D

Por rolv

Claber

2000 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 04 Jun 2009 11:11 pm
Velocidad = distancia / tiempo

Requieres diferente velocidad para X que para Y. En los pixeles a diferencia de la vida real, la fuerza es por eje.

Para calcular la velocidad de X = distancia(x2 - x1) / 1 segundo
Para calcular la velocidad de Y = distancia(y2 - y1) / 1 segundo

El código que te da Ramiro, esta bien. Tu problema, básicamente es que veiamos la velocidad, como un carrito, un carro va a 60km/h y no te importa si es X o Y, ni sabes. Pero en el mundo de los pixeles es distinto, la velocidad es por eje.

Despues podrías calcular la velocidad del punto, pero ya es un tema que por ahora no interesa.

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 05 Jun 2009 01:35 am
Ambas soluciones son "chapuzas" correctas que se basan en el tiempo, es decir, llega al punto dado un tiempo inicial.

La aproximación más cercana a la física, es algo como

theta = ángulo entre los dos puntos (usa Math.atan o Math.atan2, no recuerdo cual te servirá mejor)
v = velocidad lineal del objeto (es lineal, independiente de las coordenadas x e y)

objeto.x = objeto.x+v*Math.cos(theta);
objeto.y = objeto.y-v*Math.sin(theta);

**OJO**
Dado que el sistema de coordenas de flash está en el 4 cuadrante y en matemáticas se usa el primer cuadrante es posible que sea
objeto.y = objeto.y+v*Math.sin(theta); (+ en vez de -) igual puede pasar con el coseno, es cuestión de probar (o calcular cual sería correcto).

Si quieres hacerlo en base al tiempo con este sistema, simplemente velocidad = espacio / tiempo; y listo.

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 05 Jun 2009 03:08 am
Muchísimas gracias a todos, voy a probar y adaptar esas formulas a lo que tengo, a ver si resulta :)

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.