diff --git a/src/celestia/hud.cpp b/src/celestia/hud.cpp index 49fc948d73..02bb921e02 100644 --- a/src/celestia/hud.cpp +++ b/src/celestia/hud.cpp @@ -537,9 +537,24 @@ displayPlanetInfo(const util::NumberFormatter& formatter, { return; } - - overlay.printf(_("Radius: %s\n"), - DistanceKmToStr(formatter, body.getRadius(), 5, hudSettings.measurementSystem)); + else if (body.isEllipsoid() && !body.isSphere()) // show mean radius along with triaxial semi-axes + { + Eigen::Vector3f semiAxes = body.getSemiAxes(); + double radiusMean = cbrt(semiAxes.prod()); + double axis0 = semiAxes.x(); + double axis1 = semiAxes.z(); + double axis2 = semiAxes.y(); // polar semi-axis + overlay.print(_("Radius: {} ({} " UTF8_MULTIPLICATION_SIGN " {} " UTF8_MULTIPLICATION_SIGN " {})\n"), + DistanceKmToStr(formatter, radiusMean, 5, hudSettings.measurementSystem), + DistanceKmToStr(formatter, axis0, 5, hudSettings.measurementSystem), + DistanceKmToStr(formatter, axis1, 5, hudSettings.measurementSystem), + DistanceKmToStr(formatter, axis2, 5, hudSettings.measurementSystem)); + } + else + { + overlay.print(_("Radius: {}\n"), + DistanceKmToStr(formatter, body.getRadius(), 5, hudSettings.measurementSystem)); + } displayApparentDiameter(overlay, body.getRadius(), distanceKm, loc); @@ -593,7 +608,7 @@ displayPlanetInfo(const util::NumberFormatter& formatter, if (body.getRotationModel(t)->isPeriodic()) displayRotationPeriod(formatter, overlay, body.getRotationModel(t)->getPeriod()); - if (body.getName() != "Earth" && body.getMass() > 0) + if (body.getMass() > 0) displayMass(formatter, overlay, body.getMass(), hudSettings.measurementSystem); if (float density = body.getDensity(); density > 0)