• 11 Juin 2024, 03:47:26


Auteur Sujet: [Demande Aide] Trouver les coordonées d'un pts  (Lu 1833 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne chneuls

  • *
  • Tueur
  • Messages: 62
    • Voir le profil
[Demande Aide] Trouver les coordonées d'un pts
« le: 21 Octobre 2010, 14:13:13 »
Jour', :D

Alors voila pour mon système de caravane, j'utilise une fonction similaire à celle ci ( Celle ci est de Sasuke)


GetXYFrontOfAngle( &x, &y, angle, distance )
{
   x += distance * floatsin( -angle, degrees );
   y += distance * floatcos( -angle, degrees );
}

Mais je me suis rendu compte que de chercher le Z en fonction de la velocité de la voiture, et de l'ajouter a l'objet etc.. ça rendez pas terrible.
Comment avoir le Z ? via cette formule là.
J'ai chercher un peu sur internet et l'orientation vectorielle dans l'espace c'étais un peu compliqués, mais j'ai rien trouvé sur ce sujet.

Merci de votre aide.
 :cheers

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Trouver les coordonées d'un pts
« Réponse #1 le: 21 Octobre 2010, 14:57:03 »
Hum je pense qu'il que tu utilise les tangente pour trouve la position ^^



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

Hors ligne chneuls

  • *
  • Tueur
  • Messages: 62
    • Voir le profil
Re : [Demande Aide] Trouver les coordonées d'un pts
« Réponse #2 le: 21 Octobre 2010, 15:20:21 »
Si on résonne sur la logique, je pense comme toi. Mais j'sais pas ^^
Ben j'vais tester et on verra bien ;)
Encore mieux :)
J'vais demander à mon prof d'étude de construction, c'est une bête en math..etc.. ^^
Et comme tout ce qui touche les vecteurs et son domaine d'enseignement, ben il saura :p

