mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-31 21:15:33 +08:00
Ref T275, elevation plane improvements
* setRadiusOrMinimum * ASSERT if there is no radius
This commit is contained in:
@@ -937,6 +937,7 @@ namespace BlackCore
|
||||
{
|
||||
const CLength distance(correctedSituation.getDistancePerTime(250));
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -560,6 +560,7 @@ namespace BlackMisc
|
||||
{
|
||||
if (!this->canTransferGroundElevation(otherSituation, radius)) { return false; }
|
||||
otherSituation.setGroundElevation(this->getGroundElevationPlane(), TransferredElevation);
|
||||
Q_ASSERT_X(!otherSituation.getGroundElevationRadius().isNull(), Q_FUNC_INFO, "null radius");
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -620,6 +621,7 @@ namespace BlackMisc
|
||||
else
|
||||
{
|
||||
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
|
||||
}
|
||||
}
|
||||
@@ -633,7 +635,7 @@ namespace BlackMisc
|
||||
{
|
||||
// better values
|
||||
this->setGroundElevation(elevationPlane, info);
|
||||
m_groundElevationPlane.setRadius(distance);
|
||||
m_groundElevationPlane.setRadiusOrMinimum(distance);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -31,13 +31,18 @@ namespace BlackMisc
|
||||
CElevationPlane::CElevationPlane(const ICoordinateGeodetic &coordinate, const ICoordinateGeodetic &rangeCoordinate) :
|
||||
CCoordinateGeodetic(coordinate)
|
||||
{
|
||||
m_radius = this->calculateGreatCircleDistance(rangeCoordinate);
|
||||
this->setRadiusOrMinimum(this->calculateGreatCircleDistance(rangeCoordinate));
|
||||
}
|
||||
|
||||
CElevationPlane::CElevationPlane(const ICoordinateGeodetic &coordinate, const CLength &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)
|
||||
{
|
||||
if (offset.isNull() || offset.isZeroEpsilonConsidered()) { return; }
|
||||
|
||||
@@ -48,6 +48,9 @@ namespace BlackMisc
|
||||
//! 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
|
||||
void addAltitudeOffset(const PhysicalQuantities::CLength &offset);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user