From eb72978eb28008f677145dbeb1b3090ed47a5b19 Mon Sep 17 00:00:00 2001 From: Johannes Hofmann Date: Thu, 26 Mar 2009 17:52:24 +0100 Subject: validate lsq results --- src/Panorama.cxx | 4 +++- src/ProjectionLSQ.cxx | 24 +++++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/Panorama.cxx b/src/Panorama.cxx index b0d0228..ad0fdf4 100644 --- a/src/Panorama.cxx +++ b/src/Panorama.cxx @@ -130,7 +130,9 @@ Panorama::comp_params(Hills *h) { int ret; ret = proj->comp_params(h, &parms); - update_visible_mountains(); + if (ret == 0) + update_visible_mountains(); + return ret; } diff --git a/src/ProjectionLSQ.cxx b/src/ProjectionLSQ.cxx index 364c740..45fd76b 100644 --- a/src/ProjectionLSQ.cxx +++ b/src/ProjectionLSQ.cxx @@ -37,6 +37,7 @@ ProjectionLSQ::comp_params(const Hills *h, ViewParams *parms) { const Hill *m1, *m2; double scale_tmp; int distortion_correct = 0; + ViewParams new_parms; if (h->get_num() < 2) { fprintf(stderr, "Please position at least 2 hills\n"); @@ -60,17 +61,26 @@ ProjectionLSQ::comp_params(const Hills *h, ViewParams *parms) { return 1; } - parms->a_center = m1->alph; - parms->scale = scale_tmp; - parms->a_nick = 0.0; - parms->a_tilt = 0.0; + new_parms.a_center = m1->alph; + new_parms.scale = scale_tmp; + new_parms.a_nick = 0.0; + new_parms.a_tilt = 0.0; + new_parms.k0 = parms->k0; + new_parms.k1 = parms->k1; + new_parms.x0 = parms->x0; - lsq(h, parms, 0); + lsq(h, &new_parms, 0); - if (distortion_correct) { - lsq(h, parms, 1); + if (distortion_correct) + lsq(h, &new_parms, 1); + + if (isnan(new_parms.scale) || new_parms.scale < 50.0) { + fprintf(stderr, "Could not determine reasonable view parameters\n"); + return 1; } + *parms = new_parms; + return 0; } -- cgit v1.2.3