From 52bcb63b5d8db6627c20c097f0c20df28e6918fc Mon Sep 17 00:00:00 2001 From: Johannes Hofmann Date: Thu, 14 Dec 2006 19:53:41 +0100 Subject: implement save/restore of distortion parameters --- src/lsq_funcs.mac | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'src/lsq_funcs.mac') diff --git a/src/lsq_funcs.mac b/src/lsq_funcs.mac index d57008e..3a2cb33 100644 --- a/src/lsq_funcs.mac +++ b/src/lsq_funcs.mac @@ -2,26 +2,26 @@ * This is the basic pinhole projection model with distortion correction */ -x_undist_unrot : tan(m_view - c_view) $ -y_undist_unrot : tan(c_nick - m_nick) $ -d : y_undist_unrot ^ 2 + x_undist_unrot ^ 2$ -dist_fact : d ^ 2 * k1 + d * k0$ -x_unrot : x_undist_unrot * (1 + dist_fact)$ -y_unrot : y_undist_unrot * (1 + dist_fact)$ -x : scale * (y_unrot * sin(c_tilt) + x_unrot * cos(c_tilt))$ -y : scale * (y_unrot * cos(c_tilt) - x_unrot * sin(c_tilt))$ +x_undist_unrot : tan(m_view - c_view); +y_undist_unrot : tan(c_nick - m_nick); +d : (u0 - x_undist_unrot) ^ 2 + (v0 - y_undist_unrot) ^ 2; +dist_fact : d ^ 2 * k1 + d * k0; +x_unrot : x_undist_unrot * (1 + dist_fact); +y_unrot : y_undist_unrot * (1 + dist_fact); +x : scale * (y_unrot * sin(c_tilt) + x_unrot * cos(c_tilt)); +y : scale * (y_unrot * cos(c_tilt) - x_unrot * sin(c_tilt)); /* * Some mangling for C code generation */ -x_expand : trigexpand(x)$ -y_expand : trigexpand(y)$ +x_expand : trigexpand(x); +y_expand : trigexpand(y); -args: "(double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double m_view, double m_nick)"$ +args: "(double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double u0, double v0, double m_view, double m_nick)"; printfunc(name, expression) := sprint("static double", name, args, "{ return ", string(subst(pow, "^", expression)), ";}", " -")$ +"); printfunc("mac_x", x_expand); printfunc("mac_y", y_expand); @@ -32,9 +32,13 @@ printfunc("mac_x_dc_tilt", diff(x_expand, c_tilt)); printfunc("mac_x_dscale", diff(x_expand, scale)); printfunc("mac_x_dk0", diff(x_expand, k0)); printfunc("mac_x_dk1", diff(x_expand, k1)); +printfunc("mac_x_du0", diff(x_expand, u0)); +printfunc("mac_x_dv0", diff(x_expand, v0)); printfunc("mac_y_dc_view", diff(y_expand, c_view)); printfunc("mac_y_dc_nick", diff(y_expand, c_nick)); printfunc("mac_y_dc_tilt", diff(y_expand, c_tilt)); printfunc("mac_y_dscale", diff(y_expand, scale)); printfunc("mac_y_dk0", diff(y_expand, k0)); printfunc("mac_y_dk1", diff(y_expand, k1)); +printfunc("mac_y_du0", diff(x_expand, u0)); +printfunc("mac_y_dv0", diff(x_expand, v0)); -- cgit v1.2.3