summaryrefslogtreecommitdiff
path: root/tests/harness
diff options
context:
space:
mode:
Diffstat (limited to 'tests/harness')
-rw-r--r--tests/harness/build/cyl_funcs.cxx10
-rwxr-xr-xtests/harness/build/exportdumpbin0 -> 403880 bytes
-rwxr-xr-xtests/harness/build/fitdumpbin0 -> 252104 bytes
-rwxr-xr-xtests/harness/build/funcsdumpbin0 -> 29832 bytes
-rw-r--r--tests/harness/build/rect_funcs.cxx16
-rwxr-xr-xtests/harness/build/stitchdumpbin0 -> 276152 bytes
-rw-r--r--tests/harness/exportdump.cxx77
-rw-r--r--tests/harness/fitdump.cxx83
-rw-r--r--tests/harness/funcsdump.cxx60
-rw-r--r--tests/harness/stitchdump.cxx102
10 files changed, 348 insertions, 0 deletions
diff --git a/tests/harness/build/cyl_funcs.cxx b/tests/harness/build/cyl_funcs.cxx
new file mode 100644
index 0000000..5143ba5
--- /dev/null
+++ b/tests/harness/build/cyl_funcs.cxx
@@ -0,0 +1,10 @@
+double cyl_mac_x ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 ; _1 = tan(c_nick) ; _2 = tan(m_nick) ; return (cos(c_tilt)*(m_view-c_view)-(sin(c_tilt)*(_2-_1))/(_1*_2+1))*scale ; }
+double cyl_mac_y ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 ; _1 = tan(c_nick) ; _2 = tan(m_nick) ; return ((-sin(c_tilt)*(m_view-c_view))-(cos(c_tilt)*(_2-_1))/(_1*_2+1))*scale ; }
+double cyl_mac_x_dc_view ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { return -cos(c_tilt)*scale ; }
+double cyl_mac_x_dc_nick ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 ; _1 = pow(sec(c_nick),2) ; _2 = sin(c_tilt) ; _3 = tan(m_nick) ; _4 = tan(c_nick) ; _5 = _4*_3+1 ; return ((_1*_2*_3*(_3-_4))/pow(_5,2)+(_1*_2)/_5)*scale ; }
+double cyl_mac_x_dc_tilt ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 ; _1 = tan(c_nick) ; _2 = tan(m_nick) ; return ((-sin(c_tilt)*(m_view-c_view))-(cos(c_tilt)*(_2-_1))/(_1*_2+1))*scale ; }
+double cyl_mac_x_dscale ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 ; _1 = tan(c_nick) ; _2 = tan(m_nick) ; return cos(c_tilt)*(m_view-c_view)-(sin(c_tilt)*(_2-_1))/(_1*_2+1) ; }
+double cyl_mac_y_dc_view ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { return sin(c_tilt)*scale ; }
+double cyl_mac_y_dc_nick ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 ; _1 = pow(sec(c_nick),2) ; _2 = cos(c_tilt) ; _3 = tan(m_nick) ; _4 = tan(c_nick) ; _5 = _4*_3+1 ; return ((_1*_2*_3*(_3-_4))/pow(_5,2)+(_1*_2)/_5)*scale ; }
+double cyl_mac_y_dc_tilt ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 ; _1 = tan(c_nick) ; _2 = tan(m_nick) ; return ((sin(c_tilt)*(_2-_1))/(_1*_2+1)-cos(c_tilt)*(m_view-c_view))*scale ; }
+double cyl_mac_y_dscale ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 ; _1 = tan(c_nick) ; _2 = tan(m_nick) ; return (-sin(c_tilt)*(m_view-c_view))-(cos(c_tilt)*(_2-_1))/(_1*_2+1) ; }
diff --git a/tests/harness/build/exportdump b/tests/harness/build/exportdump
new file mode 100755
index 0000000..e732af7
--- /dev/null
+++ b/tests/harness/build/exportdump
Binary files differ
diff --git a/tests/harness/build/fitdump b/tests/harness/build/fitdump
new file mode 100755
index 0000000..37383c8
--- /dev/null
+++ b/tests/harness/build/fitdump
Binary files differ
diff --git a/tests/harness/build/funcsdump b/tests/harness/build/funcsdump
new file mode 100755
index 0000000..37efb59
--- /dev/null
+++ b/tests/harness/build/funcsdump
Binary files differ
diff --git a/tests/harness/build/rect_funcs.cxx b/tests/harness/build/rect_funcs.cxx
new file mode 100644
index 0000000..95c5cc2
--- /dev/null
+++ b/tests/harness/build/rect_funcs.cxx
@@ -0,0 +1,16 @@
+double rect_mac_x ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 ; _1 = sin(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = 1/(_4*_5*_10+_2*_3) ; _12 = _2*_5*_10-_4*_3 ; _13 = cos(c_tilt) ; _14 = _6*_9-_8*_7 ; _15 = x0+_13*_5*_14*_11+_1*_11*_12 ; _16 = pow(_15,2)+pow(_13*_11*_12-_1*_5*_14*_11,2) ; return scale*_15*(k0*sqrt(_16)+k1*_16+1) ; }
+double rect_mac_y ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 ; _1 = cos(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = 1/(_4*_5*_10+_2*_3) ; _12 = _2*_5*_10-_4*_3 ; _13 = sin(c_tilt) ; _14 = _6*_9-_8*_7 ; _15 = _1*_11*_12-_13*_5*_14*_11 ; _16 = pow(x0+_1*_5*_14*_11+_13*_11*_12,2)+pow(_15,2) ; return _15*scale*(k0*sqrt(_16)+k1*_16+1) ; }
+double rect_mac_x_dc_view ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _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 ; _1 = sin(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = _4*_5*_10+_2*_3 ; _12 = 1/_11 ; _13 = _2*_5*_10-_4*_3 ; _14 = cos(c_tilt) ; _15 = _6*_9-_8*_7 ; _16 = x0+_14*_5*_15*_12+_1*_12*_13 ; _17 = _14*_12*_13-_1*_5*_15*_12 ; _18 = 1/pow(_11,2) ; _19 = pow(_5,2) ; _20 = pow(_15,2) ; _21 = (-_8*_9)-_6*_7 ; _22 = _14*_5*_21*_12+_2*_1*_5*_15*_12-_4*_14*_19*_20*_18-_4*_1*_5*_15*_18*_13 ; _23 = 2*_22*_16+2*_17*((-_1*_5*_21*_12)+_2*_14*_5*_15*_12+_4*_1*_19*_20*_18-_4*_14*_5*_15*_18*_13) ; _24 = pow(_17,2)+pow(_16,2) ; _25 = sqrt(_24) ; return _22*scale*(k0*_25+k1*_24+1)+scale*_16*((k0*_23)/(2*_25)+k1*_23) ; }
+double rect_mac_x_dc_nick ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 ; _1 = sin(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = _4*_5*_10+_2*_3 ; _12 = 1/_11 ; _13 = _2*_5*_10-_4*_3 ; _14 = cos(c_tilt) ; _15 = _6*_9-_8*_7 ; _16 = x0+_14*_5*_15*_12+_1*_12*_13 ; _17 = 1/pow(_11,2) ; _18 = _4*_3-_2*_5*_10 ; _19 = _14*_12*_13-_1*_5*_15*_12 ; _20 = (-_1*_17*_18*_13)-_14*_5*_15*_17*_18+_1 ; _21 = 2*_20*_16+2*((-_14*_17*_18*_13)+_1*_5*_15*_17*_18+_14)*_19 ; _22 = pow(_19,2)+pow(_16,2) ; _23 = sqrt(_22) ; return _20*scale*(k0*_23+k1*_22+1)+scale*_16*((k0*_21)/(2*_23)+k1*_21) ; }
+double rect_mac_x_dc_tilt ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 ; _1 = sin(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = 1/(_4*_5*_10+_2*_3) ; _12 = _2*_5*_10-_4*_3 ; _13 = cos(c_tilt) ; _14 = _6*_9-_8*_7 ; _15 = x0+_13*_5*_14*_11+_1*_11*_12 ; _16 = _13*_11*_12-_1*_5*_14*_11 ; _17 = 2*_16*_15+2*((-_13*_5*_14*_11)-_1*_11*_12)*_16 ; _18 = pow(_16,2)+pow(_15,2) ; _19 = sqrt(_18) ; return _16*scale*(k0*_19+k1*_18+1)+scale*_15*((k0*_17)/(2*_19)+k1*_17) ; }
+double rect_mac_x_dscale ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 ; _1 = sin(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = 1/(_4*_5*_10+_2*_3) ; _12 = _2*_5*_10-_4*_3 ; _13 = cos(c_tilt) ; _14 = _6*_9-_8*_7 ; _15 = x0+_13*_5*_14*_11+_1*_11*_12 ; _16 = pow(_15,2)+pow(_13*_11*_12-_1*_5*_14*_11,2) ; return _15*(k0*sqrt(_16)+k1*_16+1) ; }
+double rect_mac_x_dk0 ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 ; _1 = sin(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = 1/(_4*_5*_10+_2*_3) ; _12 = _2*_5*_10-_4*_3 ; _13 = cos(c_tilt) ; _14 = _6*_9-_8*_7 ; _15 = x0+_13*_5*_14*_11+_1*_11*_12 ; return _15*sqrt(pow(_15,2)+pow(_13*_11*_12-_1*_5*_14*_11,2))*scale ; }
+double rect_mac_x_dk1 ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 ; _1 = sin(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = 1/(_4*_5*_10+_2*_3) ; _12 = _2*_5*_10-_4*_3 ; _13 = cos(c_tilt) ; _14 = _6*_9-_8*_7 ; _15 = x0+_13*_5*_14*_11+_1*_11*_12 ; return _15*(pow(_15,2)+pow(_13*_11*_12-_1*_5*_14*_11,2))*scale ; }
+double rect_mac_x_dx0 ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 ; _1 = sin(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = 1/(_4*_5*_10+_2*_3) ; _12 = _2*_5*_10-_4*_3 ; _13 = cos(c_tilt) ; _14 = _6*_9-_8*_7 ; _15 = x0+_13*_5*_14*_11+_1*_11*_12 ; _16 = pow(_15,2)+pow(_13*_11*_12-_1*_5*_14*_11,2) ; _17 = sqrt(_16) ; return scale*(k0*_17+k1*_16+1)+scale*_15*((k0*_15)/_17+2*k1*_15) ; }
+double rect_mac_y_dc_view ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _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 ; _1 = cos(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = _4*_5*_10+_2*_3 ; _12 = 1/_11 ; _13 = _2*_5*_10-_4*_3 ; _14 = sin(c_tilt) ; _15 = _6*_9-_8*_7 ; _16 = _1*_12*_13-_14*_5*_15*_12 ; _17 = 1/pow(_11,2) ; _18 = pow(_5,2) ; _19 = pow(_15,2) ; _20 = (-_8*_9)-_6*_7 ; _21 = (-_14*_5*_20*_12)+_2*_1*_5*_15*_12+_4*_14*_18*_19*_17-_4*_1*_5*_15*_17*_13 ; _22 = x0+_1*_5*_15*_12+_14*_12*_13 ; _23 = 2*(_1*_5*_20*_12+_2*_14*_5*_15*_12-_4*_1*_18*_19*_17-_4*_14*_5*_15*_17*_13)*_22+2*_16*_21 ; _24 = pow(_22,2)+pow(_16,2) ; _25 = sqrt(_24) ; return _21*scale*(k0*_25+k1*_24+1)+_16*scale*((k0*_23)/(2*_25)+k1*_23) ; }
+double rect_mac_y_dc_nick ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 ; _1 = cos(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = _4*_5*_10+_2*_3 ; _12 = 1/_11 ; _13 = _2*_5*_10-_4*_3 ; _14 = sin(c_tilt) ; _15 = _6*_9-_8*_7 ; _16 = _1*_12*_13-_14*_5*_15*_12 ; _17 = 1/pow(_11,2) ; _18 = _4*_3-_2*_5*_10 ; _19 = (-_1*_17*_18*_13)+_14*_5*_15*_17*_18+_1 ; _20 = x0+_1*_5*_15*_12+_14*_12*_13 ; _21 = 2*((-_14*_17*_18*_13)-_1*_5*_15*_17*_18+_14)*_20+2*_19*_16 ; _22 = pow(_20,2)+pow(_16,2) ; _23 = sqrt(_22) ; return _19*scale*(k0*_23+k1*_22+1)+_16*scale*((k0*_21)/(2*_23)+k1*_21) ; }
+double rect_mac_y_dc_tilt ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 ; _1 = cos(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = 1/(_4*_5*_10+_2*_3) ; _12 = _2*_5*_10-_4*_3 ; _13 = sin(c_tilt) ; _14 = _6*_9-_8*_7 ; _15 = _1*_11*_12-_13*_5*_14*_11 ; _16 = (-_1*_5*_14*_11)-_13*_11*_12 ; _17 = x0+_1*_5*_14*_11+_13*_11*_12 ; _18 = 2*_15*_17+2*_16*_15 ; _19 = pow(_17,2)+pow(_15,2) ; _20 = sqrt(_19) ; return _16*scale*(k0*_20+k1*_19+1)+_15*scale*((k0*_18)/(2*_20)+k1*_18) ; }
+double rect_mac_y_dscale ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 ; _1 = cos(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = 1/(_4*_5*_10+_2*_3) ; _12 = _2*_5*_10-_4*_3 ; _13 = sin(c_tilt) ; _14 = _6*_9-_8*_7 ; _15 = _1*_11*_12-_13*_5*_14*_11 ; _16 = pow(x0+_1*_5*_14*_11+_13*_11*_12,2)+pow(_15,2) ; return _15*(k0*sqrt(_16)+k1*_16+1) ; }
+double rect_mac_y_dk0 ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 ; _1 = cos(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = 1/(_4*_5*_10+_2*_3) ; _12 = _2*_5*_10-_4*_3 ; _13 = sin(c_tilt) ; _14 = _6*_9-_8*_7 ; _15 = _1*_11*_12-_13*_5*_14*_11 ; return _15*scale*sqrt(pow(x0+_1*_5*_14*_11+_13*_11*_12,2)+pow(_15,2)) ; }
+double rect_mac_y_dk1 ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 ; _1 = cos(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = 1/(_4*_5*_10+_2*_3) ; _12 = _2*_5*_10-_4*_3 ; _13 = sin(c_tilt) ; _14 = _6*_9-_8*_7 ; _15 = _1*_11*_12-_13*_5*_14*_11 ; return _15*scale*(pow(x0+_1*_5*_14*_11+_13*_11*_12,2)+pow(_15,2)) ; }
+double rect_mac_y_dx0 ( double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double x0, double m_view, double m_nick ) { double _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 ; _1 = cos(c_tilt) ; _2 = sin(c_nick) ; _3 = sin(m_nick) ; _4 = cos(c_nick) ; _5 = cos(m_nick) ; _6 = cos(c_view) ; _7 = cos(m_view) ; _8 = sin(c_view) ; _9 = sin(m_view) ; _10 = _8*_9+_6*_7 ; _11 = 1/(_4*_5*_10+_2*_3) ; _12 = _2*_5*_10-_4*_3 ; _13 = sin(c_tilt) ; _14 = _6*_9-_8*_7 ; _15 = _1*_11*_12-_13*_5*_14*_11 ; _16 = x0+_1*_5*_14*_11+_13*_11*_12 ; return _15*((_16*k0)/sqrt(pow(_16,2)+pow(_15,2))+2*k1*_16)*scale ; }
diff --git a/tests/harness/build/stitchdump b/tests/harness/build/stitchdump
new file mode 100755
index 0000000..e63a628
--- /dev/null
+++ b/tests/harness/build/stitchdump
Binary files differ
diff --git a/tests/harness/exportdump.cxx b/tests/harness/exportdump.cxx
new file mode 100644
index 0000000..2c0e736
--- /dev/null
+++ b/tests/harness/exportdump.cxx
@@ -0,0 +1,77 @@
+// Golden dump: export-hills pipeline through the original C++ Panorama +
+// ImageMetaData (mirrors GipfelWidget::load_image + export_hills, no FLTK).
+// Usage: exportdump <img> <gipfel.dat>
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+#include <exiv2/exiv2.hpp>
+
+#include "Panorama.H"
+#include "Hill.H"
+#include "ImageMetaData.H"
+
+int main(int argc, char **argv) {
+ if (argc < 3) {
+ fprintf(stderr, "usage: exportdump <img> <gipfel.dat>\n");
+ return 1;
+ }
+
+ int w = 0, h = 0;
+ {
+ auto im = Exiv2::ImageFactory::open(argv[1]);
+ im->readMetadata();
+ w = im->pixelWidth();
+ h = im->pixelHeight();
+ }
+
+ ImageMetaData md;
+ md.load_image(argv[1]);
+
+ Panorama pan;
+ pan.set_view_long(md.longitude());
+ pan.set_view_lat(md.latitude());
+ pan.set_view_height(md.height());
+ pan.set_projection((ProjectionLSQ::Projection_t) md.projection_type());
+
+ int have = 1;
+ double v;
+ v = md.direction();
+ if (std::isnan(v)) { pan.set_center_angle(0.0); have = 0; } else pan.set_center_angle(v);
+ v = md.nick();
+ if (std::isnan(v)) { pan.set_nick_angle(0.0); have = 0; } else pan.set_nick_angle(v);
+ v = md.tilt();
+ if (std::isnan(v)) { pan.set_tilt_angle(0.0); have = 0; } else pan.set_tilt_angle(v);
+ v = md.focal_length_35mm();
+ if (std::isnan(v) || v == 0.0) { pan.set_scale(35.0 * (double)(w > h ? w : h) / 35.0); have = 0; }
+ else pan.set_scale(v * (double)(w > h ? w : h) / 35.0);
+
+ md.distortion_params(&pan.parms.k0, &pan.parms.k1, &pan.parms.x0);
+ if (std::isnan(pan.parms.k0)) pan.parms.k0 = 0.0;
+ if (std::isnan(pan.parms.k1)) pan.parms.k1 = 0.0;
+ if (std::isnan(pan.parms.x0)) pan.parms.x0 = 0.0;
+
+ if (pan.load_data(argv[2])) return 1;
+ pan.set_height_dist_ratio(0.07);
+
+ if (!have) {
+ fprintf(stderr, "No gipfel info available.\n");
+ return 0;
+ }
+
+ printf("#\n# name\theight\tx\ty\tdistance\tflags\n#\n");
+ Hills *mnts = pan.get_visible_mountains();
+ for (int i = 0; i < mnts->get_num(); i++) {
+ Hill *m = mnts->get(i);
+ int _x = (int) rint(m->x) + w / 2;
+ int _y = (int) rint(m->y) + h / 2;
+
+ if (m->flags & Hill::DUPLIC || m->flags & Hill::HIDDEN)
+ continue;
+ if (_x < 0 || _x > w || _y < 0 || _y > h)
+ continue;
+
+ printf("%s\t%d\t%d\t%d\t%d\n", m->name, (int) rint(m->height), _x, _y,
+ (int) rint(pan.get_real_distance(m)));
+ }
+ return 0;
+}
diff --git a/tests/harness/fitdump.cxx b/tests/harness/fitdump.cxx
new file mode 100644
index 0000000..8ef392c
--- /dev/null
+++ b/tests/harness/fitdump.cxx
@@ -0,0 +1,83 @@
+// Golden dump: full fit through the original C++ Panorama + GSL solver.
+// Usage: fitdump <gipfel.dat> <projection 0|1>
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+
+#include "Panorama.H"
+#include "Hill.H"
+#include "ProjectionRectilinear.H"
+#include "ProjectionCylindrical.H"
+
+int main(int argc, char **argv) {
+ if (argc < 3) {
+ fprintf(stderr, "usage: fitdump <gipfel.dat> <projection>\n");
+ return 1;
+ }
+
+ Panorama pan;
+ if (pan.load_data(argv[1])) {
+ fprintf(stderr, "load failed\n");
+ return 1;
+ }
+ pan.set_projection((ProjectionLSQ::Projection_t) atoi(argv[2]));
+
+ pan.set_view_lat(47.36);
+ pan.set_view_long(11.15);
+ pan.set_view_height(2100.0);
+
+ // ground truth
+ pan.set_center_angle(20.0);
+ pan.set_nick_angle(0.0);
+ pan.set_tilt_angle(1.0);
+ pan.set_scale(3000.0);
+
+ // observed positions = projection of first 6 visible hills (snapshotted
+ // as copies so the perturbation below does not overwrite them)
+ Hills *vis = pan.get_visible_mountains();
+ Hills known;
+ int n = vis->get_num() < 6 ? vis->get_num() : 6;
+ for (int i = 0; i < n; i++) {
+ Hill *c = new Hill(*vis->get(i));
+ // NOTE: Hill's copy ctor in the original does not copy a_nick
+ // (uninitialized garbage -> LSQR stagnates). The real app always
+ // fits hills living in the main list where a_nick is set, so set it
+ // here to reproduce the real-app behavior.
+ c->a_nick = vis->get(i)->a_nick;
+ known.add(c);
+ }
+
+ // perturb the initial guess
+ pan.set_center_angle(pan.get_center_angle() + 0.5);
+ pan.set_nick_angle(0.3);
+ pan.set_tilt_angle(0.5);
+ pan.set_scale(2800.0);
+
+ int ret = pan.comp_params(&known);
+
+ ViewParams *p = &pan.parms;
+ printf("ret %d\n", ret);
+ printf("a_center %.17g\n", p->a_center);
+ printf("a_nick %.17g\n", p->a_nick);
+ printf("a_tilt %.17g\n", p->a_tilt);
+ printf("scale %.17g\n", p->scale);
+ printf("k0 %.17g\n", p->k0);
+ printf("k1 %.17g\n", p->k1);
+ printf("x0 %.17g\n", p->x0);
+
+ // final image coordinates of the known hills (bypass visibility check)
+ for (int i = 0; i < known.get_num(); i++) {
+ Hill *m = known.get(i);
+ double x = NAN, y = NAN;
+ if (atoi(argv[2]) == 1) {
+ ProjectionCylindrical pc;
+ pc.get_coordinates(m->alph, m->a_nick, &pan.parms, &x, &y);
+ } else {
+ ProjectionRectilinear pr;
+ pr.get_coordinates(m->alph, m->a_nick, &pan.parms, &x, &y);
+ }
+ printf("hill %d %.17g %.17g\n", i, x, y);
+ }
+
+ return 0;
+}
diff --git a/tests/harness/funcsdump.cxx b/tests/harness/funcsdump.cxx
new file mode 100644
index 0000000..b416f2c
--- /dev/null
+++ b/tests/harness/funcsdump.cxx
@@ -0,0 +1,60 @@
+// Golden dump of the maxima-generated projection functions (C reference).
+// The `#define` trick turns the generated class methods into free functions.
+#include <stdio.h>
+#include <math.h>
+
+static double sec(double a) { return 1.0 / cos(a); }
+
+// gen_golden.sh copies the generated files with the class scope replaced:
+// ProjectionRectilinear::rect_mac_x -> rect_mac_x, ProjectionCylindrical::rect_mac_x -> cyl_mac_x
+#include "rect_funcs.cxx"
+#include "cyl_funcs.cxx"
+
+int main(void) {
+ for (int k = 0; k < 200; k++) {
+ double kk = (double) k;
+ double c_view = -3.0 + 0.03 * kk;
+ double c_nick = 0.10 * sin(0.11 * kk);
+ double c_tilt = 0.05 * cos(0.07 * kk);
+ double scale = 2000.0 + 37.0 * fmod(kk, 19.0);
+ double k0 = 0.001 * sin(0.31 * kk);
+ double k1 = 0.0001 * cos(0.17 * kk);
+ double x0 = 50.0 * sin(0.13 * kk);
+ double m_view = c_view + 0.5 * sin(0.23 * kk);
+ double m_nick = 0.05 * cos(0.19 * kk);
+
+ printf("%.17g %.17g %.17g %.17g %.17g %.17g %.17g %.17g %.17g ",
+ rect_mac_x(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ rect_mac_y(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ rect_mac_x_dc_view(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ rect_mac_x_dc_nick(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ rect_mac_x_dc_tilt(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ rect_mac_x_dscale(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ rect_mac_x_dk0(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ rect_mac_x_dk1(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ rect_mac_x_dx0(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick));
+ printf("%.17g %.17g %.17g %.17g %.17g %.17g %.17g ",
+ rect_mac_y_dc_view(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ rect_mac_y_dc_nick(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ rect_mac_y_dc_tilt(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ rect_mac_y_dscale(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ rect_mac_y_dk0(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ rect_mac_y_dk1(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ rect_mac_y_dx0(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick));
+
+ printf("%.17g %.17g ",
+ cyl_mac_x(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ cyl_mac_y(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick));
+ printf("%.17g %.17g %.17g %.17g ",
+ cyl_mac_x_dc_view(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ cyl_mac_x_dc_nick(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ cyl_mac_x_dc_tilt(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ cyl_mac_x_dscale(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick));
+ printf("%.17g %.17g %.17g %.17g\n",
+ cyl_mac_y_dc_view(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ cyl_mac_y_dc_nick(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ cyl_mac_y_dc_tilt(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick),
+ cyl_mac_y_dscale(c_view, c_nick, c_tilt, scale, k0, k1, x0, m_view, m_nick));
+ }
+ return 0;
+}
diff --git a/tests/harness/stitchdump.cxx b/tests/harness/stitchdump.cxx
new file mode 100644
index 0000000..cd015e7
--- /dev/null
+++ b/tests/harness/stitchdump.cxx
@@ -0,0 +1,102 @@
+// Golden dump: Stitch::resample pipeline through the original C++ Panorama +
+// ScanImage (no FLTK GUI; PPM input wrapped in Fl_RGB_Image).
+// Usage: stitchdump <img.ppm> <projtype> <center> <pitch> <roll> <scale>
+// <k0> <k1> <x0> <w> <h> <from> <to> <bicubic>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <ctype.h>
+#include <algorithm>
+
+#include <FL/Fl.H>
+#include <FL/Fl_RGB_Image.H>
+
+#include "Panorama.H"
+#include "ScanImage.H"
+
+#define MAX_VALUE 65025
+
+// minimal P6 PPM reader
+static unsigned char *read_ppm(const char *path, int *w, int *h) {
+ FILE *f = fopen(path, "rb");
+ if (!f) return NULL;
+ int c;
+ if (fgetc(f) != 'P' || fgetc(f) != '6' || (c = fgetc(f), !isspace(c))) {
+ fclose(f); return NULL;
+ }
+ int skip = 0;
+ while (!skip) {
+ c = fgetc(f);
+ if (c == '#') { while ((c = fgetc(f)) != '\n' && c != EOF); continue; }
+ if (c == ' ' || c == '\n' || c == '\t' || c == '\r') continue;
+ skip = 1;
+ ungetc(c, f);
+ }
+ (void)c;
+ if (fscanf(f, "%d %d %*d", w, h) != 2) { fclose(f); return NULL; }
+ fgetc(f); // single whitespace
+ unsigned char *buf = (unsigned char*)malloc((size_t)(*w) * (*h) * 3);
+ if (fread(buf, 1, (size_t)(*w) * (*h) * 3, f) != (size_t)(*w) * (*h) * 3) {
+ free(buf); fclose(f); return NULL;
+ }
+ fclose(f);
+ return buf;
+}
+
+int main(int argc, char **argv) {
+ if (argc < 15) {
+ fprintf(stderr, "usage: stitchdump <img.ppm> <projtype> <center> <pitch> "
+ "<roll> <scale> <k0> <k1> <x0> <w> <h> <from> <to> <bicubic>\n");
+ return 1;
+ }
+ int iw = 0, ih = 0;
+ unsigned char *px = read_ppm(argv[1], &iw, &ih);
+ if (!px) { fprintf(stderr, "cannot read %s\n", argv[1]); return 1; }
+
+ Fl_RGB_Image img(px, iw, ih, 3);
+
+ Panorama pan;
+ pan.set_projection((ProjectionLSQ::Projection_t) atoi(argv[2]));
+ pan.set_center_angle(atof(argv[3]));
+ pan.set_nick_angle(atof(argv[4]));
+ pan.set_tilt_angle(atof(argv[5]));
+ pan.set_scale(atof(argv[6]));
+ pan.parms.k0 = atof(argv[7]);
+ pan.parms.k1 = atof(argv[8]);
+ pan.parms.x0 = atof(argv[9]);
+
+ int w = atoi(argv[10]), h = atoi(argv[11]);
+ double view_start = atof(argv[12]) * M_PI / 180.0;
+ double view_end = atof(argv[13]) * M_PI / 180.0;
+ ScanImage::mode_t mode = atoi(argv[14]) ? ScanImage::BICUBIC : ScanImage::NEAREST;
+
+ double step_view = (view_end - view_start) / w;
+ int y_off = h / 2;
+ double radius = (double) w / (view_end - view_start);
+
+ for (int y = 0; y < h; y++) {
+ double a_nick = atan((double)(y_off - y) / radius);
+ for (int x = 0; x < w; x++) {
+ double a_view = view_start + x * step_view;
+ int hit = 0, r = 0, g = 0, b = 0;
+ double px2, py2;
+ if (pan.get_coordinates(a_view, a_nick, &px2, &py2) == 0) {
+ int rr, gg, bb;
+ if (ScanImage::get_pixel(&img, mode,
+ px2 + ((double) img.w()) / 2.0,
+ py2 + ((double) img.h()) / 2.0,
+ &rr, &gg, &bb) == 0) {
+ hit = 1;
+ r = std::max(std::min(rr, MAX_VALUE), 0);
+ g = std::max(std::min(gg, MAX_VALUE), 0);
+ b = std::max(std::min(bb, MAX_VALUE), 0);
+ }
+ }
+ printf("%d %d %d %d %d %d\n", x, y, hit, r, g, b);
+ }
+ }
+
+ free(px);
+ return 0;
+}