Blade_OrthographicCamera_ViewAxo_3000_1000.mws

> with(linalg):
 

Warning, the protected names norm and trace have been redefined and unprotected 

The matrix extracted out of the picture: 

> M:=array(1..4,1..4,[ [0.003317 , 0.008303, 0.001618,-0.792450],
                    [-0.003688,-0.000144, 0.008303, 0.217144],
                    [-0.007613, 0.003688,-0.003317, 0.281533],
                    [0.0      , 0.0     , 0.0     , 1.0     ]]);
 

M := Matrix(%id = 145939588) 

Here the With and Height of the Picture: 

> w,h := (3000,1000);
 

w, h := 3000, 1000 

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

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

px, py, pz := 5.0, 125.0, 15.0 

The matrix multiplication: 

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

Q := Vector[row](%id = 146181880) 

> k := min(w,h);
 

k := 1000 

> 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]) );
 

S := Vector[row](%id = 146421100) 

> x := S[1] * 0.5;
 

> y := S[2] * 0.5;
 

x := 1643.140000 

y := 347.3755000 

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

px, py, pz := 18.0, 118.5, 9.0 

The matrix multiplication: 

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

Q := Vector[row](%id = 146664996) 

> k := min(w,h);
 

k := 1000 

> 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]) );
 

S := Vector[row](%id = 145646452) 

> x := S[1] * 0.5;
 

x := 1632.861750 

> y := S[2] * 0.5;
 

y := 395.7885000 

>
 

> %?