Tourner un Point.

Résolu
D0X Messages postés 9 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 12 septembre 2006 - 12 sept. 2006 à 19:39
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 - 13 sept. 2006 à 07:45
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

rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
12 sept. 2006 à 21:16
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..
3
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
12 sept. 2006 à 21:19
Ah j'oubliais ... angle en radian ..
(
sinon

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

)
0
D0X Messages postés 9 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 12 septembre 2006
12 sept. 2006 à 21:48
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)
0
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
12 sept. 2006 à 22:13
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.. )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
D0X Messages postés 9 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 12 septembre 2006
12 sept. 2006 à 22:43
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!
0
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
13 sept. 2006 à 07:45
Euh j'ai oublié de preciser , l'angle est absolu , donc par rapport a (Cx+rayon;Cy) ..
0
Rejoignez-nous