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

M := Matrix(%id = 145952532) 

Here the With and Height of the Picture: 

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

w, h := 1000, 3000 

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 = 146208992) 

> 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 = 146454208) 

> x := S[1] * 0.5;
 

> y := S[2] * 0.5;
 

x := 609.4670295 

y := 1383.283569 

> 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 = 145192892) 

> 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 = 146940508) 

> x := S[1] * 0.5;
 

x := 605.0368460 

> y := S[2] * 0.5;
 

y := 1417.618622 

>