• 05 Juin 2026, 09:45:34


Auteur Sujet: [Résolu] Savoir si le joueur monte ou descend avec un avion  (Lu 2873 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Biljour', j'aimerais trouver le moyen de savoir si le joueur décris une courbe en descendant ou en montant car j'aimerais faire un système de G j'ai la formule qui est :

(v²/r)/9.8
v étant la vitesse en m/s
r le rayon de la courbure
et 9.8 l'intensité de la pensanteur N.Kg-1


J'ai ma petite idée, donc quand le joueur appuiera sur la touche haut ou bas pour décrire une courbe on déclenchera un cercle qui va servir de cercle témoin et ensuite on prend la courbe et on cherche son rayon.
http://www.bibmath.net/dico/index.php3?action=affiche&quoi=./c/courbure.html
Merci de votre aide.
Sam ++
 :cheers

" Avec presque rien on fait  presque tout " de Syg. Je te met au défi :)
« Modifié: 25 Juin 2010, 18:32:17 par chneubeul »

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Dans le cas d'un avion qui monte où qui descend, la trajectoire a peu de chance d'être un cercle.
Au mieux ce sera un ligne droite, au pire une courbe dont l'équation ne tiendrait pas sur l'écran.

Mais ce que tu veux faire n'est pas impossible et avec le peu qu'apporte le PAWN, il serai possible de la faire.
La méthode :
Echantillonner la trajectoire du véhicule (c'est à dire prendre le plus de points possible pour décrire le mouvement du véhicule).
   -> Ce n'est pas très difficile à réalisé mais il faut une grande quantité de mémoire
A partir des cet échantillonnage, en déduire l'équation de la trajectoire du véhicule
   -> Il est certainement facile de coder ça en PAWN. Le plus dur c'est les math qui vont derrière et j'avoue ne pas savoir faire.
A partir de l'équation de la courbe représentant la trajectoire, on trouve un vecteur normal centrifuge à cet courbe ainsi que son rayon de courbure. Ceci donne l'intensité de l'accélération subie (d'après ta formule) et la direction dans laquelle elle s'applique. Tout ceci en temps réel bien sûr.
   -> Là encore, PAWN permet de coder ça mais là encore, il faut de très bonnes connaissances en math (par contre, là, je pourais, sur une courbe simple, peut-être me débrouiller).

Je t'ai donné la méthode, à toi de faire le reste :)
Bon courage !!!

++
Syg
Courtesy of GtaManiac

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Merci beaucoup je vais réfléchir à sa et je pense avoir l'ami nécessaire pour les maths (( Google ^^)) Merci encore de ton aide..

Salut :)
J'ai chercher la formule sur mon amis et je n'ai trouver que des logiciels etc.. en C :s Je continue de chercher mais je crois que sa va encore être foutu le système -_-
« Modifié: 25 Juin 2010, 09:23:41 par chneubeul »

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Oui sa mais bon c'pas très réel, IRL quand tu monte ou tu descend tu n'a pas d'accélération assez fortes pour subir des remontés de sang etc..

Hors ligne steve76

  • *
  • Tueur en série
  • Messages: 153
    • Voir le profil
A  partir de la position de deux points il est possible de trouver l'accélération.

Petite aide:

La dérivé de la distance de deux points donne le vecteur vitesse, la dérivé du vecteur vitesse te donne le vecteur accélération après à partir du vecteur, tu peux en déduire la vitesse propre du système, ici ton avion.

Je sais pas si je suis très claire, mais c'est le programme de Terminal S donc...
Si tu comprends pas trop, j'essaierais de te ré expliquer.

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Pour la vitesse plus besoin de se foulé les cheville, y a déjà la fonction GetPlayerVelocity()



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Salut :) Steve j'ai vu d'la doc sur sa je vais me servir de sa merci beaucoup, Gzsume ce que je voulais c'est trouver le moyen de savoir si le mec monte ou descend oui mais en calculant l'acceleration. Et enfin sasuke, ce que je veut ce n'est pas la vitesse, j'en aurais besoin mais je sais le faire sa ^^

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Ben a la limite j'utilise les vecteurs de steve j'ai trouver les formules et si on veut trouver le fameux nombre G il faut utiliser le rayon de la courbure peut être que steve sais puisque les vecteurs dont il parle sont souvent employés dans des courbes.. =D

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Non c'est particulier, c'pas comme un rayon commun auquel tu pense ^^ j'ai regarder un peu sur le net c'est une formule assez compliqués ! =D

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Salut,

ça tombe bien, je suis justement j'étudie justement en physique..... :P

Tu cherche le G subit par le joueur dans son avion, donc une accélération

Mais qu'es-ce qu'une accélération?

