Sie abgeleitet vermutlich bereits die korrekten Gleichungen n, aber uns lassen durchlaufen es irgendwie.
Sie wünschen eine steife Umwandlung, die (x1, y1) (x3, y3) übersetzt, und (x2, y1) zu (x4, y4).
Wir können an die steife Umwandlung als Übersetzung denken, gefolgt von einer Umdrehung. Wir beginnen mit einer Übersetzung, die (x1, y1) bewegt auf (x3, y3). Dieses ist einfach:
(a, B) ---> (a + x3 - x1, b + y3 - y1)
tut den Trick.
Jetzt wünschen wir eine Umwandlung, der um den Punkt (x3, y3) damit der Punkt ursprünglich an (x2, y1) dreht, das vorbei abgebildet worden (x2 + x3 - x1, y3), dreht vorbei zu (x4, y4).
Uns den Winkel dieser Umdrehung ausarbeiten lassen. Zurückrufen dass die Richtung eines Vektors (x, y) kann durch das atan2 (y festgestellt werden, x) Funktion (die meisten mathematischen Bibliotheken haben ein atan2, das den Quadranten des Vektors sowie sein arctan feststellt - verwenden nicht das einfache atan (y/x) Funktion für dieses).
So ist die Gesamtumdrehung gerade der Unterschied zwischen den zwei eckigen Richtungen, der ist
Theta = atan2 (y4 - y3, x4 - x3) - atan2 (x2 - x1, 0)
(daran erinnern, dass wir Vektoren benötigen, die am Punkt (x3, y3) beginnen, also muss dieser von beiden der Punkte subtrahiert werden).
O.K. jetzt anwenden wir einfach einen Umdrehungsbetrieb.
(c, d) -----> (c * Lattich (Theta) - d * Sünde (Theta), c * Sünde (Theta) + d * Lattich (Theta))
wo (c, d) = (a + x3 - x1, b + y3 - y1), von vorher.
Wenn Sie finden, dass Sie durch einige Pixel nahe dem Rand Ihres Bildes aus sein konnten, leiden Sie unter einem Entschließungproblem: die zutreffenden Positionen Ihrer zwei Punkte sind nicht wirklich (x3, y3) und (x4, y4), aber die sind gerade koordiniert das nähste. Dieses beeinflußt nicht die Übersetzung, da die gleiche (Vor-pixel) Störung gerade während des Bildes fortgepflanzt erhält. Aber für die Umdrehung, könnte eine kleine Störung in der Umdrehung nahe (x4, y4) zu eine größere Störung weit weg machen. Im Allgemeinen ist die Störung etwas um die Entschließung Ihres Bildes, das durch ABS (x2 - x1) geteilt. Wenn x2 und x1 zusammen nah sind, können Sie sehen, warum Sie durch einige Pixel aus sein konnten.
Es gibt wirklich keine gute Weise, für dieses zu beheben, anders als das Erhalten genauer koordiniert für (x3, y3) und (x4, y4), oder, Kartenaufnahmen für mehr als zwei Punkte erhalten, und einen besten Sitz auf der Übersetzung und der Umdrehung tuend, die Sie wünschen.
Hoffen, dass dieses hilft!