Rotation d'un point par rapport a un point qqonque
Forum Etudes / Travail : Rotation d'un point par rapport a un point qqonque
Bonsoir a tous,
J'aurais besoin de quelques rappels mathématiques.
Dans un plan a 2 dimensions (x,y). J'ai 2 points A de coordonnées (x1,y1) et B de coordonnées (x2,y2) dans un plan d'origine O(x3,y3) (Simplement pour dire que ce n'est pas une rotation de l'axe).
Ces 2 points peuvent etre reliés par une droite qui sera le rayon du cercle de rotation.
J'aurais besoin de faire pivoter le point B d'un angle Alpha (connu disons 20° par exemple) par rapport au point A pour arriver au point B'(x2',y2').
J'aurais besoin (très rapidement si cela est possible), de connaitre l'équation qui permet la rotation du point B par rapport au point A d'un angle Alpha.
(Attention, pas une rotation de l'axe O, dans ce cas la les équations seraient:
x2'=x2*(cos(Alpha))-y2*sin(Alpha);
y2'=x2*(cos(Alpha))+y2*cos(Alpha);
)
Merci beaucoup
Thomas
PS: même une page web donnant une esquisse de solution serait le bienvenue car je n'ai trouvé qu'un rotation par rapport a l'axe d'origine.
Merci
------
"Education is our passport to the future, for tomorrow belongs to the people who prepare for it today" (Malcolm X)
Il suffit de translater ton repère en A, apres il te reste qu'à trouver avec tes formules les coordonnées de B', puis de revenir dans l'ancienne base par translation "inverse"...Ceci se formalise tres bien avc les matrices mais cet outil n'est pas non plus nécessaire.
Il faut donc :
écrire les coordonnées de B dans le repere A
trouver les coordonnées de B' dans le repère A (avec tes formules)
mettre les coordonnées de B' dans le repère initial (il suffit de translater de vecteur AO).
Répondre à abel_b
Je te remercie, m'ais c'est encore un peu flou pour moi, je n'ai pas touché a la trigo et surtout aux repères orthonormés depuis plusieurs années. Pourrais-tu me rappeler comment effectuer une translation du repère lui même? LA méthode avec les matrices me convient parfaitement ;-)
En fait je dois faire un programme en Matlab qui puisse faire tourner une image (MATRICE) d'un angle défini a partir d'un point quelconque de cette matrice (défini aussi). Voila pourquoi j'ai besoin de connaitre la formule qui permet de faire tourner un point B quelconque d'un angle Alpha par rapport au point A. Après je n'aurais qu'a appliquer cette formule a tous les pixels de ma matrice.
Merci beaucoup en tout cas, j'ai déja des premiers éléments de réponse.
Thomas
PS: Si tu en sais plus je suis preneur ;-)
------
"Education is our passport to the future, for tomorrow belongs to the people who prepare for it today" (Malcolm X)
Répondre à totoc1001@IDN
Je suppose que ta base reste fixe (seule l'origine du repère change et pas les vecteurs unitaires)
Je peux te donner la formule :
soit un repère (O,x,y)
centre de rotation C(a,b)
point M(x,y) à faire tourner
alpha = angle de rotation
M'(x',y') image de M par rotation(C,alpha) dans le repère (O,x,y)
alors CM' = R*CM (où CM et CM' sont des vecteurs)
où R est la matrice de rotation d'angle alpha, autrement dit :
CM=(x-a;y-b)
CM'=(x'-a,y'-b)
R=
cos(alpha) sin(alpha)
-sin(alpha) cos(alpha)
ce qui donne :
(x';y') = R*(x-a,y-b) + (a,b) où les couples sont des vecteurs donc à representer en tant que matrice 2,1
EDIT : apres on peut faire la meme chose pour avoir les coordonnées dans une autre base, pour réaliser une homotetie, une affinité orthogonale, une symétrie et toute autre transformation géométrique linéaire.
Message édité par abel_b le 14-11-2006 à 18:41:47
Répondre à abel_b
Merci beaucoup pour ta reponse.
Dans le cas ou le rayon du cercle de rotation ne soit pas unitaire, suffirait-il simplement de multiplier la matrice
R=
|cos(alpha) sin(alpha) |
|-sin(alpha) cos(alpha) |
par un coefficient correspondant au rayon du cercle de rotation?
Et pourrais-tu me confirmer que nous obtiendrions bien les equations suivantes:
|cos(alpha) sin(alpha) |
x’=Rayon* (x-a) *|-sin(alpha) cos(alpha) | + a
|cos(alpha) sin(alpha) |
y’=Rayon* (y-b) *|-sin(alpha) cos(alpha) | + b
Merci beaucoup pour ton aide
Thomas
Pas besoin de multiplier par R !!!
la rotation n'affecte que les vecteurs donc la norme est conservée donc si ton "cercle de rotation" est de rayon R, alors CM et CM' sont de norme R donc pas de multiplication...On multiplierais par R si on voulais appliquer une homotétie composée d'une rotation au vecteur initial ce qui reviendrais à "grossir" ton image et de la faire tourner.
PS : il faut d'abord ecrire la matrice*vecteur et non vecteur*matrice...en écrivant tes vecteurs en collone.
PS' : attention tu as écris x'=..... qui est un vecteur donc tu as marqué : reel=vecteur, il ne faut pas considérer x' et y' séparément mais comme étant un vecteur.
Message édité par abel_b le 14-11-2006 à 20:06:00
Répondre à abel_b
| abel_b a écrit :
|
Comme ceci?
|cos(alpha) sin(alpha)|
x’=|sin(alpha) cos(alpha) |* (x-a) + a
|cos(alpha) sin(alpha) |
y’=|-sin(alpha) cos(alpha) |*(y-b) + b
La j'ai les coordonnées de mon point résultant c'est bien ca?
------
"Education is our passport to the future, for tomorrow belongs to the people who prepare for it today" (Malcolm X)
Répondre à totoc1001@IDN
Non car ca n'a aucun sens d'additionner une matrice et un scalaire :
il faut faire :
|x| = R*|x-a| + |a|
|y| |y-b| |b|
(matriciellement)
où R est la matrice 2x2 de rotation d'angle alpha
Message édité par abel_b le 14-11-2006 à 21:35:36
Répondre à abel_b
| abel_b a écrit : Non car ca n'a aucun sens d'additionner une matrice et un scalaire :
|
Je te remercie sincèrement, ca marche trop bien. Merci
Je t'ai déja vu répondre plusieurs fois a des questions de math je peux te demander ce que tu fais?
Si tu es prof de math... c'est bon a savoir lol
Merci en tout cas.
Bye
Thomas
------
"Education is our passport to the future, for tomorrow belongs to the people who prepare for it today" (Malcolm X)
Répondre à totoc1001@IDN
Je suis étudiant en maths spé (bac+2)
Répondre à abel_b
| abel_b a écrit : Je suis étudiant en maths spé (bac+2) |
C'est bon a savoir ca ;-)
Bravo pour ta Spé, c'est pas facile de passer la sup ;-)
Bye
Thomas
------
"Education is our passport to the future, for tomorrow belongs to the people who prepare for it today" (Malcolm X)
Répondre à totoc1001@IDN
Il y a 1818 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
