ICAROUS
|
Typedefs | |
typedef int | ProjectionType |
Enumerations | |
enum | { UNKNOWN_PROJECTION , SIMPLE , SIMPLE_NO_POLAR , ENU , AZIEQUI , ORTHO } |
Functions | |
void | set_time_accuracy (double acc) |
void | set_horizontal_accuracy (double acc) |
void | set_vertical_accuracy (double acc) |
double | get_time_accuracy () |
double | get_horizontal_accuracy () |
double | get_vertical_accuracy () |
bool | almost_equals_time (double t1, double t2) |
bool | almost_equals_xy (double x1, double y1, double x2, double y2) |
bool | almost_equals_distance (double d) |
bool | almost_equals_radian (double d1, double d2) |
bool | almost_equals_radian (double d) |
bool | almost_equals_alt (double a1, double a2) |
template<typename T > | |
T | parameter_data (const ParameterData &p, const std::string &key, Function< const std::string &, T > &f) |
std::string | Fmi (int v) |
std::string | Fmui (unsigned int v) |
std::string | Fmul (unsigned long v) |
std::string | Fm0 (double v) |
std::string | Fm1 (double v) |
std::string | Fm2 (double v) |
std::string | Fm2z (double v) |
std::string | Fm3 (double v) |
std::string | Fm3z (double v) |
std::string | Fm4 (double v) |
std::string | Fm6 (double v) |
std::string | Fm8 (double v) |
std::string | Fm12 (double v) |
std::string | Fm16 (double v) |
std::string | FmLead (int i, int minLength) |
std::string | FmPrecision (double v) |
std::string | FmPrecision (double v, int precision) |
std::string | FmPrecision (double v, int precision, bool includeTrailingZeros) |
std::string | Fmb (bool b) |
std::string | FmVec (Vect2 v) |
std::string | FmVec (Vect3 v) |
std::string | padLeft (std::string s, int n) |
std::string | padRight (std::string s, int n) |
std::string | bool2str (bool b) |
void | fpln (const std::string &str) |
void | fp (const std::string &str) |
void | fpln (std::ostream *os, const std::string &str) |
void | fp (std::ostream *os, const std::string &str) |
void | fdln (const std::string &str) |
std::string | fsStr (const Vect2 &s) |
std::string | fsStr (const Vect3 &s) |
std::string | fsStrNP (const Vect3 &v, int prec, const std::string &xunits, const std::string &yunits, const std::string &zunits) |
std::string | fsStrNP (const Vect3 &s, int prec) |
std::string | fsStr8NP (const Vect3 &s) |
std::string | fsStr15NP (const Vect3 &s) |
std::string | fvStr (const Vect2 &s) |
std::string | fvStr (const Vect3 &s) |
std::string | fvStr2 (const Vect2 &v) |
std::string | fvStr2 (const Vect3 &v) |
std::string | FmPair (const std::pair< int, int > &p) |
std::string | FmPair (const std::pair< double, double > &p) |
std::string | FmTriple (const Triple< int, int, int > &p) |
std::string | FmTriple (const Triple< double, double, double > &p) |
std::string | Fobj (const std::vector< int > &v) |
std::string | Fobj (const std::vector< double > &v) |
std::string | Fobj (const std::vector< std::string > &v) |
std::string | Fobj (const std::vector< std::pair< int, int > > &v) |
std::string | Fobj (const std::vector< std::pair< double, double > > &v) |
std::string | Fobj (const std::vector< Triple< int, int, int > > &v) |
std::string | Fobj (const std::vector< Triple< double, double, double > > &v) |
std::string | Fobj (const std::map< std::string, std::string > &v) |
std::string | Fobj (const std::map< int, int > &v) |
std::string | Fobj (const std::map< int, std::string > &v) |
std::string | Fobj (const std::map< std::string, int > &v) |
std::string | Fobj (const std::map< double, double > &v) |
std::string | Fobj (const std::map< double, std::string > &v) |
std::string | Fobj (const std::map< std::string, double > &v) |
std::string | list2str (const std::vector< std::string > &l, const std::string &delimiter) |
std::string | Farray (int const v[], int sz) |
std::string | Farray (double const v[], int sz) |
std::string | Farray (std::string const v[], int sz) |
std::string | double2PVS (double val) |
std::string | double2PVS (double val, int precision) |
template<typename L , typename R > | |
Pair< L, R > | make (const L &left, const R &right) |
template<typename L , typename R > | |
bool | operator== (const Pair< L, R > &t1, const Pair< L, R > &t2) |
template<typename L , typename R > | |
bool | operator!= (const Pair< L, R > &t1, const Pair< L, R > &t2) |
std::ostream & | operator<< (std::ostream &os, const Plan &f) |
EuclideanProjection | getProjection (double lat, double lon, double alt) |
EuclideanProjection | getProjection (const LatLonAlt &lla) |
double | projectionConflictRange (double lat, double accuracy) |
double | projectionMaxRange () |
void | setProjectionType (ProjectionType t) |
ProjectionType | getProjectionTypeFromString (std::string s) |
ProjectionType | getProjectionType () |
template<typename T1 , typename T2 , typename T3 , typename T4 > | |
bool | operator== (const Quad< T1, T2, T3, T4 > &q1, const Quad< T1, T2, T3, T4 > &q2) |
template<typename T1 , typename T2 , typename T3 , typename T4 > | |
bool | operator!= (const Quad< T1, T2, T3, T4 > &q1, const Quad< T1, T2, T3, T4 > &q2) |
template<typename T1 , typename T2 , typename T3 , typename T4 > | |
bool | operator< (const Quad< T1, T2, T3, T4 > &q1, const Quad< T1, T2, T3, T4 > &q2) |
template<typename T1 , typename T2 , typename T3 , typename T4 > | |
bool | operator> (const Quad< T1, T2, T3, T4 > &q1, const Quad< T1, T2, T3, T4 > &q2) |
Vect2 | polar_xy (const LatLonAlt &lla, bool north) |
LatLonAlt | polar_inverse (const Vect2 &v, double alt, bool north) |
std::vector< std::string > | split (const std::string &str, const std::string &delimiters) |
std::vector< std::string > | split_empty (const std::string &str, const std::string &delimiters) |
std::vector< std::string > | split_string_empty (const std::string &str, const std::string &delimiter) |
std::vector< std::string > | split_regex (const std::string &str, const std::string &delimiters) |
bool | matches (const std::string &s, const std::string &rgx_str) |
std::string | substring (const std::string &s, int begin, int end) |
std::string | substring (const std::string &s, int begin) |
void | trim (std::string &s, const std::string &drop=" \t\r\n") |
std::string | trimCopy (const std::string &s, const std::string &drop=" \t\r\n") |
std::string | toLowerCase (const std::string &str) |
std::string | toUpperCase (const std::string &str) |
bool | equals (const std::string &, const std::string &) |
bool | equalsIgnoreCase (const std::string &, const std::string &) |
void | replace (std::string &s, char c1, char c2) |
std::string | replace (const std::string &s, const std::string &s1, const std::string &s2) |
bool | contains (const std::vector< std::string > &v, const std::string &s) |
bool | contains (const std::string &str, const std::string &sub) |
bool | startsWith (const std::string &str, const std::string &prefix) |
bool | endsWith (const std::string &str, const std::string &suffix) |
int | parseInt (const std::string &str) |
bool | operator< (const TrafficCoreState &lhs, const TrafficCoreState &rhs) |
template<typename L , typename C , typename R > | |
Triple< L, C, R > | make (const L &left, const C ¢er, const R &right) |
template<typename L , typename C , typename R > | |
bool | operator== (const Triple< L, R, C > &t1, const Triple< L, R, C > &t2) |
template<typename L , typename C , typename R > | |
bool | operator!= (const Triple< L, R, C > &t1, const Triple< L, R, C > &t2) |
template<typename L , typename C , typename R > | |
bool | operator< (const Triple< L, R, C > &t1, const Triple< L, R, C > &t2) |
template<typename L , typename C , typename R > | |
bool | operator> (const Triple< L, R, C > &t1, const Triple< L, R, C > &t2) |
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > | |
bool | operator== (const Tuple5< T1, T2, T3, T4, T5 > &q1, const Tuple5< T1, T2, T3, T4, T5 > &q2) |
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > | |
bool | operator!= (const Tuple5< T1, T2, T3, T4, T5 > &q1, const Tuple5< T1, T2, T3, T4, T5 > &q2) |
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > | |
bool | operator< (const Tuple5< T1, T2, T3, T4, T5 > &q1, const Tuple5< T1, T2, T3, T4, T5 > &q2) |
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > | |
bool | operator> (const Tuple5< T1, T2, T3, T4, T5 > &q1, const Tuple5< T1, T2, T3, T4, T5 > &q2) |
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > | |
bool | operator== (const Tuple6< T1, T2, T3, T4, T5, T6 > &q1, const Tuple6< T1, T2, T3, T4, T5, T6 > &q2) |
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > | |
bool | operator!= (const Tuple6< T1, T2, T3, T4, T5, T6 > &q1, const Tuple6< T1, T2, T3, T4, T5, T6 > &q2) |
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > | |
bool | operator< (const Tuple6< T1, T2, T3, T4, T5, T6 > &q1, const Tuple6< T1, T2, T3, T4, T5, T6 > &q2) |
double | _FormalATM_gn () |
double | _FormalATM_P0 () |
template<class T > | |
std::string | to_string (const T &t) |
template<typename T > | |
void | remove (T a[], int i, int size) |
double | sq (const double x) |
INT64FM | llabs (const INT64FM x) |
** More... | |
double | sqrt_safe (const double x) |
double | atan2_safe (const double y, const double x) |
double | asin_safe (double x) |
double | acos_safe (double x) |
double | discr (const double a, const double b, const double c) |
double | root (const double a, const double b, const double c, int eps) |
double | root2b (const double a, const double b, const double c, const int eps) |
int | sign (const double x) |
double | to_pi (double rad) |
double | to_360 (double deg) |
double | to_2pi (double rad) |
double | to_pi2_cont (double rad) |
double | to_180 (double deg) |
double | trkgs2vx (double trk, double gs) |
double | trkgs2vy (double trk, double gs) |
Vect2 | trkgs2v (double trk, double gs) |
double | tau_vv (const Vect2 &s, const Vect2 &v, const double B, const double T) |
double | omega_vv (const Vect2 &s, const Vect2 &v, const double D, const double B, const double T) |
void | setCoreDetection (Detection3D *c) |
Horizontal | losr_gs_iter_aux (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, double minrelgs, double mings, double maxgs, double step, int epsh) |
bool | eq (double a, double b, double e) |
bool | gt (double a, double b, double e) |
double | R (const Vect2 &sp, double D) |
bool | closed_region_3D (const Vect3 &s, const Vect3 &p, int eps, int dir, const Vect3 &v, double D, double H) |
bool | horizontal_los (const Vect2 &s, double D) |
bool | vertical_los (double sz, double H) |
std::list< double > | verticalSpeeds1D (const double sz, const double viz, const double H, const double B, const double T) |
double | fm_nz (double v, int precision) |
string | padLeft (string s, int n) |
string | padRight (string s, int n) |
void | fpln (const string &str) |
void | fp (const string &str) |
void | fpln (ostream *os, const string &str) |
void | fp (ostream *os, const string &str) |
void | fdln (const string &str) |
std::vector< std::string > | toStringList (const Vect3 &v, const string &unitx, const string &unity, const string &unitz, int precision, bool units) |
string | fsStrNP (const Vect3 &v, int prec, const string &xunits, const string &yunits, const string &zunits) |
Vect2 | Q (const Vect2 &s, double D, int eps) |
bool | isLeftTurn (const Vect2 &from, const Vect2 &to) |
int | boolean2eps (bool b) |
double | V1 (double voz, double a1, double t) |
** returns Pair that contains position and velocity at time t due to level out maneuver More... | |
double | S1 (double voz, double a1, double t) |
double | T3 (double voz, double a1) |
double | S3 (double voz, double a1) |
const LossData & | EMPTY () |
std::vector< Position > | genList_l (const std::vector< LatLonAlt > &lList) |
std::vector< Position > | genList_v (const std::vector< Vect2 > &vList) |
vector< string > | split (const string &str, const string &delimiters) |
vector< string > | split_empty (const string &str, const string &delimiters) |
vector< string > | split_string_empty (const string &str, const string &delimiter) |
bool | matches (const string &s, const string &rgx_str) |
string | substring (const string &s, int begin, int end) |
string | substring (const string &s, int begin) |
void | trim (string &s, const string &drop) |
std::string | trimCopy (const string &s, const string &drop) |
string | toLowerCase (const string &strToConvert) |
string | toUpperCase (const string &strToConvert) |
bool | equals (const string &s1, const string &s2) |
bool | equalsIgnoreCase (const string &s1, const string &s2) |
double | InitTangentLineX (const Vect2 &s, const double D, const int eps) |
double | InitTangentLineY (const Vect2 &s, const double D, const int eps) |
Vertical | vs_at (const double sz, const double t, const int eps, const double H) |
Vertical | vs_only (const Vect3 &s, const Vect2 &v, const double t, const int eps, const double D, const double H) |
Variables | |
const double | em6DegtoMeter = 0.15 |
const double | minDist = 1E-9 |
const double | gsAccel = 2 |
const double | vsAccel = 1 |
const double | bankAngle = Units::from("deg", 10) |
CriteriaCore.cpp
State-based Implicit Criteria
Copyright (c) 2011-2020 United States Government as represented by the National Aeronautics and Space Administration. No copyright is claimed in the United States under Title 17, U.S.Code. All Other Rights Reserved.
Objects of class "Daidalus" compute the conflict bands using kinematic single-maneuver projections of the ownship and linear preditions of (multiple) traffic aircraft positions. The bands consist of ranges of guidance maneuvers: direction angles, horizontal speeds, vertical speeds, and altitude.
An assumption of the bands information is that the traffic aircraft do not maneuver. If the ownship immediately executes a NONE guidance maneuver, then the new path is conflict free (within a lookahead time of the parameter). If the ownship immediately executes a NEAR/MID/FAR guidance maneuver and no traffic aircraft maneuvers, then there will corresponding alert within the corresponding alerting level thresholds.
If recovery bands are set and the ownship is in a violation path, loss of separation recovery bands and recovery times are computed for each type of maneuver. If the ownship immediately executes a RECOVERY guidance maneuver, then the new path is conflict-free after the recovery time. Furthermore, the recovery time is the minimum time for which there exists a kinematic conflict-free maneuver in the future.
Note that in the case of geodetic coordinates this version of bands performs an internal projection of the coordinates and velocities into the Euclidean frame (see Util/Projection). Accuracy may be reduced if the traffic plans involve any segments longer than Util.Projection.projectionConflictRange(lat,acc), and an error will be logged if the distance between traffic and ownship exceeds Util.Projection.projectionMaxRange() at any point in the lookahead range.
Disclaimers: The formal proofs of the core algorithms use real numbers, however these implementations use floating point numbers, so numerical differences could result. In addition, the geodetic computations include certain inaccuracies, especially near the poles.
The basic usage is
Daidalus daa = new Daidalus(); daa.loadFromFile(<configurationfile>); ... daa.setOwnshipState(position of ownship, velocity of ownship); daa.addTrafficState(position of (one) traffic aircraft, velocity of traffic); daa.addTrafficState(position of (another) traffic aircraft, velocity of traffic); ...add other traffic aircraft... for (int i = 0; i < daa.horizontalDirectionBandsLength(); i++ ) { interval = daa.horizontalDirectionIntervalAt(i); lower_ang = intrval.low; upper_ang = intrval.up; regionType = daa.horizontalDirectionRegionAt(i); ..do something with this information.. } ...similar for horizontal speed and vertical speed...
Encapsulates a geometric polygon. The polygon is defined in terms of its vertex coordinates. This implementation assumes a simply connected polygon. The Polygon is otherwise quite general allowing multiply connected regions. The class provides a containment test for points and uses bounding rectangles to speed up computations.
Projection from Spherical Earth to Euclidean Plane
Authors: George Hagen NASA Langley Research Center Ricky Butler NASA Langley Research Center Jeff Maddalon NASA Langley Research Center Anthony Narkawicz NASA Langley Research Center
Holding area for universal projection information. All projection objects should be retrieved using these functions.
Copyright (c) 2011-2020 United States Government as represented by the National Aeronautics and Space Administration. No copyright is claimed in the United States under Title 17, U.S.Code. All Other Rights Reserved.
A basic polygon that describes a volume. This volume has a flat bottom and top (specified as altitude values). Points describe the cross-section area vertices in a consistently clockwise (or consistently counter-clockwise) manner. The cross-section need not be convex, but an "out of order" listing of the vertices will result in edges that cross, and will cause several calculations to fail (with no warning).
A SimplePoly sets the altitude for all its points to be the bottom altitude, while the top is stored elsewhere as a single value. The exact position for "top" vertices is computed on demand.
The cross-section must be a simple polygon, that is it allows for non-convex areas, but vertices and edges may not overlap or cross. Vertices may be ordered in either a clockwise or counterclockwise manner.
(A vertex-complete polygon allows for vertices and edges to overlap but not cross, while a general polygon allows for edges to cross.)
Point indices are based on the order they are added.
Note: polygon support is experimental and the interface is subject to change!
double larcfm::_FormalATM_gn | ( | ) |
See Units::gn
double larcfm::_FormalATM_P0 | ( | ) |
See Units::P0
double larcfm::acos_safe | ( | double | x | ) |
bool larcfm::almost_equals_alt | ( | double | a1, |
double | a2 | ||
) |
bool larcfm::almost_equals_distance | ( | double | d | ) |
bool larcfm::almost_equals_radian | ( | double | d | ) |
bool larcfm::almost_equals_radian | ( | double | d1, |
double | d2 | ||
) |
bool larcfm::almost_equals_time | ( | double | t1, |
double | t2 | ||
) |
bool larcfm::almost_equals_xy | ( | double | x1, |
double | y1, | ||
double | x2, | ||
double | y2 | ||
) |
double larcfm::asin_safe | ( | double | x | ) |
double larcfm::atan2_safe | ( | const double | y, |
const double | x | ||
) |
string larcfm::bool2str | ( | bool | b | ) |
Returns true/false string
int larcfm::boolean2eps | ( | bool | b | ) |
Converts a "true" to a +1 value, a "false" to a -1
bool larcfm::contains | ( | const std::string & | str, |
const std::string & | sub | ||
) |
Is the given string sub a substring of str?
bool larcfm::contains | ( | const std::vector< std::string > & | v, |
const std::string & | s | ||
) |
Is the given string in the list?
double larcfm::discr | ( | const double | a, |
const double | b, | ||
const double | c | ||
) |
bool larcfm::endsWith | ( | const std::string & | str, |
const std::string & | suffix | ||
) |
Does str end with the suffix?
bool larcfm::eq | ( | double | a, |
double | b, | ||
double | e | ||
) |
An algebraic way to determine a*sqrt(b) = e.
bool larcfm::equals | ( | const std::string & | , |
const std::string & | |||
) |
return true if two strings are the same values
bool larcfm::equalsIgnoreCase | ( | const std::string & | , |
const std::string & | |||
) |
return true if two strings are the same values, ignoring case
string larcfm::Farray | ( | double const | v[], |
int | sz | ||
) |
Print double array
string larcfm::Farray | ( | int const | v[], |
int | sz | ||
) |
Print int array
string larcfm::Farray | ( | std::string const | v[], |
int | sz | ||
) |
Print string array
void larcfm::fdln | ( | const std::string & | str | ) |
send string to the error console with a "carriage return"
string larcfm::Fm0 | ( | double | v | ) |
Format a double with 0 decimal places
string larcfm::Fm1 | ( | double | v | ) |
Format a double with 1 decimal place
string larcfm::Fm12 | ( | double | v | ) |
Format a double with 12 decimal place
string larcfm::Fm16 | ( | double | v | ) |
Format a double with 16 decimal place
string larcfm::Fm2 | ( | double | v | ) |
Format a double with 2 decimal place
string larcfm::Fm2z | ( | double | v | ) |
Format a double with 2 decimal place, filled with zeros
string larcfm::Fm3 | ( | double | v | ) |
Format a double with 3 decimal place
string larcfm::Fm3z | ( | double | v | ) |
Format a double with 3 decimal place, filled with zeros
string larcfm::Fm4 | ( | double | v | ) |
Format a double with 4 decimal place
string larcfm::Fm6 | ( | double | v | ) |
Format a double with 6 decimal place
string larcfm::Fm8 | ( | double | v | ) |
Format a double with 8 decimal place
string larcfm::Fmi | ( | int | v | ) |
Format an int with 0 decimal places
string larcfm::FmLead | ( | int | i, |
int | minLength | ||
) |
Format an integer to have at least minLength digits, prepending zeros as necessary
string larcfm::Fmui | ( | unsigned int | v | ) |
Format an unsigned in with 0 decimal places
string larcfm::Fmul | ( | unsigned long | v | ) |
Format an unsigned long with 0 decimal places
string larcfm::FmVec | ( | Vect2 | v | ) |
Format a vector
string larcfm::FmVec | ( | Vect3 | v | ) |
Format a vector
void larcfm::fp | ( | const std::string & | str | ) |
send a string to the console without a "carriage return"
void larcfm::fp | ( | std::ostream * | os, |
const std::string & | str | ||
) |
send a string to the console without a "carriage return"
void larcfm::fpln | ( | const std::string & | str | ) |
send string to the console with a "carriage return"
void larcfm::fpln | ( | std::ostream * | os, |
const std::string & | str | ||
) |
send string to the console with a "carriage return"
string larcfm::fsStr | ( | const Vect2 & | s | ) |
Format a position vector
string larcfm::fsStr | ( | const Vect3 & | s | ) |
Format a position vector
string larcfm::fvStr | ( | const Vect2 & | s | ) |
Format a velocity vector as a Euclidean velocity
string larcfm::fvStr | ( | const Vect3 & | s | ) |
Format a velocity vector as a Euclidean velocity
string larcfm::fvStr2 | ( | const Vect2 & | v | ) |
Format a velocity vector as a polar velocity
string larcfm::fvStr2 | ( | const Vect3 & | v | ) |
Format a velocity vector as a polar velocity
double larcfm::get_horizontal_accuracy | ( | ) |
double larcfm::get_time_accuracy | ( | ) |
double larcfm::get_vertical_accuracy | ( | ) |
EuclideanProjection larcfm::getProjection | ( | const LatLonAlt & | lla | ) |
EuclideanProjection larcfm::getProjection | ( | double | lat, |
double | lon, | ||
double | alt | ||
) |
ProjectionType larcfm::getProjectionType | ( | ) |
ProjectionType larcfm::getProjectionTypeFromString | ( | std::string | s | ) |
bool larcfm::gt | ( | double | a, |
double | b, | ||
double | e | ||
) |
An algebraic way to determine a*sqrt(b) > e.
true iff the trajectory following "from" to "to" is a left turn "from" is your current vector of travel, "to" is your goal vector of travel
INT64FM larcfm::llabs | ( | const INT64FM | x | ) |
Triple< L, C, R > larcfm::make | ( | const L & | left, |
const C & | center, | ||
const R & | right | ||
) |
Make a Triple
left | first element of tuple |
center | second element of tuple |
right | third element of tuple |
<L> | Type of the first element of the tuple |
<C> | Type of the second element of the tuple |
<R> | Type of the third element of the tuple |
Pair< L, R > larcfm::make | ( | const L & | left, |
const R & | right | ||
) |
Make a Pair
left | left element |
right | right element |
<L> | Type of leftmost element |
<R> | Type of rightmost element |
bool larcfm::operator!= | ( | const Pair< L, R > & | t1, |
const Pair< L, R > & | t2 | ||
) |
Are these two Pairs unequal?
bool larcfm::operator!= | ( | const Quad< T1, T2, T3, T4 > & | q1, |
const Quad< T1, T2, T3, T4 > & | q2 | ||
) |
Are these two Quad objects unequal?
bool larcfm::operator!= | ( | const Triple< L, R, C > & | t1, |
const Triple< L, R, C > & | t2 | ||
) |
Are these two Triples unequal?
bool larcfm::operator!= | ( | const Tuple5< T1, T2, T3, T4, T5 > & | q1, |
const Tuple5< T1, T2, T3, T4, T5 > & | q2 | ||
) |
Are these two Tuple5 objects unequal?
bool larcfm::operator!= | ( | const Tuple6< T1, T2, T3, T4, T5, T6 > & | q1, |
const Tuple6< T1, T2, T3, T4, T5, T6 > & | q2 | ||
) |
Are these two Tuple6 objects unequal?
bool larcfm::operator< | ( | const Quad< T1, T2, T3, T4 > & | q1, |
const Quad< T1, T2, T3, T4 > & | q2 | ||
) |
ordering
bool larcfm::operator< | ( | const Triple< L, R, C > & | t1, |
const Triple< L, R, C > & | t2 | ||
) |
ordering
bool larcfm::operator< | ( | const Tuple5< T1, T2, T3, T4, T5 > & | q1, |
const Tuple5< T1, T2, T3, T4, T5 > & | q2 | ||
) |
ordering
bool larcfm::operator< | ( | const Tuple6< T1, T2, T3, T4, T5, T6 > & | q1, |
const Tuple6< T1, T2, T3, T4, T5, T6 > & | q2 | ||
) |
ordering
std::ostream & larcfm::operator<< | ( | std::ostream & | os, |
const Plan & | f | ||
) |
Stream output for plans
bool larcfm::operator== | ( | const Pair< L, R > & | t1, |
const Pair< L, R > & | t2 | ||
) |
Are these two Pairs equal?
bool larcfm::operator== | ( | const Quad< T1, T2, T3, T4 > & | q1, |
const Quad< T1, T2, T3, T4 > & | q2 | ||
) |
Are these two Quad objects equal?
bool larcfm::operator== | ( | const Triple< L, R, C > & | t1, |
const Triple< L, R, C > & | t2 | ||
) |
Are these two Triples equal?
bool larcfm::operator== | ( | const Tuple5< T1, T2, T3, T4, T5 > & | q1, |
const Tuple5< T1, T2, T3, T4, T5 > & | q2 | ||
) |
Are these two Tuple5 objects equal?
bool larcfm::operator== | ( | const Tuple6< T1, T2, T3, T4, T5, T6 > & | q1, |
const Tuple6< T1, T2, T3, T4, T5, T6 > & | q2 | ||
) |
Are these two Tuple6 objects equal?
bool larcfm::operator> | ( | const Quad< T1, T2, T3, T4 > & | q1, |
const Quad< T1, T2, T3, T4 > & | q2 | ||
) |
ordering
bool larcfm::operator> | ( | const Triple< L, R, C > & | t1, |
const Triple< L, R, C > & | t2 | ||
) |
ordering
bool larcfm::operator> | ( | const Tuple5< T1, T2, T3, T4, T5 > & | q1, |
const Tuple5< T1, T2, T3, T4, T5 > & | q2 | ||
) |
ordering
std::string larcfm::padLeft | ( | std::string | s, |
int | n | ||
) |
Return a string 'n' long with 's' left-justified
std::string larcfm::padRight | ( | std::string | s, |
int | n | ||
) |
Return a string 'n' long with 's' right-justified
int larcfm::parseInt | ( | const std::string & | str | ) |
parse a string into an integer
double larcfm::projectionConflictRange | ( | double | lat, |
double | accuracy | ||
) |
This return an estimate on the suggested maximum segment size, depending on the current projection.
lat | - latitude [radians] |
accuracy | - desired accuracy (allowable error) [m] |
double larcfm::projectionMaxRange | ( | ) |
Q function from ACCoRD.TangentLine. Returns the point on the circle (with 0,0 origin) that is tangent with the outside point
s | vertex point |
D | radius of the circle |
eps | direction of turn (+1 is turn LEFT, -1 is turn RIGHT in he absolute frame) |
void larcfm::remove | ( | T | a[], |
int | i, | ||
int | size | ||
) |
Remove element i from the array
std::string larcfm::replace | ( | const std::string & | s, |
const std::string & | s1, | ||
const std::string & | s2 | ||
) |
Replaces all occurrences of s1 with s2 in string s
void larcfm::replace | ( | std::string & | s, |
char | c1, | ||
char | c2 | ||
) |
Replaces all occurrences of c1 with c2 in string s
double larcfm::root | ( | const double | a, |
const double | b, | ||
const double | c, | ||
int | eps | ||
) |
double larcfm::root2b | ( | const double | a, |
const double | b, | ||
const double | c, | ||
const int | eps | ||
) |
void larcfm::set_horizontal_accuracy | ( | double | acc | ) |
void larcfm::set_time_accuracy | ( | double | acc | ) |
void larcfm::set_vertical_accuracy | ( | double | acc | ) |
void larcfm::setCoreDetection | ( | Detection3D * | c | ) |
Experimental. You are responsible for deleting c after this call.
void larcfm::setProjectionType | ( | ProjectionType | t | ) |
int larcfm::sign | ( | const double | x | ) |
std::vector< std::string > larcfm::split | ( | const std::string & | str, |
const std::string & | delimiters | ||
) |
return a vector of strings, split from a list of delimiters in str. The pattern is not a regular expression, instead it is a delimiter represented as a string.
std::vector< std::string > larcfm::split_empty | ( | const std::string & | str, |
const std::string & | delimiters | ||
) |
return a vector of strings, split from a list of delimiters in str. Allows empty strings
vector< string > larcfm::split_regex | ( | const std::string & | str, |
const std::string & | delimiters | ||
) |
return a vector of strings, split from str based on the pattern given as a regular expression.
std::vector< std::string > larcfm::split_string_empty | ( | const std::string & | str, |
const std::string & | delimiter | ||
) |
return a vector of strings, split from str based on the string. Allows empty strings
double larcfm::sq | ( | const double | x | ) |
double larcfm::sqrt_safe | ( | const double | x | ) |
bool larcfm::startsWith | ( | const std::string & | str, |
const std::string & | prefix | ||
) |
Does str start with the prefix?
std::string larcfm::substring | ( | const std::string & | s, |
int | begin | ||
) |
a C++ substring method that behaves more like Java's String.subString method. the beginning index is inclusive, and the ending index is exclusive.
std::string larcfm::substring | ( | const std::string & | s, |
int | begin, | ||
int | end | ||
) |
a C++ substring method that behaves more like Java's String.subString method. the beginning index is inclusive, and the ending index is exclusive.
double larcfm::to_180 | ( | double | deg | ) |
deg
degrees to the range (-180
, 180
].deg | Degrees |
deg
in the range (-180
, 180
]. double larcfm::to_2pi | ( | double | rad | ) |
rad
radians to the range [0
, 2*pi
].rad | Radians |
rad
in the range [-0
, 2*pi
). double larcfm::to_360 | ( | double | deg | ) |
deg
degrees to the range [0
, 360
).deg | Degrees |
deg
in the range [0
, 360
). double larcfm::to_pi | ( | double | rad | ) |
rad
radians to the range (-pi
, pi
].rad | Radians |
rad
in the range [-pi
, pi
]. double larcfm::to_pi2_cont | ( | double | rad | ) |
rad
radians to the range [-Math.PI/2
, Math.PI/2
). This function is continuous, so to_pi2_cont(PI/2+eps) equals PI/2-eps.rad | Radians |
rad
in the range [-Math.PI/2
, Math.PI/2
).
|
inline |
Convert arbitrary parameter to a string
std::string larcfm::toLowerCase | ( | const std::string & | str | ) |
return an all lower case copy of str
std::string larcfm::toUpperCase | ( | const std::string & | str | ) |
return an all upper case copy of str
void larcfm::trim | ( | std::string & | s, |
const std::string & | drop = " \t\r\n" |
||
) |
remove specified characters from beginning & end of string s
std::string larcfm::trimCopy | ( | const std::string & | s, |
const std::string & | drop = " \t\r\n" |
||
) |
remove specified characters from beginning & end of string s
Vect2 larcfm::trkgs2v | ( | double | trk, |
double | gs | ||
) |
double larcfm::trkgs2vx | ( | double | trk, |
double | gs | ||
) |
double larcfm::trkgs2vy | ( | double | trk, |
double | gs | ||
) |
double larcfm::V1 | ( | double | voz, |
double | a1, | ||
double | t | ||
) |
** This version prioritizes being able to reach an altitude at all and then achieving the specified climb rate.