Dies gibt Ihnen zwei Sätze, die jeweils von drei Gleichungen in drei Variablen:
a*x0+b*y0+c*z0 = x0'
a*x1+b*y1+c*z1 = x1'
a*x2+b*y2+c*z2 = x2'
d*x0+e*y0+f*z0 = y0'
d*x1+e*y1+f*z1 = y1'
d*x2+e*y2+f*z2 = y2'
Verwenden Sie einfach, was Methode zur Lösung simultane Gleichungen ist am einfachsten in Ihrer Situation (es nicht einmal schwierig ist, diese zu lösen „durch Hand"). Dann ist Ihre Transformationsmatrix einfach ((a, b, c) (d, e, f)).
...
Eigentlich, das ist zu stark vereinfachte und nimmt eine Kamera am Ursprung des 3D-Koordinatensystem und keine Perspektive hingewiesen.
Für Perspektive arbeitet die Transformationsmatrix mehr wie:
(a, b, c, d) (xt)
(x, y, z, 1) (e, f, g, h) = (yt)
(i, j, k, l) (zt)
(xv, yv) = (xc+s*xt/zt, yc+s*yt/zt) if md < zt;
aber die 4x3-Matrix ist mehr eingeschränkt als 12 Freiheitsgrade, da wir
a*a+b*b+c*c = e*e+f*f+g*g = i*i+j*j+k*k = 1
a*a+e*e+i*i = b*b+f*f+j*j = c*c+g*g+k*k = 1
So sollten Sie wahrscheinlich 4 haben sollte Punkte, um 8 Gleichungen zu erhalten, um die 6 Variablen für Kameraposition und -winkel und 1 mehr für die Skalierung der 2D-Ansichtspunkte abzudecken, da wir in der Lage sein werden, die "Mittelpunkt" -Koordinaten (xc, yc) zu eliminieren.
Wenn Sie also 4 Punkte haben und Ihre 2-D-Ansichtspunkte relativ zur Mitte Ihrer Anzeige transformieren, können Sie 14 simultane Gleichungen in 13 Variablen erhalten und lösen.
Leider sind sechs der Gleichungen keine linearen Gleichungen. Glücklicherweise sind alle Variablen in diesen Gleichungen auf die Werte zwischen -1 und 1 beschränkt, so dass es immer noch wahrscheinlich ist, die Gleichungen zu lösen.
Dies ist nicht meine Hausaufgaben! –