mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-03 07:35:48 +08:00
Ref T268, aircraft situation improvements
* Transfer gnd. elevation * find closest elevation
This commit is contained in:
@@ -347,6 +347,26 @@ namespace BlackMisc
|
||||
return found;
|
||||
}
|
||||
|
||||
CElevationPlane CAircraftSituationList::findCLosestElevationWithinRange(const ICoordinateGeodetic &coordinate, const CLength &range) const
|
||||
{
|
||||
CLength r = range.isNull() || range < CElevationPlane::singlePointRadius() ? CElevationPlane::singlePointRadius() : range;
|
||||
CElevationPlane ep = CElevationPlane::null();
|
||||
|
||||
CLength bestDistance = CLength::null();
|
||||
for (const CAircraftSituation &s : *this)
|
||||
{
|
||||
if (!s.hasGroundElevation()) { continue; }
|
||||
const CLength distance = s.calculateGreatCircleDistance(coordinate);
|
||||
if (distance > r) { continue; }
|
||||
if (bestDistance.isNull() || bestDistance > distance)
|
||||
{
|
||||
ep = s.getGroundElevationPlane();
|
||||
bestDistance = distance;
|
||||
}
|
||||
}
|
||||
return ep;
|
||||
}
|
||||
|
||||
int CAircraftSituationList::setOnGround(CAircraftSituation::IsOnGround og)
|
||||
{
|
||||
int c = 0;
|
||||
@@ -530,7 +550,7 @@ namespace BlackMisc
|
||||
{
|
||||
const CAircraftSituation &oldSituation = (*this)[i];
|
||||
CAircraftSituation &newSituation = (*this)[i - 1];
|
||||
if (oldSituation.transferGroundElevation(newSituation, radius)) { c++; }
|
||||
if (oldSituation.transferGroundElevationFromThis(newSituation, radius)) { c++; }
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user