->
||AB|| : Ca c'est la norme (longueur) du vecteur defini par les points A et B.
Et c'est égal à la racine carrée de la somme des carrés des différences des coordonnées des points A et B.
T'as rien compris ? Normal, en français c'est toujours moins clair.
Mais ce n'est pas grave, je vais mettre ça en pawn (même si j'ai dit que je ne posterais pas de code) :
NormeAB = floatsqroot ((xb-xa)*(xb-xa) + (yb-ya)*(yb-ya));
Ensuite, je dis que le sinus de l'angle que l'on cherche est la division de (yb-ya) par la norme du vecteur AB.
Soit :
SinAngle = (yb-ya)/NormeAB;
Puis, pour trouver l'angle, il faut prendre l'arcsinus du sinus que l'on vient de trouver :
Angle = asin (SinAngle);
Et enfin, il faut appliquer les corrections dues à l'inversion de l'axe des Y (équivaut à une symétrie sur l'axe des X) :
if (xa > ab)
{
Angle = 180.0 - Angle;
}
else
{
Angle = Angle - 90.0;
}
Il suffit alors d'utiliser la valeur Angle trouvée dans un appel à SetVehiculeZAngle.
Dans les calculs ci-dessus, toutes les variables sont de Float: et le premier CP à pour coordonnées (xa, ya, za) et le deuxième (xb, yb, zb).
Maintenant, il te reste à définir une grille de départ, car Yrace positionne les joueurs aléatoirement sur le CP de départ.
Pour ça, je te laisse réfléchir (ou abandonner). Attention toutefois, la grille de départ doit subir une rotation de l'angle que l'on a trouvé ci-dessus.
Bon courage. Et vive les maths ... :-*
++
Syg