diff options
author | Georg Zotti <Georg.Zotti@univie.ac.at> | 2022-05-26 16:40:30 +0200 |
---|---|---|
committer | Georg Zotti <Georg.Zotti@univie.ac.at> | 2022-05-26 16:40:30 +0200 |
commit | 0a1247c3ad479e2c4ec8b34b9d881714ad2ecf69 (patch) | |
tree | 5dbf5c0b7c30c149e7743c135cea131b015ac9a0 | |
parent | 0d9ea511e4c4909d51b3e6290f9b8d27b1972966 (diff) |
Fix eclipse problem (Fix #2464)
- also improve code readability
-rw-r--r-- | src/core/modules/Atmosphere.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/core/modules/Atmosphere.cpp b/src/core/modules/Atmosphere.cpp index d9804ec607..44a3d92388 100644 --- a/src/core/modules/Atmosphere.cpp +++ b/src/core/modules/Atmosphere.cpp @@ -214,9 +214,9 @@ void Atmosphere::computeColor(StelCore* core, const double JD, const Planet& cur // Update the eclipse intensity factor to apply on atmosphere model // these are for radii - const double sun_angular_size = atan(sun.getEquatorialRadius()/sunPos.length()); - const double moon_angular_size = atan(moon->getEquatorialRadius()/moonPos.length()); - const double touch_angle = sun_angular_size + moon_angular_size; + const double sun_angular_radius = atan(sun.getEquatorialRadius()/sunPos.length()); + const double moon_angular_radius = atan(moon->getEquatorialRadius()/moonPos.length()); + const double touch_angle = sun_angular_radius + moon_angular_radius; // determine luminance falloff during solar eclipses sunPos.normalize(); @@ -225,13 +225,13 @@ void Atmosphere::computeColor(StelCore* core, const double JD, const Planet& cur if(separation_angle < touch_angle) { - double dark_angle = moon_angular_size - sun_angular_size; + double dark_angle = moon_angular_radius - sun_angular_radius; double min = 0.0025; // 0.005f; // 0.0001f; // so bright stars show up at total eclipse if (dark_angle < 0.) { // annular eclipse - double asun = sun_angular_size*sun_angular_size; - min = (asun - moon_angular_size*moon_angular_size)/asun; // minimum proportion of sun uncovered + double asun = sun_angular_radius*sun_angular_radius; + min = (asun - moon_angular_radius*moon_angular_radius)/asun; // minimum proportion of sun uncovered dark_angle *= -1; } @@ -240,6 +240,8 @@ void Atmosphere::computeColor(StelCore* core, const double JD, const Planet& cur else eclipseFactor = static_cast<float>(min + (1.0-min)*(separation_angle-dark_angle)/(touch_angle-dark_angle)); } + else + eclipseFactor = 1.0f; } else { |