30     const double L = u.
norm();
    44     const double b = -2 * u.
x * (o.
x - p0.
x) - 2 * u.
y * (o.
y - p0.
y);
    50     if (nsols <= 0) 
return false;
    56         if (r1 < 0 && r2 < 0) 
return false;
    67             r_min = std::min(r1, r2);
    71     if (r_min > L) 
return false;
    86     const double center2obs_dist = (ptArcCenter - o).
norm();
    87     if (std::abs(center2obs_dist - std::abs(arc_radius)) > 
R) 
return false;
    90     const double r = arc_radius;
    92         (
R * r * 2.0 - o.
y * r * 2.0 - 
R * 
R + o.
x * o.
x + o.
y * o.
y) *
    93         (
R * r * 2.0 + o.
y * r * 2.0 + 
R * 
R - o.
x * o.
x - o.
y * o.
y);
    94     if (discr < 0) 
return false;
    96         ((
R * 
R) * (-1.0 / 2.0) + (o.
x * o.
x) * (1.0 / 2.0) +
    97          (o.
y * o.
y) * (1.0 / 2.0) -
    99           (-(
R * 
R) * o.
y + (
R * 
R) * r + (o.
x * o.
x) * o.
y + (o.
x * o.
x) * r -
   100            (o.
y * o.
y) * r + o.
y * o.
y * o.
y + o.
x * sqrt(discr)) *
   102              (o.
y * r * -2.0 + o.
x * o.
x + o.
y * o.
y + r * r) +
   104           (-(
R * 
R) * o.
y + (
R * 
R) * r + (o.
x * o.
x) * o.
y + (o.
x * o.
x) * r -
   105            (o.
y * o.
y) * r + o.
y * o.
y * o.
y + o.
x * sqrt(discr)) *
   107              (o.
y * r * -2.0 + o.
x * o.
x + o.
y * o.
y + r * r)) /
   109     const double sol_x1 =
   110         ((
R * 
R) * (-1.0 / 2.0) + (o.
x * o.
x) * (1.0 / 2.0) +
   111          (o.
y * o.
y) * (1.0 / 2.0) -
   113           (-(
R * 
R) * o.
y + (
R * 
R) * r + (o.
x * o.
x) * o.
y + (o.
x * o.
x) * r -
   114            (o.
y * o.
y) * r + o.
y * o.
y * o.
y - o.
x * sqrt(discr)) *
   116              (o.
y * r * -2.0 + o.
x * o.
x + o.
y * o.
y + r * r) +
   118           (-(
R * 
R) * o.
y + (
R * 
R) * r + (o.
x * o.
x) * o.
y + (o.
x * o.
x) * r -
   119            (o.
y * o.
y) * r + o.
y * o.
y * o.
y - o.
x * sqrt(discr)) *
   121              (o.
y * r * -2.0 + o.
x * o.
x + o.
y * o.
y + r * r)) /
   125     const double sol_y0 =
   126         ((
R * 
R) * o.
y * (-1.0 / 2.0) + (
R * 
R) * r * (1.0 / 2.0) +
   127          (o.
x * o.
x) * o.
y * (1.0 / 2.0) + (o.
x * o.
x) * r * (1.0 / 2.0) -
   128          (o.
y * o.
y) * r * (1.0 / 2.0) + (o.
y * o.
y * o.
y) * (1.0 / 2.0) +
   129          o.
x * sqrt(discr) * (1.0 / 2.0)) /
   130         (o.
y * r * -2.0 + o.
x * o.
x + o.
y * o.
y + r * r);
   131     const double sol_y1 =
   132         ((
R * 
R) * o.
y * (-1.0 / 2.0) + (
R * 
R) * r * (1.0 / 2.0) +
   133          (o.
x * o.
x) * o.
y * (1.0 / 2.0) + (o.
x * o.
x) * r * (1.0 / 2.0) -
   134          (o.
y * o.
y) * r * (1.0 / 2.0) + (o.
y * o.
y * o.
y) * (1.0 / 2.0) -
   135          o.
x * sqrt(discr) * (1.0 / 2.0)) /
   136         (o.
y * r * -2.0 + o.
x * o.
x + o.
y * o.
y + r * r);
   141         sol0.x - ptArcCenter.
x,
   142         -(sol0.y - ptArcCenter.
y));  
   143     double th1 = atan2(sol1.
x - ptArcCenter.
x, -(sol1.
y - ptArcCenter.
y));
   156     out_col_dist = std::abs(r) * std::min(th0, th1);
 
bool collision_free_dist_arc_circ_robot(const double arc_radius, const double robot_radius, const mrpt::math::TPoint2D &obstacle, double &out_col_dist)
Computes the collision-free distance for a forward path (+X) circular arc path segment from pose (0...
 
This base provides a set of functions for maths stuff. 
 
T wrapTo2Pi(T a)
Modifies the given angle to translate it into the [0,2pi[ range. 
 
bool collision_free_dist_segment_circ_robot(const mrpt::math::TPoint2D &p_start, const mrpt::math::TPoint2D &p_end, const double robot_radius, const mrpt::math::TPoint2D &obstacle, double &out_col_dist)
Computes the collision-free distance for a linear segment path between two points, for a circular robot, and a point obstacle (ox,oy). 
 
return_t square(const num_t x)
Inline function for the square of a number. 
 
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries. 
 
#define ASSERT_ABOVE_(__A, __B)
 
T norm() const
Point norm: |v| = sqrt(x^2+y^2) 
 
CONTAINER::Scalar norm(const CONTAINER &v)
 
int solve_poly2(double a, double b, double c, double &r1, double &r2) noexcept
Solves equation a*x^2 + b*x + c = 0.