/** * Constructor * * @param loc Location of tip of sector * @param _radius Radius of sector (m) * @param _startRadial Start radial (degrees), most counter-clockwise * @param _endRadial End radial (degrees), most clockwise * * @return Initialised object */ SectorZone(const GeoPoint &loc, const fixed _radius = fixed(10000.0), const Angle _startRadial = Angle::Zero(), const Angle _endRadial = Angle::FullCircle()) :CylinderZone(SECTOR, loc, _radius), StartRadial(_startRadial), EndRadial(_endRadial) { updateSector(); }
/** * Constructor * * @param loc Tip point of sector * @param is_turnpoint Whether the sector is a turnpoint, or start/finish * * @return Initialised object */ FAISectorZone(const GeoPoint loc, const bool is_turnpoint=true): SymmetricSectorZone(FAI_SECTOR, loc, fixed(1000.0 * (is_turnpoint ? 10 : 1)), Angle::radians(fixed_half_pi)), m_is_turnpoint(is_turnpoint) { updateSector(); }
/** * Constructor * * @param loc Location of tip of sector * @param _radius Radius of sector (m) * @param _startRadial Start radial (degrees), most counter-clockwise * @param _endRadial End radial (degrees), most clockwise * * @return Initialised object */ AnnularSectorZone(const GeoPoint &loc, const fixed _radiusOuter=fixed(10000.0), const Angle _startRadial = Angle::zero(), const Angle _endRadial = Angle::radians(fixed_two_pi), const fixed _InnerRadius = fixed(0.0)): SectorZone(ANNULAR_SECTOR, loc, _radiusOuter, _startRadial, _endRadial), InnerRadius(_InnerRadius) { updateSector(); }
/** * Constructor * * @param loc Location of tip of sector * @param _radius Radius of sector (m) * @param _startRadial Start radial (degrees), most counter-clockwise * @param _endRadial End radial (degrees), most clockwise * * @return Initialised object */ SectorZone(const GeoPoint &loc, const fixed _radius=fixed(10000.0), const Angle _startRadial = Angle::native(fixed_zero), const Angle _endRadial = Angle::radians(fixed_two_pi)): CylinderZone(SECTOR, loc, _radius), StartRadial(_startRadial), EndRadial(_endRadial) { updateSector(); }
/** * Set radius property * * @param new_radius Radius (m) of cylinder */ virtual void setRadius(fixed new_radius) { CylinderZone::setRadius(new_radius); InnerRadius = std::min(new_radius, InnerRadius); updateSector(); }
/** * Set inner radius of annulus * * @param x Radius (m) of inner boundary */ void setInnerRadius(const fixed new_radius) { InnerRadius = new_radius; Radius = std::max(Radius, InnerRadius); updateSector(); }
void SectorZone::setEndRadial(const Angle x) { EndRadial = x; updateSector(); }
void SectorZone::setStartRadial(const Angle x) { StartRadial = x; updateSector(); }
/** * Constructor * * @param loc Tip point of sector * * @return Initialised object */ BGAEnhancedOptionZone(const GeoPoint loc) :KeyholeZone(BGAENHANCEDOPTION, loc, fixed(10000.0), Angle::HalfCircle()) { updateSector(); }
/** * Set radius property * * @param new_radius Radius (m) of cylinder */ virtual void setRadius(fixed new_radius) { CylinderZone::setRadius(new_radius); updateSector(); }
/** * Constructor * * @param loc Tip point of sector * * @return Initialised object */ KeyholeZone(const GeoPoint loc): SymmetricSectorZone(KEYHOLE, loc, fixed(10000.0), Angle::radians(fixed_half_pi)) { updateSector(); }