> | 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 ]]); |
Here the With and Height of the Picture:
> | w,h := (3000,1000); |
The point coordinates of the location you search in the picture:
> | px,py,pz := (5.0, 125.0, 15.0); |
The matrix multiplication:
> | Q := multiply(M,array(1..4,[px, py, pz, 1])); |
> | k := min(w,h); |
> | 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]) ); |
> | x := S[1] * 0.5; |
> | y := S[2] * 0.5; |
> | px,py,pz := (18.0, 118.5, 9.0); |
The matrix multiplication:
> | Q := multiply(M,array(1..4,[px, py, pz, 1])); |
> | k := min(w,h); |
> | 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]) ); |
> | x := S[1] * 0.5; |
> | y := S[2] * 0.5; |
> |
> |