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

#include <Horizontal.h>

Inheritance diagram for larcfm::Horizontal:
larcfm::Vect2

Public Member Functions

 Horizontal ()
 
 Horizontal (const Vect2 &v)
 
 Horizontal (double kk, const Vect2 &v)
 
bool undef () const
 
- Public Member Functions inherited from larcfm::Vect2
 Vect2 (const double xx=0.0, const double yy=0.0)
 
virtual ~Vect2 ()
 
bool isZero () const
 
bool almostEquals (const Vect2 &v) const
 
bool almostEquals (const Vect2 &v, INT64FM maxUlps) const
 
Vect2 operator+ (const Vect2 &v) const
 
Vect2 operator- (const Vect2 &v) const
 
Vect2 operator- () const
 
Vect2 operator* (const double k) const
 
double operator* (const Vect2 &v) const
 
bool operator== (const Vect2 &v) const
 
bool operator!= (const Vect2 &v) const
 
Vect2 Hat () const
 
Vect2 Add (const Vect2 &v) const
 
Vect2 Sub (const Vect2 &v) const
 
Vect2 Neg () const
 
Vect2 Scal (double k) const
 
Vect2 ScalAdd (const double k, const Vect2 &v) const
 
Vect2 AddScal (double k, const Vect2 &v) const
 
Vect2 PerpR () const
 
Vect2 PerpL () const
 
Vect2 linear (const Vect2 &v, double t) const
 
double distance (const Vect2 &s) const
 
double dot (const double x, const double y) const
 
double dot (const Vect2 &v) const
 
double det (const double x, const double y) const
 
double det (const Vect2 &v) const
 
double sqv () const
 
double norm () const
 
double angle () const
 
double trk () const
 
double compassAngle () const
 
double compassAngle (const Vect2 &v2) const
 
bool leq (const Vect2 &v, const Vect2 &vo) const
 
bool isInvalid () const
 
std::string toString () const
 
std::string toString (int precision) const
 
std::string toStringNP (const std::string &xunit, const std::string &yunit) const
 
std::string toStringNP (const std::string &xunit, const std::string &yunit, int precision) const
 
std::string formatXY (const std::string &pre, const std::string &mid, const std::string &post) const
 
std::string formatXY (int prec, const std::string &pre, const std::string &mid, const std::string &post) const
 
std::string toPVS () const
 
std::string toPVS (int precision) const
 
bool within_epsilon (const Vect2 &v2, double epsilon) const
 

Static Public Member Functions

static const HorizontalNoHorizontalSolution ()
 
static Horizontal best_horizontal (const Vect2 &vo, const Horizontal &v1, const Horizontal &v2)
 
static double tcpa (const Vect2 &s, const Vect2 &v)
 
static double dcpa (const Vect2 &s, const Vect2 &v)
 
static double hmd (const Vect2 &s, const Vect2 &v, double T)
 
static double Theta_D (const Vect2 &s, const Vect2 &v, const int eps, const double D)
 
static double Delta (const Vect2 &s, const Vect2 &v, const double D)
 
static bool almost_horizontal_los (const Vect2 &s, const double D)
 
static bool horizontal_sep (const Vect2 &s, const double D)
 
static bool horizontal_dir (const Vect2 &s, const Vect2 &v, const int dir)
 
static bool horizontal_dir_at (const Vect2 &s, const Vect2 &v, const double t, const int dir)
 
static bool horizontal_entry (const Vect2 &s, const Vect2 &v)
 
static Vect2 Vdir (const Vect2 &s, const Vect2 &v)
 
static Vect2 W0 (const Vect2 &s, const double j)
 
static Horizontal gs_only_line (const Vect2 &nv, const Vect2 &vo, const Vect2 &vi)
 
static Horizontal gs_line (const Vect2 &nv, const Vect2 &vo, const Vect2 &vi)
 
static Horizontal gs_only_dot (const Vect2 &u, const Vect2 &vo, const Vect2 &vi, const double j)
 
static Horizontal gs_only_vertical (const Vect2 &s, const Vect2 &vo, const Vect2 &vi, const double th, const int dir, const double D)
 
static Horizontal gs_vertical (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const TangentLine &l, const int epsv, const double D, const double H)
 
static Horizontal gs_only (const TangentLine &nv, const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const int epsv, const double D, const double H)
 
static Horizontal gs_only_circle (const Vect2 &s, const Vect2 &vo, const Vect2 &vi, const double t, const int dir, const int irt, const double D)
 
static Horizontal gs_circle (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const int dir, const int irt, const double D, const double H)
 
static Horizontal trk_only_line_irt (const Vect2 &nv, const Vect2 &vo, const Vect2 &vi, const int irt)
 
static Horizontal trk_only_line (const Vect2 &nv, const Vect2 &vo, const Vect2 &vi)
 
static Horizontal trk_line_irt (const Vect2 &nv, const Vect2 &vo, const Vect2 &vi, const int irt)
 
static Horizontal trk_line (const Vect2 &nv, const Vect2 &vo, const Vect2 &vi)
 
static Horizontal trk_only_dot (const Vect2 &u, const Vect2 &vo, const Vect2 &vi, const double j, const int irt)
 
static Horizontal trk_only_vertical (const Vect2 &s, const Vect2 &vo, const Vect2 &vi, const double th, const int dir, const int irt, const double D)
 
static Horizontal trk_vertical_irt (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const TangentLine &l, const int epsv, const int irt, const double D, const double H)
 
