Ref T275, elevation plane improvements

* setRadiusOrMinimum
* ASSERT if there is no radius
This commit is contained in:
Klaus Basan
2018-06-08 21:36:22 +02:00
parent 4393bdeb77
commit 88b2da94a3
4 changed files with 13 additions and 2 deletions

View File

@@ -937,6 +937,7 @@ namespace BlackCore
{ {
const CLength distance(correctedSituation.getDistancePerTime(250)); const CLength distance(correctedSituation.getDistancePerTime(250));
const CElevationPlane ep = this->findClosestElevationWithinRangeOrRequest(correctedSituation, distance, callsign); const CElevationPlane ep = this->findClosestElevationWithinRangeOrRequest(correctedSituation, distance, callsign);
Q_ASSERT_X(ep.isNull() || !ep.getRadius().isNull(), Q_FUNC_INFO, "null radius");
correctedSituation.setGroundElevation(ep, CAircraftSituation::FromCache); correctedSituation.setGroundElevation(ep, CAircraftSituation::FromCache);
} }

View File

@@ -560,6 +560,7 @@ namespace BlackMisc
{ {
if (!this->canTransferGroundElevation(otherSituation, radius)) { return false; } if (!this->canTransferGroundElevation(otherSituation, radius)) { return false; }
otherSituation.setGroundElevation(this->getGroundElevationPlane(), TransferredElevation); otherSituation.setGroundElevation(this->getGroundElevationPlane(), TransferredElevation);
Q_ASSERT_X(!otherSituation.getGroundElevationRadius().isNull(), Q_FUNC_INFO, "null radius");
return true; return true;
} }
@@ -620,6 +621,7 @@ namespace BlackMisc
else else
{ {
this->setGroundElevationInfo(info); this->setGroundElevationInfo(info);
Q_ASSERT_X(!m_groundElevationPlane.getRadius().isNull(), Q_FUNC_INFO, "Null radius");
m_groundElevationPlane.switchUnit(this->getAltitudeOrDefaultUnit()); // we use ft as internal unit, no "must" but simplification m_groundElevationPlane.switchUnit(this->getAltitudeOrDefaultUnit()); // we use ft as internal unit, no "must" but simplification
} }
} }
@@ -633,7 +635,7 @@ namespace BlackMisc
{ {
// better values // better values
this->setGroundElevation(elevationPlane, info); this->setGroundElevation(elevationPlane, info);
m_groundElevationPlane.setRadius(distance); m_groundElevationPlane.setRadiusOrMinimum(distance);
return true; return true;
} }
return false; return false;

View File

@@ -31,13 +31,18 @@ namespace BlackMisc
CElevationPlane::CElevationPlane(const ICoordinateGeodetic &coordinate, const ICoordinateGeodetic &rangeCoordinate) : CElevationPlane::CElevationPlane(const ICoordinateGeodetic &coordinate, const ICoordinateGeodetic &rangeCoordinate) :
CCoordinateGeodetic(coordinate) CCoordinateGeodetic(coordinate)
{ {
m_radius = this->calculateGreatCircleDistance(rangeCoordinate); this->setRadiusOrMinimum(this->calculateGreatCircleDistance(rangeCoordinate));
} }
CElevationPlane::CElevationPlane(const ICoordinateGeodetic &coordinate, const CLength &radius) : CElevationPlane::CElevationPlane(const ICoordinateGeodetic &coordinate, const CLength &radius) :
CCoordinateGeodetic(coordinate), m_radius(radius) CCoordinateGeodetic(coordinate), m_radius(radius)
{ } { }
void CElevationPlane::setRadiusOrMinimum(const CLength &radius)
{
m_radius = ((radius.isNull() || radius < CElevationPlane::singlePointRadius())) ? CElevationPlane::singlePointRadius() : radius;
}
void CElevationPlane::addAltitudeOffset(const CLength &offset) void CElevationPlane::addAltitudeOffset(const CLength &offset)
{ {
if (offset.isNull() || offset.isZeroEpsilonConsidered()) { return; } if (offset.isNull() || offset.isZeroEpsilonConsidered()) { return; }

View File

@@ -48,6 +48,9 @@ namespace BlackMisc
//! Radius //! Radius
void setRadius(const PhysicalQuantities::CLength &radius) { m_radius = radius; } void setRadius(const PhysicalQuantities::CLength &radius) { m_radius = radius; }
//! Radius or minimum CElevationPlane::singlePointRadius
void setRadiusOrMinimum(const PhysicalQuantities::CLength &radius);
//! Add offset to altitude //! Add offset to altitude
void addAltitudeOffset(const PhysicalQuantities::CLength &offset); void addAltitudeOffset(const PhysicalQuantities::CLength &offset);