[HELP] velocità
#1
Inviato il 23 settembre 2010 - 18:41
mi intendo che se faccio /autovelox
mi esce:
il veicolo id: 101 ha la velocità di 120 km/h (ho fato un esempio)
Address: 95.110.228.30:7777
Players: 38 / 50
Ping: 40
Mode: RolePlay v 0.4
Map: San Andreas
Siamo in cerca di CF
#5
Inviato il 23 settembre 2010 - 19:36
stock GetSpeed(vehicleid) { new Float:vx, Float:vy, Float:vz; GetVehicleVelocity(vehicleid, vx, vy, vz); return floatround(floatsqroot(vx*vx + vy*vy + vz*vz) * 200); }
La conversione in kilometri orari è diversa

edit: 1.61 non è altro che la conversione tra miglia orarie e kilometri orari, quindi da per scontato che l'unità di GTA SA sia in centesimi di miglio, il che non mi risulta (sto parlando del link che ha messo peppinux).
Poi usa floatabs per portare il risultato in valore assoluto, ma è un errore da prima elementare, se moltiplichi un qualsiasi numero per esponente pari, il risultato non potrà mai essere negativo.
#7
Inviato il 23 settembre 2010 - 19:51
peppinux aka Peppe_Stasu, il 23 settembre 2010 - 20:48 ha detto:
A funzionare funzionano entrambi, il mio è piu corto il suo è solo più lungo e lento dato che ha messo funzioni inutili. A parte questo la differenza tra i due è la conversione in kilometri all' ora, e non mi va di provare quale è più preciso... come ho detto il massimo a cui può arrivare la infernus col mio è 246 km/h, moltiplicando per 161 il massimo arriverebbe a 190 km/h che mi sembra decisamente pochino.
#9
Inviato il 23 settembre 2010 - 19:57
Skiaffo, il 23 settembre 2010 - 20:36 ha detto:
stock GetSpeed(vehicleid) { new Float:vx, Float:vy, Float:vz; GetVehicleVelocity(vehicleid, vx, vy, vz); return floatround(floatsqroot(vx*vx + vy*vy + vz*vz) * 200); }
La conversione in kilometri orari è diversa

edit: 1.61 non è altro che la conversione tra miglia orarie e kilometri orari, quindi da per scontato che l'unità di GTA SA sia in centesimi di miglio, il che non mi risulta (sto parlando del link che ha messo peppinux).
Poi usa floatabs per portare il risultato in valore assoluto, ma è un errore da prima elementare, se moltiplichi un qualsiasi numero per esponente pari, il risultato non potrà mai essere negativo.
Una domanda, come facevi a sapere che i km sono uguali a
floatround(floatsqroot(vx*vx + vy*vy + vz*vz) * 200);
??
Hai tirato a caso ?
#10
Inviato il 23 settembre 2010 - 19:58
Angelo_95, il 23 settembre 2010 - 20:57 ha detto:
Skiaffo, il 23 settembre 2010 - 20:36 ha detto:
stock GetSpeed(vehicleid) { new Float:vx, Float:vy, Float:vz; GetVehicleVelocity(vehicleid, vx, vy, vz); return floatround(floatsqroot(vx*vx + vy*vy + vz*vz) * 200); }
La conversione in kilometri orari è diversa

edit: 1.61 non è altro che la conversione tra miglia orarie e kilometri orari, quindi da per scontato che l'unità di GTA SA sia in centesimi di miglio, il che non mi risulta (sto parlando del link che ha messo peppinux).
Poi usa floatabs per portare il risultato in valore assoluto, ma è un errore da prima elementare, se moltiplichi un qualsiasi numero per esponente pari, il risultato non potrà mai essere negativo.
Una domanda, come facevi a sapere che i km sono uguali a
floatround(floatsqroot(vx*vx + vy*vy + vz*vz) * 200);
??
Hai tirato a caso ?
Mi ricordo che ero andato a tentativi fino a trovare la conversione più realistica, e avevo letto una discussione sul forum di SA-MP su quale potesse essere il valore con cui moltiplicare il risultato per rendere la conversione più realistica possibile, e si diceva che il valore più accettabile era tra 195 e 200 quindi ho avuto la conferma e ho lasciato 200.
Comunque il problema è soltanto su quel * 200... sul resto non credo ci siano dubbi no?
#11
Inviato il 23 settembre 2010 - 20:15
Skiaffo, il 23 settembre 2010 - 20:58 ha detto:
Angelo_95, il 23 settembre 2010 - 20:57 ha detto:
Skiaffo, il 23 settembre 2010 - 20:36 ha detto:
stock GetSpeed(vehicleid) { new Float:vx, Float:vy, Float:vz; GetVehicleVelocity(vehicleid, vx, vy, vz); return floatround(floatsqroot(vx*vx + vy*vy + vz*vz) * 200); }
La conversione in kilometri orari è diversa