Merci quand même, j'te tiens au courant ^^
« Modifié: 21 Octobre 2010, 15:30:57 par chneuls »

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : [Demande Aide] Trouver les coordonées d'un pts
« Réponse #3 le: 21 Octobre 2010, 16:42:02 »
Pas du tout, c'est encore un sin ou un cos mais avec un autre angle.
En 2D, un seul angle et une distance suffise à positionner un point dans le plan.
En 3D, il faut 2 angles et une distance mais il est impossible de les avoir dans SAMP (il n'y a pas les fonctions pour).

De plus, l'altitude dépend surtout de la configuration du terrain. Sur un terrain plat, l'altitude est constante alors qu'en montée ou en descente, elle est croissante ou décroissante.
Le mieux serait de trouver une fonction qui donne l'altitude sur la carte en fonction des coordonnées X et Y. Je ne suis pas sûr que ça existe pour SAMP.

++
Syg
Courtesy of GtaManiac

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [Demande Aide] Trouver les coordonées d'un pts
« Réponse #4 le: 21 Octobre 2010, 16:43:49 »
Hum, j'ai fail alors ^^


Sinon pour avoir la position Z à partir de x et y tu peut utiliser map andreas



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

Hors ligne chneuls

  • *
  • Tueur
  • Messages: 62
    • Voir le profil
Re : [Demande Aide] Trouver les coordonées d'un pts
« Réponse #5 le: 21 Octobre 2010, 16:48:15 »
Normalement c'est les deux angles de quoi ?
Je confirme avec X et Y on peut avoir le Z via le plugin MapAndreas ici

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : [Demande Aide] Trouver les coordonées d'un pts
« Réponse #6 le: 22 Octobre 2010, 09:50:04 »
C'est exactement de ça que je parlais.
Par contre, le plugin en question est très gourmand (70 Mo de mémoire utilisé) et a beaucoup de limitations.

Pour les deux angles, on garde l'angle de rotation par rapport à l'axe Z (qui pointe vers le haut) et il faut l'angle par rapport au plan (XY). Ce dernier angle n'est pas disponible sous SAMP.

++
Syg
Courtesy of GtaManiac

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : [Demande Aide] Trouver les coordonées d'un pts
« Réponse #7 le: 22 Octobre 2010, 18:00:32 »
Salut,

si vous voulez un peu de visualisation des angles en question, recherchez système de coordonnées sphérique sur google. C'est exactement ce principe et c'est une des choses que l'on a abordé dans mon cours de calcul vectoriel.

++Sim++





Hors ligne chneuls

  • *
  • Tueur
  • Messages: 62
    • Voir le profil
Re : [Demande Aide] Trouver les coordonées d'un pts
« Réponse #8 le: 22 Octobre 2010, 18:11:32 »
Salut :D
Merci beaucoup, je vais regarder ça Sim.
Syg j'ai pas eu le temps de demander à mon prof on été en TD aujourd'hui et j'ai eu le temps de finir à temps et de partir pour quitter ^^


Sim ? J'ai regardais un peu.. --> Wikipédia

j'aurais besoins des coordonnées cartésienne, j'ai vue le produit de ça en cours, mais on a pas plus approfondi..
Mais genre ils donnent :

z = p cos o(barré)
mais o(barré) c'est ensemble vide ?
« Modifié: 22 Octobre 2010, 18:18:11 par chneuls »

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : [Demande Aide] Trouver les coordonées d'un pts
« Réponse #9 le: 22 Octobre 2010, 19:06:21 »
Salut,

le o barré comme tu dit, c'est téta, c'est une lettre grecque (comme on en utilise plein en math). Ici c'est l'angle entre ton vecteur et l'axe des X dans le plan de XY. L'angle phi, le I sur un o,  c'est l'angle entre l'axe des Z et ton vecteur. Regarde les images et ça devrait être clair.
Donc, ici c'est pour montrer ce que Syg disait, qu'on a besoin da la grandeur et de deux angles.
Sinon, on peut très bien le faire sans le moindre angle, en ayant le vecteur en coordonnées cartésienne.

Si tu cherche à faire un élément qui suit le joueur, tu peut utiliser les proportions des X, Y et Z pour savoir où le positionner.

Suffit de diviser chaque élément de la vitesse par la grandeur de la vitesse. Ensuite, tu multiplie par la distance désirée entre le joueur et ce qui le suit. Attention, tu dois le mettre derrière, je te laisse réfléchir à comment le faire. Indice: La différence est dans le signe du facteur par lequel tu multiplie chaque composante.

++Sim++





Hors ligne chneuls

  • *
  • Tueur
  • Messages: 62
    • Voir le profil
Re : [Demande Aide] Trouver les coordonées d'un pts
« Réponse #10 le: 22 Octobre 2010, 19:13:49 »
Ce que je veut faire c'est un système de caravane, et donc, j'avais besoin de pouvoir placé mon objet dans une demi sphère derrière la voiture mais en fonction de l'angle j'veut mettre en face une correspondance pour utiliser une fonction comme celle précédemment citée, qui va être utiliser dans le paramètre angle. Après il me suffisait de faire un p'tit calcul et de positionner l'attache de la caravane derrière la voiture.

J'ai un peu compris le cours sur wiki, je vais essayer de l'approfondir encore.. mais téta on peut vraiment pas le calculer avec le produits  cartésiens ?

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : [Demande Aide] Trouver les coordonées d'un pts
« Réponse #11 le: 23 Octobre 2010, 18:28:39 »
Salut,

j'y pense là, si tu veut vraiment tous les angles de la voiture, utilise la fonction GetVehicleRotationQuat

Il te faudra convertir en autre système d'angles (va voir sur le forum officiel) pour être capable de travailler avec.

Bonne chance

++Sim++





Hors ligne chneuls

  • *
  • Tueur
  • Messages: 62
    • Voir le profil
Re : [Demande Aide] Trouver les coordonées d'un pts
« Réponse #12 le: 24 Octobre 2010, 10:01:53 »
Wouah, Oo, j'avais jamais vu ça. Merci Sim. J'ai regardais sur le wiki, elle y est :D

Clique :D

Qu'elle est l'angle '' w '' ?
The first quaternion angle.. ? Mouais..

Sam.  :cheers

ps : En tapant ta fonction sur le forum sa-mp j'ai trouvé un post. Ou quelqu'un avait besoin de la même fonction que moi et j'ai trouvé ça.

GetXYZInFrontOfVehicle(vid, Float:distance, &Float:x, &Float:y, &Float:z)
{
    new Float:r[3];
    GetVehicleAngle(vid, r[0], r[1], r[2]);
    GetVehiclePos(vid, x, y, z);
    x += (distance * floatsin(-r[2], degrees));
    y += (distance * floatcos(-r[2], degrees));
    z += (distance * floatsin(-r[0], degrees));
    return 1;

}

stock GetVehicleAngle(vid, &Float:x, &Float:y, &Float:z)
{
    new
        Float:qw,
        Float:qx,
        Float:qy,
        Float:qz;

    GetVehicleRotationQuat(vid, qw, qx, qy, qz);
    QuatToEulers(qw, qx, qy, qz, x, y, z);
    return 1;
}

stock QuatToEulers(Float:qw, Float:qx, Float:qy, Float:qz, &Float:rX, &Float:rY, &Float: rZ)
{
/**Can be non-normalised/normalised Quaternion will return Eulers Angle*/
    new Float:sqw = qw*qw;
    new Float:sqx = qx*qx;
    new Float:sqy = qy*qy;
    new Float:sqz = qz*qz;
    new Float:unit = sqx + sqy + sqz + sqw; // if normalised is one, otherwise is correction factor
    new Float:test = qx*qy + qz*qw;


//Check for Gimbal Lock
    if (test > 0.499*unit) { // singularity at north pole
        rX = 2 * atan2(qx,qw);
        rZ = 3.1415926535/2;
        rY = 0;
        while(rX < 0.0) rX += 360.0; while(rX > 360.0) rX -= 360.0;
        while(rZ < 0.0) rZ += 360.0; while(rZ > 360.0) rZ -= 360.0;
        return 1;
    }

    if (test < -0.499*unit) { // singularity at south pole
        rX = -2 * atan2(qx,qw);
        rZ = -3.1415926535/2;
        rY = 0;
        while(rX < 0.0) rX += 360.0; while(rX > 360.0) rX -= 360.0;
        while(rZ < 0.0) rZ += 360.0; while(rZ > 360.0) rZ -= 360.0;
        return 1;
    }

//No Gimbal Lock
    rX = atan2(2*qy*qw-2*qx*qz , sqx - sqy - sqz + sqw);
    rZ = asin(2*test/unit);
    rY = atan2(2*(qx*qw-2)*(qy*qz) , -sqx + sqy - sqz + sqw);
    while(rX < 0.0) rX += 360.0; while(rX > 360.0) rX -= 360.0;
    while(rY < 0.0) rY += 360.0; while(rY > 360.0) rY -= 360.0;
    while(rZ < 0.0) rZ += 360.0; while(rZ > 360.0) rZ -= 360.0;
    return 1;
}

Il y aussi une include

et un pastebin :

J'ai envie de dire quel script choisir ? Ils ont tous des calculs différents Oo
« Modifié: 24 Octobre 2010, 10:17:30 par chneuls »

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Re : [Demande Aide] Trouver les coordonées d'un pts
« Réponse #13 le: 24 Octobre 2010, 18:45:53 »
Salut,

J'ai envie de dire quel script choisir ? Ils ont tous des calculs différents Oo

normalement, s'ils sont bons, tous ces calculs sont équivalents (toutefois certains peuvent être faits de façon plus efficace).
Choisi celui qui te plait le plus à l'utilisation.

++Sim++





Hors ligne chneuls

  • *
  • Tueur
  • Messages: 62
    • Voir le profil
Re : [Demande Aide] Trouver les coordonées d'un pts
« Réponse #14 le: 24 Octobre 2010, 18:58:30 »
Merci beaucoup Sim :)

Je vais prendre l'include moins de calcul ^^

« Modifié: 24 Octobre 2010, 19:07:09 par chneuls »