Daje to dwa zestawy, każdy z trzech równań w 3 zmiennych:
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'
Wystarczy użyć dowolnej metody rozwiązywania równań jest najłatwiejszy w danej sytuacji (nie jest nawet trudno rozwiązać te „przez dłoń"). Wtedy macierz transformacji jest po prostu ((a, b, c) (d, e, f)).
...
Właściwie, to jest zbyt uproszczony i zakłada aparat wskazał na swojego pochodzenia 3D system i nie perspektywę współrzędnych.
Do widzenia, macierz transformacji działa bardziej jak:
(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;
ale macierz 4x3 jest bardziej ograniczone niż 12 stopni swobody, ponieważ powinniśmy mieć
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
Więc powinieneś mieć 4 wskazuje na 8 równań, które obejmują 6 zmiennych dla pozycji i kąta kamery oraz 1 więcej dla skalowania punktów widokowych 2D, ponieważ będziemy w stanie wyeliminować współrzędne "centrum" (xc, yc).
Więc jeśli masz 4 punkty i przekształcasz swoje punkty widzenia 2D w stosunku do środka ekranu, możesz uzyskać 14 równoczesnych równań w 13 zmiennych i rozwiązać.
Niestety, sześć równań nie ma równań liniowych. Na szczęście wszystkie zmienne w tych równaniach są ograniczone do wartości od -1 do 1, więc nadal możliwe jest rozwiązanie równań.
To nie jest moja praca domowa! –