ICAROUS
All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros Modules Pages
Public Member Functions | Private Attributes | List of all members
larcfm::CDPolycarp Class Reference
Inheritance diagram for larcfm::CDPolycarp:
larcfm::DetectionPolygon larcfm::ParameterAcceptor larcfm::ParameterProvider

Public Member Functions

 CDPolycarp (double b, double f, bool check)
 
bool isNicePolygon (const Poly3D &mp) const
 
bool isNicePolygon (const MovingPolygon3D &mp) const
 
double getBuff () const
 
void setBuff (double x)
 
double getFac () const
 
void setFac (double x)
 
void setCheckNice (bool b)
 
bool isCheckNice ()
 
bool definitelyInside (const Vect3 &so, const Poly3D &si) const
 
bool definitelyOutside (const Vect3 &so, const Poly3D &si) const
 
bool nearEdge (const Vect3 &so, const Poly3D &si, double h, double v) const
 
ParameterData getParameters () const
 
void updateParameterData (ParameterData &p) const
 
void setParameters (const ParameterData &p)
 
bool violation (const Vect3 &so, const Velocity &vo, const Poly3D &si) const
 
bool conflict (const Vect3 &so, const Velocity &vo, const MovingPolygon3D &si, double B, double T) const
 
bool conflictDetection (const Vect3 &so, const Velocity &vo, const MovingPolygon3D &si, double B, double T)
 
std::vector< double > getTimesIn () const
 
std::vector< double > getTimesOut () const
 
std::vector< double > getCriticalTimesOfConflict () const
 
std::vector< double > getDistancesAtCriticalTimes () const
 
DetectionPolygonmake () const
 
DetectionPolygoncopy () const
 
std::string toString () const
 
std::string getClassName () const
 
std::string getIdentifier () const
 
void setIdentifier (const std::string &s)
 
bool equals (DetectionPolygon *d) const
 
- Public Member Functions inherited from larcfm::DetectionPolygon
bool instanceof (const std::string &classname) const
 

Private Attributes

std::vector< double > tin
 
std::vector< double > tout
 
std::vector< double > tca
 
std::vector< double > tdist
 
double buff
 
double fac
 
std::string id
 
bool checkNice
 

Member Function Documentation

◆ conflict()

bool larcfm::CDPolycarp::conflict ( const Vect3 so,
const Velocity vo,
const MovingPolygon3D si,
double  B,
double  T 
) const
virtual

◆ conflictDetection()

bool larcfm::CDPolycarp::conflictDetection ( const Vect3 so,
const Velocity vo,
const MovingPolygon3D si,
double  B,
double  T 
)
virtual

◆ copy()

DetectionPolygon * larcfm::CDPolycarp::copy ( ) const
virtual

◆ definitelyInside()

bool larcfm::CDPolycarp::definitelyInside ( const Vect3 so,
const Poly3D si 
) const

Return true if ownship is definitely inside a polygon (fence)

Parameters
soownship position
sipolygon
Returns
true if definitely inside

◆ definitelyOutside()

bool larcfm::CDPolycarp::definitelyOutside ( const Vect3 so,
const Poly3D si 
) const

Return true if ownship is definitely outside a polygon (fence)

Parameters
soownship position
sipolygon
Returns
true if definitely outside

◆ equals()

bool larcfm::CDPolycarp::equals ( DetectionPolygon o) const
virtual

Return true if two instances have identical parameters (including identifiers). Use address equality (&x == &y) to distinguish instances.

Implements larcfm::DetectionPolygon.

◆ getClassName()

std::string larcfm::CDPolycarp::getClassName ( ) const
virtual

◆ getCriticalTimesOfConflict()

std::vector< double > larcfm::CDPolycarp::getCriticalTimesOfConflict ( ) const
virtual

◆ getDistancesAtCriticalTimes()

std::vector< double > larcfm::CDPolycarp::getDistancesAtCriticalTimes ( ) const
virtual

◆ getIdentifier()

std::string larcfm::CDPolycarp::getIdentifier ( ) const
virtual

◆ getParameters()

ParameterData larcfm::CDPolycarp::getParameters ( ) const
virtual

◆ getTimesIn()

std::vector< double > larcfm::CDPolycarp::getTimesIn ( ) const
virtual

◆ getTimesOut()

std::vector< double > larcfm::CDPolycarp::getTimesOut ( ) const
virtual

◆ isNicePolygon()

bool larcfm::CDPolycarp::isNicePolygon ( const MovingPolygon3D mp) const

Polycarp only produces valid answers for "nice" polygons. These are simple polygons that have vertices in a counterclockwise ordering. If all polygons are assured to be "nice" before input, setCheckNice() can be set to FALSE, increasing performance.

Parameters
mpstatic polygon to check
Returns
true if the polygon is "nice", false otherwise.

◆ make()

DetectionPolygon * larcfm::CDPolycarp::make ( ) const
virtual

◆ nearEdge()

bool larcfm::CDPolycarp::nearEdge ( const Vect3 so,
const Poly3D si,
double  h,
double  v 
) const

Return true if ownship is near an edge

Parameters
soownship position
sipolygon
happroximate horizontal buffer distance from edge
vapproximate vertical buffer distance from edge
Returns
true if ownship is within d of an edge (including top and bottom)

◆ setCheckNice()

void larcfm::CDPolycarp::setCheckNice ( bool  b)

Set the flag for Polycarp to check that polygons are "nice" as part of the detection step. A non-nice polygon is considered bad input to the algorithm. This check is really only needed once for each polygon, so it may be redundant if detection is called repeatedly on an unchanging polygon. If on, this check will also attempt to automatically reverse the order of clockwise polygons.

Parameters
b

◆ setIdentifier()

void larcfm::CDPolycarp::setIdentifier ( const std::string &  s)
virtual

◆ setParameters()

void larcfm::CDPolycarp::setParameters ( const ParameterData p)
virtual

◆ toString()

std::string larcfm::CDPolycarp::toString ( ) const
virtual

◆ updateParameterData()

void larcfm::CDPolycarp::updateParameterData ( ParameterData p) const
virtual

◆ violation()

bool larcfm::CDPolycarp::violation ( const Vect3 so,
const Velocity vo,
const Poly3D si 
) const
virtual

The documentation for this class was generated from the following files: