これにより、3 つの変数の 3 つの方程式のそれぞれの 2 つのセットが得られます。
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'
状況に応じて連立方程式を解く最も簡単な方法を使用してください (これらを「手で」解くのは難しくありません)。次に、変換行列は ((a,b,c)(d,e,f)) です。
...
実際には、これは単純化しすぎており、カメラが 3D 座標系の原点を指しており、視点がないことを前提としています。
観点から見ると、変換マトリックスは次のように機能します。
( 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;
しかし、4x3 行列は 12 自由度よりも制約があります。
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
したがって、「中心」座標 (xc,yc )。
したがって、4 つの点があり、2 次元の視点をディスプレイの中心に相対的に変換すると、13 の変数で 14 の連立方程式を取得して解くことができます。
残念ながら、6 つの方程式は線形方程式ではありません。幸いなことに、これらの方程式のすべての変数は -1 から 1 の間の値に制限されているため、おそらく方程式を解くことは可能です。