X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAirports%2Frunways.cxx;h=c3e48ecbbd67325b2993498d3f893fe002124b00;hb=960f6881c993a32613e542d1475ad0d1ae97b927;hp=c076d8cfc1ff0f44d5f3233742256abab563ca01;hpb=5f134cdec82692e4a414af302a8f30c3825ebe64;p=flightgear.git diff --git a/src/Airports/runways.cxx b/src/Airports/runways.cxx index c076d8cfc..c3e48ecbb 100644 --- a/src/Airports/runways.cxx +++ b/src/Airports/runways.cxx @@ -27,6 +27,7 @@ #include // sprintf() #include // atoi() +#include #include @@ -36,6 +37,9 @@ #include "runways.hxx" +#include +#include + using std::string; static std::string cleanRunwayNo(const std::string& aRwyNo) @@ -151,9 +155,8 @@ void FGRunway::processThreshold(SGPropertyNode* aThreshold) _displ_thresh = aThreshold->getDoubleValue("displ-m") * SG_METER_TO_FEET; _stopway = aThreshold->getDoubleValue("stopw-m") * SG_METER_TO_FEET; - // compute the new runway center, based on the threshold lat/lon, length, - // and any displaced threshold. - double offsetFt = (0.5 * _length) - _displ_thresh; + // compute the new runway center, based on the threshold lat/lon and length, + double offsetFt = (0.5 * _length); SGGeod newCenter; double dummy; SGGeodesy::direct(newThreshold, _heading, offsetFt * SG_FEET_TO_METER, newCenter, dummy); @@ -168,3 +171,30 @@ void FGRunway::setReciprocalRunway(FGRunway* other) _reciprocal = other; } +std::vector FGRunway::getSIDs() +{ + std::vector result; + for (unsigned int i=0; i<_airport->numSIDs(); ++i) { + flightgear::SID* s = _airport->getSIDByIndex(i); + if (s->isForRunway(this)) { + result.push_back(s); + } + } // of SIDs at the airport iteration + + return result; +} + +std::vector FGRunway::getSTARs() +{ + std::vector result; + for (unsigned int i=0; i<_airport->numSTARs(); ++i) { + flightgear::STAR* s = _airport->getSTARByIndex(i); + if (s->isForRunway(this)) { + result.push_back(s); + } + } // of STARs at the airport iteration + + return result; +} + +