[Divers] Comment faire une rotation autour d'un point ?

Comment faire une rotation autour d'un point ? [Divers] - Divers - Programmation

Marsh Posté le 04-05-2003 à 23:33:26    

Question qui va en faire rire plus d'un mais bon j'ai jamais ete tres bon en maths, et j'ai oublié ce truc la, donc voilà mon problème...
 
Soit un point x1,y1 (le centre)
Soit un point x2,y2 (le point en rotation autour de l'autre)
Soit d1 la distance entre le centre et le point en rotation
 
Quelle formule je dois appliquer pour faire executer une rotation de X degres à mon point x2,y2 ???
 

Reply

Marsh Posté le 04-05-2003 à 23:33:26   

Reply

Marsh Posté le 04-05-2003 à 23:39:01    

((x2*y2)² /(y1-d1(y2+y1-x1))) * |x1+x2|
 
rien de plus simple  :whistle:  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
[:ddr555]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 04-05-2003 à 23:45:31    

simogeo a écrit :

((x2*y2)² /(y1-d1(y2+y1-x1))) * |x1+x2|
 
rien de plus simple  :whistle:  
 


 
Bah oui je sais bien c'est pas compliqué mais c loin pour moi...
 
Sinon il manque pas un truc la ? ou est ce que tu prends en compte X (le nombre de degres de la rotation ) ?

Reply

Marsh Posté le 04-05-2003 à 23:50:06    

d1 = sqrt( (x1-x2)² + (y1-y2)²)
 
x2 =  d1 * cos(X) + x1
y2 =  d1 * sin(X) + y1
 
 
 
Remarque:
Si le repère était centré en 0,  d1 = sqrt(x2²+y2²)
 
Il n'y aurais donc qu'une translation à faire ensuite, ici.

Reply

Marsh Posté le 04-05-2003 à 23:53:35    

El_ShAmAn___ a écrit :

d1 = sqrt( (x1-x2)² + (y1-y2)²)
 
x2 =  d1 * cos(X) + x1
y2 =  d1 * sin(X) + y1
 
 
 
Remarque:
Si le repère était centré en 0,  d1 = sqrt(x2²+y2²)
 
Il n'y aurais donc qu'une translation à faire ensuite, ici.


 
Ok merci beaucoup, c'est bien plus clair comme ca... :jap:

Reply

Marsh Posté le 26-06-2015 à 15:18:00    

Pour ceux qui font du java, j'ai une méthode qui fonctionne à merveille:
("p1" étant le point donné, "center" étant le centre de la rotation et "angle" est l'angle de la rotation)
 
 
public static Point pointRotation(Point p1, Point center, double angle){
   
  double dirP1 = Math.atan2(center.y-p1.y, center.x-p1.x);
   
  double dirP2 = dirP1 + angle;
   
  double dist = p1.distance(center);
   
  return new Point((int)(center.x + dist*Math.cos(dirP2)), (int)(center.y + dist*Math.sin(dirP2)));
 }
 

Reply

Marsh Posté le 26-06-2015 à 20:30:24    

C'est vrai que les intervenants attendaient ta réponse... :sleep:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed