diff options
author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2007-01-02 16:30:52 +0100 |
---|---|---|
committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2007-01-02 16:30:52 +0100 |
commit | 06d4d841b7a84954bb3168cac6245a7eafc6f484 (patch) | |
tree | 4328e750f3339127e745f75faf92214de8117124 /src | |
parent | e04c24e396baf72351d1dd9758faf9f2c430253a (diff) |
simplify and fix initial scale value computation
Diffstat (limited to 'src')
-rw-r--r-- | src/ProjectionLSQ.cxx | 40 |
1 files changed, 13 insertions, 27 deletions
diff --git a/src/ProjectionLSQ.cxx b/src/ProjectionLSQ.cxx index 1349f4c..24ff2a4 100644 --- a/src/ProjectionLSQ.cxx +++ b/src/ProjectionLSQ.cxx @@ -51,32 +51,25 @@ ProjectionLSQ::comp_params(const Hills *h, ViewParams *parms) { m2 = h->get(1); scale_tmp = comp_scale(m1->alph, m2->alph, m1->x, m2->x); - if (isnan(scale_tmp) || scale_tmp < 100.0) { - // try again with mountains swapped - tmp = m1; - m1 = m2; - m2 = tmp; - scale_tmp = comp_scale(m1->alph, m2->alph, m1->x, m2->x); - } - if (isnan(scale_tmp) || scale_tmp < 100.0) { + fprintf(stderr, "Could not determine initial scale value (%f)\n", + scale_tmp); return 1; - } else { - - parms->a_center = m1->alph; - parms->scale = scale_tmp; - parms->a_nick = 0.0; - parms->a_tilt = 0.0; + } - lsq(h, parms, 0); + parms->a_center = m1->alph; + parms->scale = scale_tmp; + parms->a_nick = 0.0; + parms->a_tilt = 0.0; - if (distortion_correct) { - lsq(h, parms, 1); - } + lsq(h, parms, 0); - return 0; + if (distortion_correct) { + lsq(h, parms, 1); } + + return 0; } struct data { @@ -242,15 +235,8 @@ ProjectionLSQ::get_coordinates(double alph, double a_nick, double ProjectionLSQ::comp_scale(double a1, double a2, double d1, double d2) { - double sign1 = 1.0; - double sc, tan_a1, tan_a2; - - tan_a1 = tan(a1); - tan_a2 = tan(a2); - - sc = ((((1.0 + (tan_a1 * tan_a2)) * (d1 - d2)) - (sign1 * pow((((1.0 + pow((tan_a1 * tan_a2), 2.0)) * ((d1 * d1) + (d2 * d2))) + (2.0 * ((tan_a1 * tan_a2 * pow((d1 + d2), 2.0)) - (d1 * d2 * (((tan_a1 * tan_a1) * (2.0 + (tan_a2 * tan_a2))) + 1.0 + (2.0 * (tan_a2 * tan_a2))))))), (1.0 / 2.0)))) / (2.0 * (tan_a1 - tan_a2))); - return sc; + return (fabs(d1 - d2) / fabs(a1 - a2)); } #define ARGS double c_view, double c_nick, double c_tilt, double scale, double k0, double k1, double m_view, double m_nick |