bool SectorZone::IsInSector(const AircraftState &ref) const { GeoVector f(get_location(), ref.location); return f.distance <= Radius && angleInSector(f.bearing); }
bool BGAEnhancedOptionZone::isInSector(const AIRCRAFT_STATE &ref) const { GeoVector f(get_location(), ref.Location); return (f.Distance<= fixed(500)) || ((f.Distance<=Radius) && angleInSector(f.Bearing)); }
bool AnnularSectorZone::IsInSector(const AircraftState &ref) const { GeoVector f(get_location(), ref.location); return (f.Distance <= Radius) && (f.Distance >= InnerRadius) && angleInSector(f.Bearing); }
bool AnnularSectorZone::isInSector(const AIRCRAFT_STATE &ref) const { GeoVector f(get_location(), ref.Location); return (f.Distance <= Radius) && (f.Distance >= InnerRadius) && angleInSector(f.Bearing); }
bool KeyholeZone::isInSector(const AIRCRAFT_STATE &ref) const { GeoVector f(get_location(), ref.Location); return f.Distance <= fixed(500) || (f.Distance <= Radius && angleInSector(f.Bearing)); }
GeoPoint BGAEnhancedOptionZone::get_boundary_parametric(fixed t) const { const Angle half = getStartRadial().HalfAngle(getEndRadial()); const Angle angle = (Angle::radians(t*fixed_two_pi)+half).as_bearing(); if (angleInSector(angle)) { return GeoVector(Radius, angle).end_point(get_location()); } else { return GeoVector(fixed(500), angle).end_point(get_location()); } }