diff options
| author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2009-03-26 17:52:24 +0100 | 
|---|---|---|
| committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2009-03-26 17:52:24 +0100 | 
| commit | eb72978eb28008f677145dbeb1b3090ed47a5b19 (patch) | |
| tree | 159f52e636a20c2320d64e9a67a84c07fb2af8eb /src | |
| parent | 4459b8bfd97f2373ce55b37e905b419f2c0e8920 (diff) | |
validate lsq results
Diffstat (limited to 'src')
| -rw-r--r-- | src/Panorama.cxx | 4 | ||||
| -rw-r--r-- | 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;  } | 
