// runwaybase.cxx -- a base class for runways and taxiways
//
-// Written by James Turber, started December 2008.
+// Written by James Turner, started December 2008.
//
// Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt
//
* 12 - lakebed
*/
-FGRunwayBase::FGRunwayBase(Type aTy, const string& aIdent,
+FGRunwayBase::FGRunwayBase(PositionedID aGuid, Type aTy, const string& aIdent,
const SGGeod& aGeod,
const double heading, const double length,
const double width,
- const int surface_code,
- bool index) :
- FGPositioned(aTy, aIdent, aGeod)
+ const int surface_code) :
+ FGPositioned(aGuid, aTy, aIdent, aGeod)
{
_heading = heading;
_length = length;
_width = width;
_surface_code = surface_code;
-
- init(index);
}
SGGeod FGRunwayBase::pointOnCenterline(double aOffset) const
{
- SGGeod result;
- double dummyAz2;
- double halfLengthMetres = lengthM() * 0.5;
-
- SGGeodesy::direct(mPosition, _heading,
- aOffset - halfLengthMetres,
- result, dummyAz2);
+ SGGeod result = SGGeodesy::direct(geod(), _heading, aOffset);
+ result.setElevationM(geod().getElevationM());
+
return result;
}
-
-
SGGeod FGRunwayBase::pointOffCenterline(double aOffset, double lateralOffset) const
{
SGGeod result;
SGGeod temp;
double dummyAz2;
- double halfLengthMetres = lengthM() * 0.5;
- SGGeodesy::direct(mPosition, _heading,
- aOffset - halfLengthMetres,
- temp, dummyAz2);
+ SGGeodesy::direct(geod(), _heading, aOffset, temp, dummyAz2);
- SGGeodesy::direct(temp, (_heading+90.0),
+ SGGeodesy::direct(temp, SGMiscd::normalizePeriodic(0, 360,_heading+90.0),
lateralOffset,
result, dummyAz2);
return ((_surface_code == 1) || (_surface_code == 2));
}
-FGTaxiway::FGTaxiway(const string& aIdent,
+FGTaxiway::FGTaxiway(PositionedID aGuid,
+ const string& aIdent,
const SGGeod& aGeod,
const double heading, const double length,
const double width,
const int surface_code) :
- FGRunwayBase(TAXIWAY, aIdent, aGeod, heading, length, width, surface_code, false)
+ FGRunwayBase(aGuid, TAXIWAY, aIdent, aGeod, heading, length, width, surface_code)
{
}