2010-09-07 5 views
1

Je fais pivoter une image autour de son point central, mais j'ai besoin de suivre un emplacement sur l'image pendant sa rotation.Rotation d'image et emplacements de suivi

Vu:

  1. origine à 0,0
  2. Largeur de l'image et de la hauteur de 100, 100
  3. point de rotation à C (50,50)
  4. Angle de "a" (par exemple 90 degrés dans cet exemple)
  5. point P commence à (25,25) et après la rotation, il est à Pnew (75,25)

alt text

Je n'ai pas touché trig en 20 ans, mais devinant la formule est simple ...

Répondre

2

Je n'ai pas touché trig en 20 ans, mais devinant la formule est simple ...

Oui, assez. Pour mapper le point (x1, y1) par rotation autour de l'origine:

x2 = cos(a) * x1 + sin(a) * y1; 
y2 = cos(a) * y1 - sin(a) * x1; 

... alors que vous venez d'abord besoin de traduire à l'origine à savoir (-50, -50) dans votre exemple et retraduire après rotation.

x2 = cos(a) * (x1 - 50) + sin(a) * (y1 - 50) + 50; 
y2 = cos(a) * (y1 - 50) - sin(a) * (x1 - 50) + 50; 

... Ou quelque chose comme ça. (Vous pouvez générer une matrice qui fera les trois transformations, je vais laisser ça pour une autre réponse ou comme un exercice ...)

+0

Merci beaucoup. Au début, je ne pensais pas que cela fonctionnait correctement mais hélas, les angles de géométrie sont effectivement antihoraires. Mon application traite tous les angles dans le sens des aiguilles d'une montre. Juste besoin d'ajouter un couple de signes négatifs. – andleer

Questions connexes