Question : La traduction coordonne d'un système du même rang à l'autre

Sur une feuille de papier : x du
The Augmente de gauche à droite le
(0.0) d'augmentations de y Du
The de haut en bas est au corner.

I ont deux points sur cette feuille : (x1, y1) et (x2, y1) (c.-à-d., ils sont tous deux sur le même trait horizontal) le

I photocopient maintenant cette feuille. Pendant la photocopiage, le papier original décalé légèrement, et tournent également légèrement. En conséquence, mes deux points originaux sont maintenant devenus (sur cette nouvelle feuille de papier) :
(x3, y3) et (x4, y4). le

Now, donné un point (a1, b1) sur la feuille de papier originale, que ses coordonnées seraient-elles sur la nouvelle feuille de papier ? le

I a pensé que j'avais dérivé le formulat correct pour ceci, mais je semble toujours être quelques Pixel off.

Thanks.
class= de

Réponse : La traduction coordonne d'un système du même rang à l'autre

Vous avez probablement déjà dérivé les équations correctes, mais nous laisser passent par lui de toute façon.

Vous voulez une transformation rigide qui traduit (x1, y1) (x3, y3), et (x2, y1) à (x4, y4).

Nous pouvons penser à la transformation rigide comme traduction, suivi d'une rotation.  Nous commencerons par une traduction à la laquelle se déplace (x1, y1) (x3, y3).  C'est facile :

(a, b) ---> (a + x3 - x1, b + y3 - y1)

fera le tour.

Maintenant, nous voulons une transformation à qui tourne autour du point (x3, y3) de sorte que le point à l'origine (x2, y1), qui a été tracé plus de (x2 + x3 - x1, y3), tourne plus de jusqu'(x4, y4).

Établissons l'angle de cette rotation.  Se rappeler que la direction d'un vecteur (x, y) peut être déterminé par l'atan2 (y, x) fonction (la plupart des bibliothèques mathématiques ont un atan2 qui détermine le quart de cercle du vecteur comme son arctan - n'emploient pas l'atan simple (y/x) fonction pour ceci).

Ainsi toute la rotation est juste la différence entre les deux directions angulaires, celle est

thêta = atan2 (y4 - y3, x4 - x3) - atan2 (x2 - x1, 0)

(se rappeler que nous avons besoin de vecteurs qui commencent au point (x3, y3), ainsi ceci doit être soustrait de tous les deux points).

Ok, maintenant, nous appliquons simplement une opération de rotation.

(c, d) -----> (c * cos (thêta) - d * péché (thêta), c * péché (thêta) + d * cos (thêta))

là où (c, d) = (a + x3 - x1, b + y3 - y1), d'avant.


Si vous constatez que vous pourriez ne pas être en ligne par quelques Pixel près du bord de votre image, vous souffrez d'un problème de résolution : les endroits vrais de vos deux points ne sont pas vraiment (x3, y3) et (x4, y4), mais ceux sont juste les plus étroits coordonne.  Ceci n'affecte pas la traduction, puisque la même erreur (de secondaire-Pixel) obtient juste propagée dans toute l'image.  Mais pour la rotation, une petite erreur dans la rotation près (x4, y4) pourrait se transformer en plus grande erreur plus loin parti.  Fondamentalement, l'erreur sera quelque chose autour de la résolution de votre image divisée par l'ABS (x2 - x1).  Si x2 et x1 sont étroits ensemble, vous pouvez voir pourquoi vous pourriez ne pas être en ligne par quelques Pixel.

Il n'y a vraiment aucune bonne manière de corriger pour ceci, autre que l'obtention plus précise coordonne pour (x3, y3) et (x4, y4), ou obtenant des tracés pour plus de deux points, et faisant un de l'ajustement normal sur la traduction et la rotation que vous voulez.

Espérer que ceci aide !
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us