Un truc qui fait qu'on meurt quand on se prend un accident à trop grande vitesse?
Ça peut oui... (quand l'accélération au moment de la collision est trop grande le corps s'endommage)

La définition physique d'une accélération est une variation de vitesse.
(la vitesse en m/s, ca variation dans ce même unité de temps est la différence de vitesse (encore en m/s) par l'unité de temps (secondes) d'où m/s²).

Bref, pour ton problème, comment faire?
Regarde la vitesse à un instant (avec GetVehicleVelocity s'il te plait) et enregistre la dans des variables (3 variables pour les 3 composantes)
Puis une autre fois après avoir laisser un laps de temps s'écouler. Il te faudra donc trouver de combien la vitesse a variée.
Attention, la vitesse est un vecteur. Il te faudra donc trouver la différence vectorielle entre les deux vitesses trouvées. Pour se faire, il te suffit de soustraire chacun des composantes (vecteur 2 - vecteur 1 s'il te plait, question d'avoir la bonne direction...).
À savoir que le vecteur résultant est toujours une vitesse, il te faudrait donc maintenant le convertir dans une unité plus pratique, le m/s.
NB. j'avais codé cette fonction et le multiplicateur (180) donne environ la vitesse en km/h:

Float:GetPlayerSpeed(playerid)
{
    new Float:X, Float:Y, Float:Z;
    new vehid;
    if((vehid = GetVehicleID(playerid)))
    {
        GetVehicleVelocity(vehid, X, Y, Z);
    }
    else
    {
        GetPlayerVelocity(playerid, X, Y, Z);
    }
    return (floatsqroot(X * X + Y * Y + Z * Z) * 180);
}
NB. N'utilisez pas cette fonction car elle n'est pas claire (explication: http://www.gtaonline.fr/forums/index.php/topic,8857.msg149544#msg149544)

Sachant le multiplicateur pour avoir la vitesse en km/h, il te suffit de trouver le multiplicateur pour la vitesse en m/s (1 m/s = 3,6 km/h).

Maintenant que tu as la différence de vitesse en m/s, il ne te reste qu'à diviser le tout par le temps en secondes écoulé entre les 2 mesures (GetTickCount() merci  ;)).

Tu as donc désormais l'accélération en m/s². à savoir que le g est l'accélération gravitationnelle de la terre à sa surface. Sa valeur acceptée est d'approximativement 9,8 m/s² (plus précisément 9,80665 m/s²).

En divisant par cette valeur tu obtient donc l'accélération en g (attention le g doit être minuscule, le G = constante gravitationnelle = 6,673x10E-11) que subit le joueur.

NB. il pourrait être judicieux d'adapter cette valeur suite à certains tests car il est possible que GTA n'offre pas des accélération réalistes.

++Sim++





Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Demande Aide] Savoir si le joueur monte ou descend avec un avion
« Réponse #10 le: 25 Juin 2010, 17:39:42 »
Salut :) Merci à toi Sim. Donc j'utilise la méthode de Sim ou les autres ? :)

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Savoir si le joueur monte ou descend avec un avion
« Réponse #11 le: 25 Juin 2010, 17:59:27 »
En faites tu voudrai savoir si le joueur monte ou descend ?

C'est assez simple, tu fait :


new Float:x = 0.0, Float:y = 0.0, Float:z = 0.0;
GetPlayerVelocity(playerid,x,y,z);

if(z < 0)
{
// si le joueur fait une descente
}
else if( z > 0)
{
// si le joueur fait une montée
}
else
{
// si le joueur ne bouge pas en hauteur
}



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne steve76

  • *
  • Tueur en série
  • Messages: 153
    • Voir le profil
Re : [Demande Aide] Savoir si le joueur monte ou descend avec un avion
« Réponse #12 le: 25 Juin 2010, 18:06:03 »
Il ne veux pas savoir uniquement si le joueur monte ou descend, il veut l'accélération pour pouvoir calculer le g que prend le joueur.

La méthode de Sim est plus simple que la mienne, je n'y avais pas pensé xD. Donc je pense que tu peux l'utiliser.

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Il ne veux pas savoir uniquement si le joueur monte ou descend, il veut l'accélération pour pouvoir calculer le g que prend le joueur.

La méthode de Sim est plus simple que la mienne, je n'y avais pas pensé xD. Donc je pense que tu peux l'utiliser.

Hum je comprend mieux ^^

Mais la il sait au moins si la courbe descend ou monte ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : [Résolu] Savoir si le joueur monte ou descend avec un avion
« Réponse #14 le: 25 Juin 2010, 18:34:06 »
Et oui ^^ Tu savais pas ce qu'étais le nombre g ? J'te sentais perdu la x'D