> | 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 ]]); |
Here the With and Height of the Picture:
> | w,h := (8000,8000); |
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; |
> |