Ayuda con algo de matematica -
Jastak - 12.09.2015
Hola, quiero hacer algo pero en teorнa no se como hacerlo (no soy del todo bueno en matemбticas), bien, lo que quiero hacer es saber el valor que avanza un auto en x y y mediante la rotaciуn y su velocidad, es decir una funciуn que retorne la cantidad del valor x y y por medio de la rotaciуn y a una velocidad. (creo que me explique..)
Espero que me ayuden.. muchas gracias de ante mano
Respuesta: Ayuda con algo de matematica -
Zume - 12.09.2015
Que valor quieres que te retorne? el X y el Y por separado? y directamente el X o Y que avanzaste? en realidad no entendi muy bien que valor quieres si tomas en cuenta la velocidad. Se me ocurrio esto >
PHP код:
enum pPos{
Float:x,
Float:y
};
new TravelPlayer[MAX_PLAYERS][pPos];
COMMAND:start(playerid, params[])
{
GetPlayer2DPos(playerid, TravelPlayer[playerid][x], TravelPlayer[playerid][y]);
new
str[64];
format(str, sizeof str, "Iniciales: X [%.2f] . Y [%.2f]", TravelPlayer[playerid][x], TravelPlayer[playerid][y]);
SendClientMessage(playerid, -1, str);
return 1;
}
COMMAND:check_x(playerid, params[])
{
new
Float:fFinal[3];
GetPlayerPos(playerid, fFinal[0], fFinal[1], fFinal[2]);
new
str[64];
format(str, sizeof str, "X Recorrido: %.2f", (TravelPlayer[playerid][x] > fFinal[0]) ? (TravelPlayer[playerid][x]-fFinal[0]) : (fFinal[0]-TravelPlayer[playerid][x]));
SendClientMessage(playerid, -1, str);
return 1;
}
COMMAND:check_y(playerid, params[])
{
new
Float:fFinal[3];
GetPlayerPos(playerid, fFinal[0], fFinal[1], fFinal[2]);
new
str[64];
format(str, sizeof str, "Y Recorrido: %.2f", (TravelPlayer[playerid][y] > fFinal[1]) ? (TravelPlayer[playerid][y]-fFinal[1]) : (fFinal[1]-TravelPlayer[playerid][y]));
SendClientMessage(playerid, -1, str);
return 1;
}
stock GetPlayer2DPos(playerid, &Float:X, &Float:Y){
new
Float:fPosUnused;
#pragma unused fPosUnused
GetPlayerPos(playerid, X, Y, fPosUnused);
}
Re: Ayuda con algo de matematica -
Jastak - 12.09.2015
no exactamente, lo que quiero es una funciуn que tenga como parбmetros la posiciуn inicial, el бngulo y la velocidad a la que va el coche y que retorne su posiciуn futura (eso exactamente es lo que quiero que retorne su posiciуn futura)
Re: Ayuda con algo de matematica -
Miguel - 13.09.2015
їRealmente necesitas la rotaciуn del vehнculo? Puede suceder que el vehнculo estй apuntando hacia el oeste pero no se estй moviendo en esa direcciуn (que estй cayendo, por ejemplo).
Prueba con esto:
Xf = T*V + Xi
Donde:
Xi: posiciуn inicial
T: tiempo
V: velocidad EN UNA DE LAS COMPONENTES
Para predecir la posiciуn es necesario que hagas ese cбlculo para las tres componentes de la velocidad, Vx, Vy, Vz. Reuniendo los tres resultados deberнas obtener un punto (Xx, Xy, Xz) que representa coordenadas.
Nota: es un simple despeje de la ecuaciуn de velocidad, que es la diferencia de distancia entre la diferencia de tiempo (dx/dt = (x1-x0)/(t1-t0)).
Re: Ayuda con algo de matematica -
Miguel - 13.09.2015
Si lo que tienes es la rapidez (y no la velocidad que es un vector), si serнa necesario usar la rotaciуn. Te muestro.
Como dije antes, la ecuaciуn de la velocidad en una componente es:
ECUACIУN 1:
V = (Xf-Xi)/T
Tambiйn puedes determinar la velocidad mediante la rotaciуn de la siguiente forma:
ECUACIУN 2:
V = r * cos(a) - para la velocidad en X
V = r * sen(a) - para la velocidad en Y
Donde:
V: velocidad en una componente
r: rapidez
a: бngulo (rotaciуn)
Como verбs, hay dos ecuaciones para la velocidad en una componente. Podemos igualarlas.
(Xf-Xi)/T = r * cos(a) - para la velocidad en X
Y de allн despejamos la Xf.
Xfx = V*cos(a)*T + Xi
Lo mismo hacemos para la posiciуn en Y pero con la tercera ecuaciуn de velocidad
Xfy = V*sen(a)*T + Xi
En resumen, necesitas estas dos ecuaciones:
Xfx = V*cos(a)*T + Xi
Xfy = V*sen(a)*T + Xi
Con ellas calculas un punto en el plano (x,y).
Re: Ayuda con algo de matematica -
Jastak - 13.09.2015
Muchas Gracias Miguel, +rep para tн..
Respuesta: Ayuda con algo de matematica -
SimonEliecer - 13.09.2015
Buenas Noches no se como colocar una duda, es q me baniaron a mi primo y a mi injustamente en el server de Fz roleplay (S1) y despues de alli no puedo ni siquiera poner otro server ni nada ya he desintalado y intaladoas varias veces pero nada no se que hacer alguien me ayuda?
Respuesta: Ayuda con algo de matematica -
bm0z - 13.09.2015
Creo que no serнa nada efectivo ni eficiente hacerlo mediante rotaciones de
euler, para hacer tal calculo es necesario convertirlo en un
matrix y luego hacer una multiplicaciуn con la velocidad del vehнculo.
Ahora, si lo quieres hacer en 2D, basta con usar las funciones cos y sin.
Re: Ayuda con algo de matematica -
Jastak - 13.09.2015
bm0z solo quiero 2 dimensiones.
Respuesta: Ayuda con algo de matematica -
bm0z - 13.09.2015
їAlgo como esto es lo que quieres?
Код:
stock Algo(&Float:x, &Float:y, Float:angle, Float:speed)
{
x += floatsin(-angle, degrees) * speed;
y += floatcos(-angle, degress) * speed;
}
Estб es la soluciуn que te ha dado Miguel, en fin, creo que ya estaba resuelto el tema