ICAROUS
All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros Modules Pages
Static Public Member Functions | Static Private Member Functions | List of all members
larcfm::TurnGeneration Class Reference

#include <TurnGeneration.h>

Static Public Member Functions

static Tuple5< NavPoint, NavPoint, NavPoint, int, PositionturnGenerator (const NavPoint &np1, const NavPoint &np2, const NavPoint &np3, double radius)
 
static Tuple6< Position, Position, Position, int, double, PositionturnGenerator (const Position &np1, const Position &np2, const Position &np3, double radius)
 
static Tuple6< Vect2, Vect2, Vect2, int, double, Vect2turnGeneratorEucl (const Vect2 &pt1, const Vect2 &pt2, const Vect2 &pt3, double radius)
 
static Tuple6< Vect3, Vect3, Vect3, int, double, Vect3turnGeneratorEucl (const Vect3 &p1, const Vect3 &p2, const Vect3 &p3, double radius)
 
static Quad< NavPoint, NavPoint, NavPoint, int > turnGeneratorProjected (const NavPoint &np1, const NavPoint &np2, const NavPoint &np3, double R)
 
static Tuple6< LatLonAlt, LatLonAlt, LatLonAlt, int, double, LatLonAltturnGeneratorLLA_orig (const LatLonAlt &p1, const LatLonAlt &p2, const LatLonAlt &p3, double radius)
 
static Tuple5< LatLonAlt, LatLonAlt, LatLonAlt, int, LatLonAltturnGeneratorLLA_Alt2 (const LatLonAlt &p1, const LatLonAlt &p2, const LatLonAlt &p3, double radius)
 
static Tuple6< LatLonAlt, LatLonAlt, LatLonAlt, int, double, LatLonAltturnGeneratorLLA_Alt3 (const LatLonAlt &p1, const LatLonAlt &p2, const LatLonAlt &p3, double radius)
 

Static Private Member Functions

static double arcLengthLLA (const LatLonAlt &bot, const LatLonAlt &intercept, double radius)
 
static double Rprime (double TurnRad)
 
static Vect3 normalvect (const Vect3 &p, const Vect3 &q, const Vect3 &r)
 
static Vect3 point_on_line (double TurnRad, const Vect3 &p, const Vect3 &q, const Vect3 &r)
 
static Vect3 turnCenterxyz (double TurnRad, const Vect3 &p, const Vect3 &q, const Vect3 &r)
 
static Vect3 BOT (double TurnRad, const Vect3 &p, const Vect3 &q, const Vect3 &r)
 
static Vect3 EOT (double TurnRad, const Vect3 &p, const Vect3 &q, const Vect3 &r)
 
static int turnDirection (const Vect3 &p, const Vect3 &q, const Vect3 &r)
 

Detailed Description

TurnGeneration provides methods to generate the beginning, middle, and end of turn (BOTs, MOTs, and EOTs). This class finds solutions that are based on spherical trigonometry without having to use projections (the original versions of these methods in TrajGen used Euclidean projections).

Member Function Documentation

◆ normalvect()

Vect3 larcfm::TurnGeneration::normalvect ( const Vect3 p,
const Vect3 q,
const Vect3 r 
)
staticprivate

returns a unit normal vector to the plane containing p, q, and the origin, in the direction of r.

Parameters
pVect3
qVect3
rVect3
Returns
Vect3

◆ point_on_line()

Vect3 larcfm::TurnGeneration::point_on_line ( double  TurnRad,
const Vect3 p,
const Vect3 q,
const Vect3 r 
)
staticprivate

Plane1 is set of all points Rprime(TurnRad) distance from the plane containing p,q,0, in the direction of r Plane2 is set of all points Rprime(TurnRad) distance from the plane containing q,r,0, in the direction of p This function computes one point that is on the line of intersection between these two planes.

Parameters
TurnRad
p
q
r
Returns
Vect3 on the line

◆ Rprime()

double larcfm::TurnGeneration::Rprime ( double  TurnRad)
staticprivate

Rprime takes the turnRadius (great circle distance) and returns another distance. Given a point c on the sphere (center of turn, for instance), and given another point p on the sphere that has radius TurnRad (great circle radius), this functions returns the distance (closest) between c and the line through the origin and p.

Parameters
TurnRad
Returns
new radius

◆ turnDirection()

int larcfm::TurnGeneration::turnDirection ( const Vect3 p,
const Vect3 q,
const Vect3 r 
)
staticprivate

p,q,r are assumed to be on the surface of a sphere. This gives 1 for a right turn and -1 for a left turn.

Parameters
ppoint
qpoint
rpoint
Returns
-1 or 1

◆ turnGeneratorEucl() [1/2]

Tuple6< Vect2, Vect2, Vect2, int, double, Vect2 > larcfm::TurnGeneration::turnGeneratorEucl ( const Vect2 pt1,
const Vect2 pt2,
const Vect2 pt3,
double  radius 
)
static

Return the BOT and EOT trajectory change points for a turn (Horizontal Components Only)

Parameters
np1Start point of the leg before the turn
np2Vertex of the turn
np3End point of the leg after the turn
radiusRadius of the turn
Returns
BOT,MOT,EOT positions, and arclength from BOT to EOT
NOTE: The altitudes are not computed!! velocity in metadata is set correctly for BOT, with track values modified to match the MOT and EOT points

◆ turnGeneratorEucl() [2/2]

Tuple6< Vect3, Vect3, Vect3, int, double, Vect3 > larcfm::TurnGeneration::turnGeneratorEucl ( const Vect3 p1,
const Vect3 p2,
const Vect3 p3,
double  radius 
)
static

Return the BOT and EOT trajectory change points for a turn (Horizontal Components Only)

Parameters
np1Start point of the leg before the turn
np2Vertex of the turn
np3End point of the leg after the turn
radiusRadius of the turn
Returns
BOT,EOT pair
NOTE: The altitudes are NOT computed velocity in metadata is set correctly for BOT, with track values modified to match the MOT and EOT points

◆ turnGeneratorLLA_Alt2()

Tuple5< LatLonAlt, LatLonAlt, LatLonAlt, int, LatLonAlt > larcfm::TurnGeneration::turnGeneratorLLA_Alt2 ( const LatLonAlt p1,
const LatLonAlt p2,
const LatLonAlt p3,
double  radius 
)
static

Altitudes are not set.

Parameters
p1
p2
p3
radiusas a distance, not an angle
Returns

◆ turnGeneratorLLA_orig()

Tuple6< LatLonAlt, LatLonAlt, LatLonAlt, int, double, LatLonAlt > larcfm::TurnGeneration::turnGeneratorLLA_orig ( const LatLonAlt p1,
const LatLonAlt p2,
const LatLonAlt p3,
double  radius 
)
static

Altitudes are not set.

Parameters
p1
p2
p3
radius
Returns

◆ turnGeneratorProjected()

Quad< NavPoint, NavPoint, NavPoint, int > larcfm::TurnGeneration::turnGeneratorProjected ( const NavPoint np1,
const NavPoint np2,
const NavPoint np3,
double  R 
)
static

Return the BOT, MOT, and EOT TCPs for a turn.

Parameters
np1Start point of the leg before the turn
np2Vertex of the turn
np3End point of the leg after the turn
RRadius of the turn
Returns
BOT,MOT,EOT triple.
NOTE. MOT.alt = np.alt() velocity in metadata is set correctly for BOT, with track values modified to match the MOT and EOT points

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