Tourner un Point.

Résolu
Signaler
Messages postés
9
Date d'inscription
lundi 3 juillet 2006
Statut
Membre
Dernière intervention
12 septembre 2006
-
Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
-
Salut a tout le monde!


Je dois tourner un Point. J'ai une ligne qui passe pour le centre d'un
cercle et les points sont: CX, CY (centre du cercle), X, Y (points sur
le cercle).


Je veux tourner le point (X, Y) de 30° mais en principe je n'ai pas le degré de ma ligne.


Je sais que je dois utiliser une "matrix rotate":


double angle = 3.14159263 / 6; //30°


double rotated_x = cos(angle)*x - sin(angle)*y;

rouble rotated_y = sin(angle)*x + cos(angle)*y;


Ca ne marche pas bien. Je n'ai pas le coin d'origine de mon point (X,Y)....Cos (..et Sin) doit prendre angle+origine_angle, non?


Avez-vous quelque ideé?


Merci!


Dario

6 réponses

Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2
Lu,
tien je sais pas si on peut appeller ca une idee ^^
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define pi 3.14159
int main()
{
    double Cx=0.0,Cy=0.0,x_dep=2.0,y_dep=0.0;   
    double x = x_dep - Cx;
    double y = y_dep - Cy;
    double angle = pi;
    double dist_x = Cx-x;//on devrait faire abs mais inutile pour un ²
    double dist_y = Cy-y;//pareil
    double rayon = sqrt(dist_x*dist_x+dist_y*dist_y);
    double xb = cos(angle)*rayon + Cx;
    double yb = sin(angle)*rayon + Cy;
    printf("%lf %lf \n",xb,yb);
    return 0;
}

si tu comprens pas pose des questions ^^
//pas besoin de matrice rotate..
Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2
Ah j'oubliais ... angle en radian ..
(
sinon

#define conversion pi/180
et angle = 30(en degre) * conversion ;

)
Messages postés
9
Date d'inscription
lundi 3 juillet 2006
Statut
Membre
Dernière intervention
12 septembre 2006

Merci beaucoup! An utilisant ton code et an utilisant ça
http://www.vbfrance.com/code.aspx?ID=36338 en VB (je le traduit en
C++...) maintenent marche bien!


Ancore merci!


P.S. (mais tu a vraiment 16 ans? :D)


P.S. II (exscusez-moi pour mon francais si pire, mais je suis italien :D)
Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2
mais tu a vraiment 16 ans? :D)
oui, ca t'étonne ^^?
 ( parce que niveau math c'est pas tres complexe.. et niveau algo encore moins;.. ^^ )

louis

P.S. II (exscusez-moi pour mon francais si pire, mais je suis italien :D)
a part quelque a qui doivent etre des e et vice versa , ca va .. ( ca ne se remarque pas.. )
Messages postés
9
Date d'inscription
lundi 3 juillet 2006
Statut
Membre
Dernière intervention
12 septembre 2006

No, ca ne m'étonne pas, mais la question est seulement que en
italie, a 16 ans, c'est trés difficile trouver des garçons qui
programme....maleuresement nous n'avons pas une bonne culture
informatique...


:D Ancore merci!
Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2
Euh j'ai oublié de preciser , l'angle est absolu , donc par rapport a (Cx+rayon;Cy) ..