die Punkte [P1, P2, P3, P4]
sein und lassen annehmen, dass sie in [Q1, Q2, Q3, Q4]
durch eine affine Transformation von der Form überführt werden, wo x -> Mx + b
M
eine 2x2
Matrix ist und b
ist ein konstanter Vektor. Die Idee ist, M
zu finden und die Transformation auf P
anzuwenden, um Q
zu erhalten.
Lassen Sie v1 = P2 - P1
, v2 = P3 - P1
, w1 = Q2 - Q1
, w2 = Q3 - Q1
. Dann ist M
die lineare Transformation, die [v1, v2]
auf [w1, w2]
gilt. Ein Weg M
zu finden ist, durch die Berechnung des Matrizenproduktes
M = S * T
wo S
ist die 2x2
Matrix, deren Spalten die Vektoren w1
und w2
und T
ist die inverse der Matrix, deren Spalten und v1
v2
.
In Bezug auf die Verschiebungsvektor b
, kann es als
b = Q1 - M * P1
Die Klärung ist hier berechnet werden, dass alles dies nur, wenn die vierten Punkte stehen im Einklang mit der Transformation, dh wenn
M * P4 + b = Q4
korrekt ist
ansonsten ist das Q
-quadrilateral keine affine Transformation des P
-quadrilateral.
Dies ist nur möglich, wenn (mindestens) die Punkte in einem Viereck mit den entsprechenden Punkten in dem anderen Viereck verknüpft sind. Einfaches Beispiel, was ist, wenn ein Quadrilateral ein Quadrat ist und das andere ein Diamant ist und der Punkt auf dem Quadrat, nach dem Sie suchen, in der Nähe der oberen linken Ecke des Quadrats ist. Soll die Antwort in der Nähe der linken Ecke des Diamanten oder der oberen Ecke sein? –
@CharlesBretana Nun, vielleicht ist eine andere Möglichkeit, darüber nachzudenken, das zweite Viereck ist eine transformierte (skalierte, bewegte, verzerrte, rotierte usw.) Version des ersten Vierecks. Würde das das Problem lösbarer machen? –
Ja, wenn für alle Punkte im ursprünglichen Viereck (oder mindestens drei) angegeben wird, an welchen Punkt des transformierten Vierecks der ursprüngliche Punkt transformiert wurde. –