Bonjour,


j'ai une fonction qui me permet de creer un rectangle avec deux points de coordonnées x et Y : son coin superieur gauche et son coin inferieure droit.


VOici le schéma qui suit mes explication :




j'aimerais donc creer une fonction qui effectue la rotation de ce rectangle par son Coin inferieure gauche ( Donc le point B ).

Cet rotation s'effectue point par point, je calcule les nouvelles coordonnées du Point A puis celle Du point C , puis je retrace le rectangle ( d'ailleurs je ne sais pas si c'est une bonne méthode de prendre point a point .. )

en rouge est representé le nouveau rectangle.

jusqu'ici j'ai appliqué plusieurs methodes sans succée mon rectangle se trouvant deformé :/

j'ai appliqué une methode trigonométrique, si il y a une autre méthode qui marche je prend tout de suite :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 
proc rotater_(  entier  x , entier y , entier  point_de_rot_x, entier  point_de_rot_y, entier angle )
{
 
    entier  x_sauv  = x;
 
   entier r_angle = ((angle *3.1415) /360); //conversion en radian
 
 
 
    x_sauv = (  (x - point_de_rot_x) * cos (r_angle) ) -  (  ((y - point_de_rot_y) * (sin (r_angle))) + point_de_rot_x  );
 
    y =  (  (x - point_de_rot_x) * sin(r_angle) ) +  (  ((y - point_de_rot_y) * (cos (r_angle)))  + point_de_rot_y );
 
    x = x_sauv;
}
Ce code tourne bien le rectangle mais le deforme complétement ( agrandissement verticale par 7 ou 8 )




Voila merci