static Horizontal repulsiveTrk (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, double minRelSpeed)
 
static Horizontal repulsiveGs (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, double minRelSpeed, double minGs, double maxGs)
 
static Horizontal trk_vertical (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const TangentLine &l, const int epsv, const double D, const double H)
 
static Horizontal trk_only (const TangentLine &nv, const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const int epsv, const double D, const double H)
 
static Horizontal trk_only_circle (const Vect2 &s, const Vect2 &vo, const Vect2 &vi, const double t, const int dir, const int irt, const double D)
 
static Horizontal trk_circle (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const int dir, const int irt, const double D, const double H)
 
static Horizontal opt_trk_gs_line (const Vect2 &nv, const Vect2 &vo, const Vect2 &vi)
 
static Horizontal opt_line (const Vect2 &nv, const Vect2 &vo, const Vect2 &vi)
 
static Horizontal opt_trk_gs (const TangentLine &nv, const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const int epsv, const double D, const double H)
 
static Horizontal opt_trk_gs_dot (const Vect2 &u, const Vect2 &vo, const Vect2 &vi, const double j)
 
static Horizontal opt_trk_gs_vertical (const Vect2 &s, const Vect2 &vo, const Vect2 &vi, const double th, const int dir, const double D)
 
static Horizontal opt_vertical (const Vect3 &s, const Vect3 &vo, const Vect3 &vi, const TangentLine &l, const int epsv, const double D, const double H)
 
static Vect3 unit_perpL (const Vect3 &v)
 
- Static Public Member Functions inherited from larcfm::Vect2
static Vect2 mkTrkGs (double trk, double gs)
 
static double actual_tcpa (const Vect2 &so, const Vect2 &vo, const Vect2 &si, const Vect2 &vi)
 
static double tcpa (const Vect2 &so, const Vect2 &vo, const Vect2 &si, const Vect2 &vi)
 
static double dcpa (const Vect2 &so, const Vect2 &vo, const Vect2 &si, const Vect2 &vi)
 
static double distPerp (const Vect2 &s, const Vect2 &v, const Vect2 &q)
 
static double distAlong (const Vect2 &s, const Vect2 &v, const Vect2 &q)
 
static Vect2 intersect_pt (const Vect2 &s0, const Vect2 &v0, const Vect2 &s1, const Vect2 &v1)
 
static const Vect2ZERO ()
 
static const Vect2INVALID ()
 

Public Attributes

double k
 
- Public Attributes inherited from larcfm::Vect2
double x
 
double y
 

Detailed Description

Horizontal solution

Constructor & Destructor Documentation

◆ Horizontal() [1/3]

larcfm::Horizontal::Horizontal ( )

Construct a horizontal solution

◆ Horizontal() [2/3]

larcfm::Horizontal::Horizontal ( const Vect2 v)
explicit

Construct a horizontal solution

◆ Horizontal() [3/3]

larcfm::Horizontal::Horizontal ( double  kk,
const Vect2 v 
)

Construct a horizontal solution

Member Function Documentation

◆ dcpa()

double larcfm::Horizontal::dcpa ( const Vect2 s,
const Vect2 v 
)
static

Distance closest point of approach.

Parameters
vVector
Returns
the horizontal distance at closest point of approach between this point and the line defined by the vector v.

◆ Delta()

double larcfm::Horizontal::Delta ( const Vect2 s,
const Vect2 v,
const double  D 
)
static

Discriminant of intersection between line and circle.

Parameters
vVector
DDiameter of of circle
Returns
the discriminant of the intersection between the parametric line s+tv and the circle of radius D. If the discriminant is less than 0 the intersection doesn't exist; if it is 0 the line is tangent to the circle; otherwise, the line intersects the circle in two different points.

◆ gs_only_line()

Horizontal larcfm::Horizontal::gs_only_line ( const Vect2 nv,
const Vect2 vo,
const Vect2 vi 
)
static

Solve the following equation on k and l: k*nv = l*vo-vi.

◆ NoHorizontalSolution()

const Horizontal & larcfm::Horizontal::NoHorizontalSolution ( )
static

"Solution" indicating no solution

◆ opt_trk_gs_line()

Horizontal larcfm::Horizontal::opt_trk_gs_line ( const Vect2 nv,
const Vect2 vo,
const Vect2 vi 
)
static

Solve the following equation on k and l: nv * (k*nv-v) = 0, where v = vo-vi.

◆ tcpa()

double larcfm::Horizontal::tcpa ( const Vect2 s,
const Vect2 v 
)
static

Time of closest point of approach.

Parameters
vVector
Returns
the time of horizontal closest point of approach between this point and the line defined by the vector v.

◆ Theta_D()

double larcfm::Horizontal::Theta_D ( const Vect2 s,
const Vect2 v,
const int  eps,
const double  D 
)
static

Intersection time between line and circle.

Parameters
vVector
DDiameter of of circle
eps+-1
Returns
the time t such that the parametric line s+tv intersects the circle of radius D. If eps == -1 the returned time is the entry time; if eps == 1 the returned time is the exit time.

◆ trk_only_line_irt()

Horizontal larcfm::Horizontal::trk_only_line_irt ( const Vect2 nv,
const Vect2 vo,
const Vect2 vi,
const int  irt 
)
static

Solve the following equation on k: || k*nv + vi || = || vo ||.

◆ undef()

bool larcfm::Horizontal::undef ( ) const

Is this solution undefined?

Member Data Documentation

◆ k

double larcfm::Horizontal::k

parameter


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