summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Zotti <Georg.Zotti@univie.ac.at>2022-05-26 16:40:30 +0200
committerGeorg Zotti <Georg.Zotti@univie.ac.at>2022-05-26 16:40:30 +0200
commit0a1247c3ad479e2c4ec8b34b9d881714ad2ecf69 (patch)
tree5dbf5c0b7c30c149e7743c135cea131b015ac9a0
parent0d9ea511e4c4909d51b3e6290f9b8d27b1972966 (diff)
Fix eclipse problem (Fix #2464)
- also improve code readability
-rw-r--r--src/core/modules/Atmosphere.cpp14
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
{