mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-02 23:35:40 +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 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user