Page 1 sur 1

Et la trigo alors

Posté : mer. 12 mai 2010, 16:34
par =[TTK]= Freshmeat
Etant une vraie buse en trigonométrie, je sollicite votre bienveillance, votre aide et votre savoir.

Quelqu'un pourrait-il me donner les formules mathématiques et magiques permettant de créer un déclencheur dont on connait la position de deux coins opposés dans la longueur et qui doit faire 1 mètre de large ?

Note : Je n'ai rien contre les buses, j'aime bien les oiseaux : c''est l'expression qui est comme ça, je n'y peux rien.

Re: Et la trigo alors

Posté : mer. 12 mai 2010, 17:45
par =[TTK]= Memphis007
C'est pas que je veux pas t'aider, mais j'ai rien capté :mrgreen:

Re: Et la trigo alors

Posté : ven. 14 mai 2010, 09:43
par =[TTK]= Freshmeat
C'est pas grave, je crois que j'ai trouvé un solution à mon problème.
Je vous tiendrai au courrant dans ma prochaine mission.

En plus M. Le_Culto a posté la réponse :
Avec "a" et "b" les marqueurs opposés:

Code : Tout sélectionner

// Largeur du marqueur, en mètres
_largeur = 10;
// Calcul de la longueur du marqueur (Pythagore)
_longueur = sqrt ( ((getmarkerpos "b" select 0) - (getmarkerpos "a" select 0))^2
         + ((getmarkerpos "b" select 1) - (getmarkerpos "a" select 1))^2 );

// Calcul du vecteur AB, qui fait la longueur du rectangle
_vecteur = [ (getmarkerpos "b" select 0) - (getmarkerpos "a" select 0) ];
_vecteur = _vecteur + [ (getmarkerpos "b" select 1) - (getmarkerpos "a" select 1) ];

// Calcul de l'angle du vecteur Ab
_angle1 = (_vecteur select 0) atan2 (_vecteur select 1) + 360;
_angle1 = _angle1 mod 360;

// Calcul de l'angle du vecteur AC (angle de AB + 90°)
_angle2 = _angle1 + 90;
_angle2 = _angle2 mod 360;

// Calcul des coordonnées du point C
_x = (sin _angle2) * _largeur + (getmarkerpos "a" select 0);
_y = (cos _angle2) * _largeur + (getmarkerpos "a" select 1);

// Calcul des coordonnées du centre du rectangle
_centre = [ ( _x + (getmarkerpos "b" select 0) ) /2 ];
_centre = _centre + [ ( _y + (getmarkerpos "b" select 1) ) /2 ];

// On positionne le point C
"c" setmarkerpos [_x,_y];

// On positionne le rectangle au centre
"d" setmarkerpos _centre;
// On oriente correctement le rectangle
"d" setmarkerdir _angle1;
// On donne les bonnes dimensions au rectangle
"d" setmarkersize [_largeur/2, _longueur/2];
Et le sujet complet ici