edit: 1.61 non è altro che la conversione tra miglia orarie e kilometri orari, quindi da per scontato che l'unità di GTA SA sia in centesimi di miglio, il che non mi risulta (sto parlando del link che ha messo peppinux).
Poi usa floatabs per portare il risultato in valore assoluto, ma è un errore da prima elementare, se moltiplichi un qualsiasi numero per esponente pari, il risultato non potrà mai essere negativo.
Una domanda, come facevi a sapere che i km sono uguali a
floatround(floatsqroot(vx*vx + vy*vy + vz*vz) * 200);
??
Hai tirato a caso ?
Mi ricordo che ero andato a tentativi fino a trovare la conversione più realistica, e avevo letto una discussione sul forum di SA-MP su quale potesse essere il valore con cui moltiplicare il risultato per rendere la conversione più realistica possibile, e si diceva che il valore più accettabile era tra 195 e 200 quindi ho avuto la conferma e ho lasciato 200.
Comunque il problema è soltanto su quel * 200... sul resto non credo ci siano dubbi no?
Si però non ho capito come facevi a sapere che i km sono uguali alla "Potenza" della "Radice Quadrata" Di "vx * vx + vy * vy + vZ*vz" "* 200"
#12
Inviato il 23 settembre 2010 - 20:23
GetPlayerSpeed(playerid, bool:kmh = true) { new Float:vX, Float:vY, Float:vZ; if(IsPlayerInAnyVehicle(playerid)) { GetVehicleVelocity(GetPlayerVehicleID(playerid), vX, vY, vZ); } else { GetPlayerVelocity(playerid, vX, vY, vZ); } return kmh ? floatround(floatsqroot(vX*vX + vY*vY + vZ*vZ) * 161) : floatround(floatsqroot(vX*vX + vY*vY + vZ*vZ) * 100); }
Dalla funzione di skiaffo la differenza non è poca nella conversione a km, inoltre con sta funzione a me con l'infernus li supera i 190 o.ò
Provate a paragonare le due funzioni con il contachilometri di sobeit, che è preciso e fateci sapere
Messaggio modificato da Peppe951 il 23 settembre 2010 - 20:24
#13
Inviato il 23 settembre 2010 - 21:27
Angelo_95, il 23 settembre 2010 - 21:15 ha detto:
Quella parte non centra niente con i kilometri o le conversioni di unità di misura, è solo matematica.
Prima di tutto c'è da sapere cosa fa GetVehicleVelocity. Velocity in inglese non è la stessa cosa di speed, e velocity non si traduce velocità in italiano. Velocity in inglese è una grandezza fisica e si traduce (e quindi è il corrispondente in italiano) come "vettore velocità".
GetVehicleVelocity quindi prende tre vettori orientati nello spazio, uno per ogni coordinata, dove il modulo è la velocità (di unità di misura sconosciuta). Per trovare la velocità quindi bisogna fare la somma dei vettori, e la somma dei vettori la si fa col teorema di pitagora. E' come se i due vettori fossero i due cateti di un triangolo, e il vettore somma fosse l'ipotenusa: la radice quadrata del quadrato del primo cateto (x*x) + il quadrato del secondo cateto (y*y) è uguale all'ipotenusa, ovvero il vettore somma di x e y. Siccome siamo nello spazio e non sul piano si aggiunge la coordinata z la ridice (z*z), ed ecco il tuo vettore somma della velocità.
Il *200 o *161 serve solo a convertire questo vettore somma in kilometri orari, anche se ancora non abbiamo capito quale sia il valore giusto. Secondo me è 200.
#14
Inviato il 23 settembre 2010 - 22:01
La velocità con cui il player si sta spostando nella coordinata X (Da Est a Ovest e viceversa)
La velocità con cui il player si sta spostando nella coordinata Y (Da Nord a Suc e viceversa)
La velocità con cui il player si sta spostando nella coordinata Z (Dal basso in alto e viceversa)
Poi col teorema di pitagora sommo X , Y , Z per avere la somma dei vettori velocità che poi verrà divisa per 200 o 161, che è il numero per trasformare questa somma dei vettori in Km
Se mi ricordo bene il teorema di pitagore serviva per trovare l'ipotenusa tra due cateti, ma poteva essere anche utilizzato per trovare il primo catete o il secondo catete avendo l'ipotenusa
Se mi ricordo bene se dovevo trovare l'ipotenusa facevo:
La radice quadrata del primo valore^2 sommato col secondo valore^2 se non sbaglio xD poi non ricordo sono cose che ho fatto alle medie, mentre il prof il 1° superiore non ci ha ancora insegnato niente.
P.S. scusate L'OT
#15
Inviato il 23 settembre 2010 - 22:04
Angelo_95, il 23 settembre 2010 - 23:01 ha detto:
Si, ma in questo caso dobbiamo trovare la somma dei vettori e quindi l'ipotenusa del triangolo che costruiscono, quindi il resto non ci serve
