Blade_PerspectiveCamera_ViewAxo_8000_8000.mws

> with(linalg):
 

The matrix extracted out of the picture: 

> M:=array(1..4,1..4,[ [ 0.881382, 2.206100, 0.429785,-210.555145 ],
                    [-0.979837,-0.038320, 2.206100,  57.695831 ],
                    [-2.096310, 1.015471,-0.913436, 187.580612 ],
                    [-0.837850, 0.405862,-0.365080, 306.347992 ]]);
 

(Typesetting:-mprintslash)([M := matrix([[.881382, 2.206100, .429785, -210.555145], [-.979837, -0.38320e-1, 2.206100, 57.695831], [-2.096310, 1.015471, -.913436, 187.580612], [-.837850, .405862, -.365... 

Here the With and Height of the Picture: 

> w,h := (8000,8000);
 

(Typesetting:-mprintslash)([w, h := 8000, 8000], [8000, 8000]) 

The point coordinates of the location you search in the picture: 

> px,py,pz := (5.0, 125.0, 15.0);
 

(Typesetting:-mprintslash)([px, py, pz := 5.0, 125.0, 15.0], [5.0, 125.0, 15.0]) 

The matrix multiplication: 

> Q := multiply(M,array(1..4,[px, py, pz, 1]));
 

(Typesetting:-mprintslash)([Q := vector([76.0610400, 81.0981460, 290.3313970, 347.4152920])], [table( [( 1 ) = 76.0610400, ( 2 ) = 81.0981460, ( 3 ) = 290.3313970, ( 4 ) = 347.4152920 ] )]) 

> k := min(w,h);
 

(Typesetting:-mprintslash)([k := 8000], [8000]) 

> S:= multiply( array(1..3,1..3,[[k,0 ,w  ],
                              [0,-k,h  ],
                              [0, 0,1.0]]), array(1..3,[Q[1]/Q[4], Q[2]/Q[4], 1]) );
 

(Typesetting:-mprintslash)([S := vector([9751.472471, 6132.537102, 1.0])], [table( [( 1 ) = 9751.472471, ( 2 ) = 6132.537102, ( 3 ) = 1.0 ] )]) 

> x := S[1] * 0.5;
 

> y := S[2] * 0.5;
 

(Typesetting:-mprintslash)([x := 4875.736236], [4875.736236]) 

(Typesetting:-mprintslash)([y := 3066.268551], [3066.268551]) 

> px,py,pz := (18.0, 118.5, 9.0);
 

(Typesetting:-mprintslash)([px, py, pz := 18.0, 118.5, 9.0], [18.0, 118.5, 9.0]) 

The matrix multiplication: 

> Q := multiply(M,array(1..4,[px, py, pz, 1]));
 

(Typesetting:-mprintslash)([Q := vector([70.6006460, 55.3727450, 261.9594215, 336.0756190])], [table( [( 1 ) = 70.6006460, ( 2 ) = 55.3727450, ( 3 ) = 261.9594215, ( 4 ) = 336.0756190 ] )]) 

> k := min(w,h);
 

(Typesetting:-mprintslash)([k := 8000], [8000]) 

> S:= multiply( array(1..3,1..3,[[k,0 ,w  ],
                              [0,-k,h  ],
                              [0, 0,1.0]]), array(1..3,[Q[1]/Q[4], Q[2]/Q[4], 1]) );
 

(Typesetting:-mprintslash)([S := vector([9680.589534, 6681.897957, 1.0])], [table( [( 1 ) = 9680.589534, ( 2 ) = 6681.897957, ( 3 ) = 1.0 ] )]) 

> x := S[1] * 0.5;
 

(Typesetting:-mprintslash)([x := 4840.294767], [4840.294767]) 

> y := S[2] * 0.5;
 

(Typesetting:-mprintslash)([y := 3340.948978], [3340.948978]) 

>