diff options
author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2007-01-02 23:29:54 +0100 |
---|---|---|
committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2007-01-02 23:29:54 +0100 |
commit | 94f00e4e823ffd21f7543b300c1b87c271bff280 (patch) | |
tree | 70d53d45b42d8249be29d4a4551e99c849a38b51 | |
parent | bf60d4709d662fb3c28458be8b11d58c8d9f654a (diff) |
consistently use get_earth_radius()
adjust earth radius value
normalize alpha values between 0 and 2pi
-rw-r--r-- | src/Panorama.H | 2 | ||||
-rw-r--r-- | src/Panorama.cxx | 16 | ||||
-rw-r--r-- | src/ProjectionLSQ.cxx | 3 |
3 files changed, 10 insertions, 11 deletions
diff --git a/src/Panorama.H b/src/Panorama.H index c90d55e..651fe8e 100644 --- a/src/Panorama.H +++ b/src/Panorama.H @@ -116,7 +116,7 @@ class Panorama { double get_view_height(); - double get_earth_radius(Hill *m); + double get_earth_radius(double latitude); double get_real_distance(Hill *m); diff --git a/src/Panorama.cxx b/src/Panorama.cxx index c67b2e1..38cbd8c 100644 --- a/src/Panorama.cxx +++ b/src/Panorama.cxx @@ -13,7 +13,7 @@ #include "ProjectionRectilinear.H" #include "ProjectionCylindrical.H" -#define EARTH_RADIUS 6371010.0 +#define EARTH_RADIUS 6371000.785 Panorama::Panorama() { mountains = new Hills(); @@ -393,7 +393,7 @@ Panorama::update_close_mountains() { if (m->flags & Hill::TRACK_POINT || ((m->phi != view_phi || m->lam != view_lam) && - (m->height / (m->dist * get_earth_radius(m)) + (m->height / (m->dist * get_earth_radius(m->phi)) > height_dist_ratio))) { close_mountains->add(m); @@ -450,7 +450,7 @@ Panorama::alpha(double phi, double lam) { cos_alph = (sin(phi) - sin(view_phi) * cos(dist)) / (cos(view_phi) * sin(dist)); - return atan2(sin_alph, cos_alph); + return fmod(atan2(sin_alph, cos_alph) + 2.0 * pi_d, 2.0 * pi_d); } @@ -459,8 +459,8 @@ Panorama::nick(double dist, double height) { double a, b, c; double beta; - b = height + EARTH_RADIUS; - c = view_height + EARTH_RADIUS; + b = height + get_earth_radius(view_phi); + c = view_height + get_earth_radius(view_phi); a = pow(((b * (b - (2.0 * c * cos(dist)))) + (c * c)), (1.0 / 2.0)); beta = acos((-(b*b) + (a*a) + (c*c))/(2 * a * c)); @@ -469,7 +469,7 @@ Panorama::nick(double dist, double height) { } double -Panorama::get_earth_radius(Hill *m) { +Panorama::get_earth_radius(double latitude) { return EARTH_RADIUS; } @@ -477,8 +477,8 @@ double Panorama::get_real_distance(Hill *m) { double a, b, c, gam; - a = view_height + get_earth_radius(m); // using m here is not quite right - b = m->height + get_earth_radius(m); + a = view_height + get_earth_radius(m->phi); + b = m->height + get_earth_radius(m->phi); gam = m->dist; c = sqrt(pow(a, 2.0) + pow(b, 2.0) - 2.0 * a * b * cos(gam)); diff --git a/src/ProjectionLSQ.cxx b/src/ProjectionLSQ.cxx index 24ff2a4..077641b 100644 --- a/src/ProjectionLSQ.cxx +++ b/src/ProjectionLSQ.cxx @@ -52,7 +52,7 @@ ProjectionLSQ::comp_params(const Hills *h, ViewParams *parms) { scale_tmp = comp_scale(m1->alph, m2->alph, m1->x, m2->x); - if (isnan(scale_tmp) || scale_tmp < 100.0) { + if (isnan(scale_tmp) || scale_tmp < 50.0) { fprintf(stderr, "Could not determine initial scale value (%f)\n", scale_tmp); return 1; @@ -235,7 +235,6 @@ ProjectionLSQ::get_coordinates(double alph, double a_nick, double ProjectionLSQ::comp_scale(double a1, double a2, double d1, double d2) { - return (fabs(d1 - d2) / fabs(a1 - a2)); } |