1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| def func(xx): T_x, T_y, T_z, x, y, z, w = xx p0x = -T_x*(-2*y**2 - 2*z**2 + 1) - T_y * \ (-2*w*z + 2*x*y) - T_z*(2*w*y + 2*x*z) p0y = -T_x*(2*w*z + 2*x*y) - T_y*(-2*x**2 - 2*z**2 + 1) - T_z*(-2*w*x + 2*y*z) Z_p0 = -T_x*(-2*w*y + 2*x*z) - T_y*(2*w*x + 2*y*z) - \ T_z*(-2*x**2 - 2*y**2 + 1) pxx = -T_x*(-2*y**2 - 2*z**2 + 1) - T_y*(-2*w*z + 2*x*y) - \ T_z*(2*w*y + 2*x*z) - 2*y**2 - 2*z**2 + 1 pxy = -T_x*(2*w*z + 2*x*y) - T_y*(-2*x**2 - 2*z**2 + 1) - \ T_z*(-2*w*x + 2*y*z) + 2*w*z + 2*x*y Z_px = -T_x*(-2*w*y + 2*x*z) - T_y*(2*w*x + 2*y*z) - \ T_z*(-2*x**2 - 2*y**2 + 1) - 2*w*y + 2*x*z pyx = -T_x*(-2*y**2 - 2*z**2 + 1) - T_y*(-2*w*z + 2*x*y) - \ T_z*(2*w*y + 2*x*z) - 2*w*z + 2*x*y pyy = -T_x*(2*w*z + 2*x*y) - T_y*(-2*x**2 - 2*z**2 + 1) - \ T_z*(-2*w*x + 2*y*z) - 2*x**2 - 2*z**2 + 1 Z_py = -T_x*(-2*w*y + 2*x*z) - T_y*(2*w*x + 2*y*z) - \ T_z*(-2*x**2 - 2*y**2 + 1) + 2*w*x + 2*y*z return [p0x/Z_p0-pixels[0, 0], p0y/Z_p0-pixels[0, 1], pxx/Z_px-pixels[1, 0], pxy/Z_px-pixels[1, 1], pyx/Z_py-pixels[2, 0], pyy/Z_py-pixels[2, 1], w**2+x**2+y**2+z**2-1]
from scipy.optimize import fsolve guess = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] ans = fsolve(func, guess)
|