Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::distance

Distance queries between Mundy geometric primitives. More...

Classes

class  mundy::Circle3DCircle3DObjective< Circle3DType1, Circle3DType2 >
class  mundy::PointEllipsoidObjective< PointType, EllipsoidType >
struct  mundy::Euclidean
 The distance types. More...
struct  mundy::SharedNormalSigned
struct  mundy::SharedNormalSignedFiniteDiff
 Tag selecting the finite-difference-gradient variant of the shared-normal signed distance. More...

Typedefs

using mundy::Circle3DCircle3DObjective< Circle3DType1, Circle3DType2 >::Scalar = typename Circle3DType1::value_type
using mundy::PointEllipsoidObjective< PointType, EllipsoidType >::Scalar = typename PointType::value_type

Functions

 mundy::Circle3DCircle3DObjective< Circle3DType1, Circle3DType2 >::Circle3DCircle3DObjective (const Circle3DType1 &circle3d0, const Circle3DType2 &circle3d1, mundy::Vector3< Scalar > &shared_normal0, mundy::Vector3< Scalar > &shared_normal1, Point< Scalar > &foot_point0, Point< Scalar > &foot_point1)
template<ValidCircle3DType Circle3DType>
Point< Scalarmundy::Circle3DCircle3DObjective< Circle3DType1, Circle3DType2 >::theta_to_foot_point_on_circle3d (const Scalar theta, const Circle3DType &circle3d) const
Scalar mundy::Circle3DCircle3DObjective< Circle3DType1, Circle3DType2 >::operator() (const mundy::Vector< Scalar, 2 > &theta1_theta2) const
 mundy::PointEllipsoidObjective< PointType, EllipsoidType >::PointEllipsoidObjective (const PointType &point, const EllipsoidType &ellipsoid, mundy::Vector3< Scalar > &shared_normal, Point< Scalar > &foot_point)
Scalar mundy::PointEllipsoidObjective< PointType, EllipsoidType >::operator() (const mundy::Vector< Scalar, 2 > &theta_phi) const

Free space distance calculations

template<ValidCircle3DType Circle3DType1, ValidCircle3DType Circle3DType2>
Circle3DType1::value_type mundy::distance (const Circle3DType1 &circle3d1, const Circle3DType2 &circle3d2)
template<ValidCircle3DType Circle3DType1, ValidCircle3DType Circle3DType2>
Circle3DType1::value_type mundy::distance (const Euclidean distance_type, const Circle3DType1 &circle3d1, const Circle3DType2 &circle3d2)
template<ValidCircle3DType Circle3DType1, ValidCircle3DType Circle3DType2>
Circle3DType1::value_type mundy::distance (const Euclidean distance_type, const Circle3DType1 &circle3d1, const Circle3DType2 &circle3d2, Point< typename Circle3DType1::value_type > &closest_point1, Point< typename Circle3DType1::value_type > &closest_point2, mundy::Vector3< typename Circle3DType1::value_type > &shared_normal1, mundy::Vector3< typename Circle3DType1::value_type > &shared_normal2)
template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2>
EllipsoidType1::value_type mundy::distance (const EllipsoidType1 &ellipsoid1, const EllipsoidType2 &ellipsoid2)
 Ellipsoid–ellipsoid shared-normal signed separation distance.
template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2>
EllipsoidType1::value_type mundy::distance (const SharedNormalSigned tag, const EllipsoidType1 &ellipsoid1, const EllipsoidType2 &ellipsoid2)
 2-arg overload — convenience wrapper for the 6-arg FDF implementation.
template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2>
EllipsoidType1::value_type mundy::distance (const SharedNormalSigned, const EllipsoidType1 &ellipsoid1, const EllipsoidType2 &ellipsoid2, Point< typename EllipsoidType1::value_type > &closest_point1, Point< typename EllipsoidType1::value_type > &closest_point2, mundy::Vector3< typename EllipsoidType1::value_type > &shared_normal1, mundy::Vector3< typename EllipsoidType1::value_type > &shared_normal2)
 Full 6-arg distance using the combined FDF L-BFGS minimiser.
template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2>
EllipsoidType1::value_type mundy::distance (const SharedNormalSignedFiniteDiff tag, const EllipsoidType1 &ellipsoid1, const EllipsoidType2 &ellipsoid2)
 Finite-difference-gradient variant — retained for benchmarking only.
template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2>
EllipsoidType1::value_type mundy::distance (const SharedNormalSignedFiniteDiff, const EllipsoidType1 &ellipsoid1, const EllipsoidType2 &ellipsoid2, Point< typename EllipsoidType1::value_type > &closest_point1, Point< typename EllipsoidType1::value_type > &closest_point2, mundy::Vector3< typename EllipsoidType1::value_type > &shared_normal1, mundy::Vector3< typename EllipsoidType1::value_type > &shared_normal2)
template<ValidLineType LineType1, ValidLineType LineType2>
LineType1::value_type mundy::distance (const LineType1 &line1, const LineType2 &line2)
 Compute the distance between two lines (defaults to SharedNormalSigned distance).
template<ValidLineType LineType1, ValidLineType LineType2>
LineType1::value_type mundy::distance (const SharedNormalSigned distance_type, const LineType1 &line1, const LineType2 &line2)
 Compute the distance between two lines.
template<ValidLineType LineType1, ValidLineType LineType2>
LineType1::value_type mundy::distance (const Euclidean distance_type, const LineType1 &line1, const LineType2 &line2)
 Compute the distance between two lines.
template<ValidLineType LineType1, ValidLineType LineType2>
LineType1::value_type mundy::distance (const LineType1 &line1, const LineType2 &line2, Point< typename LineType1::value_type > &closest_point1, Point< typename LineType1::value_type > &closest_point2, typename LineType1::value_type &arch_length1, typename LineType1::value_type &arch_length2, mundy::Vector3< typename LineType1::value_type > &sep)
 Compute the distance between two lines (defaults to SharedNormalSigned distance).
template<ValidLineType LineType1, ValidLineType LineType2>
LineType1::value_type mundy::distance (const SharedNormalSigned distance_type, const LineType1 &line1, const LineType2 &line2, Point< typename LineType1::value_type > &closest_point1, Point< typename LineType1::value_type > &closest_point2, typename LineType1::value_type &arch_length1, typename LineType1::value_type &arch_length2, mundy::Vector3< typename LineType1::value_type > &sep)
 Compute the distance between two lines.
template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2>
LineSegmentType1::value_type mundy::distance (const LineSegmentType1 &line_segment1, const LineSegmentType2 &line_segment2)
 Compute the distance between two line segments.
template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2>
LineSegmentType1::value_type mundy::distance (const Euclidean distance_type, const LineSegmentType1 &line_segment1, const LineSegmentType2 &line_segment2)
 Compute the euclidean separation distance between two line segments.
template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2>
LineSegmentType1::value_type mundy::distance (const SharedNormalSigned distance_type, const LineSegmentType1 &line_segment1, const LineSegmentType2 &line_segment2)
 Compute the euclidean separation distance between two line segments.
template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2>
LineSegmentType1::value_type mundy::distance (const LineSegmentType1 &line_segment1, const LineSegmentType2 &line_segment2, Point< typename LineSegmentType1::value_type > &closest_point1, Point< typename LineSegmentType1::value_type > &closest_point2, typename LineSegmentType1::value_type &arch_length1, typename LineSegmentType1::value_type &arch_length2, mundy::Vector3< typename LineSegmentType1::value_type > &sep)
 Compute the distance between two line segments.
template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2>
LineSegmentType1::value_type mundy::distance (const SharedNormalSigned distance_type, const LineSegmentType1 &line_segment1, const LineSegmentType2 &line_segment2, Point< typename LineSegmentType1::value_type > &closest_point1, Point< typename LineSegmentType1::value_type > &closest_point2, typename LineSegmentType1::value_type &arch_length1, typename LineSegmentType1::value_type &arch_length2, mundy::Vector3< typename LineSegmentType1::value_type > &sep)
 Compute the shared normal signed separation distance between two line segments.
template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2>
LineSegmentType1::value_type mundy::distance (const Euclidean distance_type, const LineSegmentType1 &line_segment1, const LineSegmentType2 &line_segment2, Point< typename LineSegmentType1::value_type > &closest_point1, Point< typename LineSegmentType1::value_type > &closest_point2, typename LineSegmentType1::value_type &arch_length1, typename LineSegmentType1::value_type &arch_length2, mundy::Vector3< typename LineSegmentType1::value_type > &sep)
 Compute the euclidean distance between two line segments.
template<ValidLineSegmentType LineSegmentType, ValidSphereType SphereType>
LineSegmentType::value_type mundy::distance (const LineSegmentType &line_segment, const SphereType &sphere)
 Compute the distance between a line segment and a sphere.
template<ValidLineSegmentType LineSegmentType, ValidSphereType SphereType>
LineSegmentType::value_type mundy::distance (const SharedNormalSigned distance_type, const LineSegmentType &line_segment, const SphereType &sphere)
 Compute the shared normal signed separation distance between a line segment and a sphere.
template<ValidLineSegmentType LineSegmentType, ValidSphereType SphereType>
LineSegmentType::value_type mundy::distance (const LineSegmentType &line_segment, const SphereType &sphere, Point< typename LineSegmentType::value_type > &closest_point, typename LineSegmentType::value_type &arch_length, mundy::Vector3< typename LineSegmentType::value_type > &sep)
 Compute the distance between a line segment and a sphere.
template<ValidLineSegmentType LineSegmentType, ValidSphereType SphereType>
LineSegmentType::value_type mundy::distance (const SharedNormalSigned distance_type, const LineSegmentType &line_segment, const SphereType &sphere, Point< typename LineSegmentType::value_type > &closest_point, typename LineSegmentType::value_type &arch_length, mundy::Vector3< typename LineSegmentType::value_type > &sep)
 Compute the shared normal signed separation distance between a line segment and a sphere.
template<ValidLineType LineType, ValidSphereType SphereType>
LineType::value_type mundy::distance (const LineType &line, const SphereType &sphere)
 Compute the distance between a line and a sphere.
template<ValidLineType LineType, ValidSphereType SphereType>
LineType::value_type mundy::distance (const SharedNormalSigned distance_type, const LineType &line, const SphereType &sphere)
 Compute the shared normal signed separation distance between a line and a sphere.
template<ValidLineType LineType, ValidSphereType SphereType>
LineType::value_type mundy::distance (const LineType &line, const SphereType &sphere, Point< typename LineType::value_type > &closest_point, typename LineType::value_type &arch_length, mundy::Vector3< typename LineType::value_type > &sep)
 Compute the distance between a line and a sphere.
template<ValidLineType LineType, ValidSphereType SphereType>
LineType::value_type mundy::distance (const SharedNormalSigned distance_type, const LineType &line, const SphereType &sphere, Point< typename LineType::value_type > &closest_point, typename LineType::value_type &arch_length, mundy::Vector3< typename LineType::value_type > &sep)
 Compute the shared normal signed separation distance between a line and a sphere.
template<ValidPointType PointType, ValidEllipsoidType EllipsoidType>
PointType::value_type mundy::distance (const PointType &point, const EllipsoidType &ellipsoid)
template<ValidPointType PointType, ValidEllipsoidType EllipsoidType>
PointType::value_type mundy::distance (const SharedNormalSigned distance_type, const PointType &point, const EllipsoidType &ellipsoid)
template<ValidPointType PointType, ValidEllipsoidType EllipsoidType>
PointType::value_type mundy::distance (const SharedNormalSigned distance_type, const PointType &point, const EllipsoidType &ellipsoid, Point< typename PointType::value_type > &closest_point, mundy::Vector3< typename PointType::value_type > &ellipsoid_normal)
template<ValidPointType PointType, ValidLineType LineType>
PointType::value_type mundy::distance (const PointType &point, const LineType &line)
 Compute the shared normal signed separation distance between a point and a line.
template<ValidPointType PointType, ValidLineType LineType>
PointType::value_type mundy::distance (const SharedNormalSigned distance_type, const PointType &point, const LineType &line)
 Compute the shared normal signed separation distance between a point and a line.
template<ValidPointType PointType, ValidLineType LineType>
PointType::value_type mundy::distance (const PointType &point, const LineType &line, Point< typename PointType::value_type > &closest_point, typename PointType::value_type &arch_length, mundy::Vector3< typename PointType::value_type > &sep)
 Compute the euclidean distance between a point and a line.
template<ValidPointType PointType, ValidLineType LineType>
PointType::value_type mundy::distance (const SharedNormalSigned distance_type, const PointType &point, const LineType &line, Point< typename PointType::value_type > &closest_point, typename PointType::value_type &arch_length, mundy::Vector3< typename PointType::value_type > &sep)
 Compute the shared normal signed separation distance between a point and a line.
template<ValidPointType PointType, ValidLineSegmentType LineSegmentType>
PointType::value_type mundy::distance (const PointType &point, const LineSegmentType &line_segment)
 Compute the shared normal signed separation distance between a point and a line segment.
template<ValidPointType PointType, ValidLineSegmentType LineSegmentType>
PointType::value_type mundy::distance (const SharedNormalSigned distance_type, const PointType &point, const LineSegmentType &line_segment)
 Compute the shared normal signed separation distance between a point and a line segment.
template<ValidPointType PointType, ValidLineSegmentType LineSegmentType>
PointType::value_type mundy::distance (const PointType &point, const LineSegmentType &line_segment, Point< typename PointType::value_type > &closest_point, typename PointType::value_type &arch_length, mundy::Vector3< typename PointType::value_type > &sep)
 Compute the euclidean distance between a point and a line segment.
template<ValidPointType PointType, ValidLineSegmentType LineSegmentType>
PointType::value_type mundy::distance (const SharedNormalSigned distance_type, const PointType &point, const LineSegmentType &line_segment, Point< typename PointType::value_type > &closest_point, typename PointType::value_type &arch_length, mundy::Vector3< typename PointType::value_type > &sep)
 Compute the shared normal signed separation distance between a point and a line segment.
template<ValidPointType PointType1, ValidPointType PointType2>
PointType1::value_type mundy::distance (const SharedNormalSigned distance_type, const PointType1 &point1, const PointType2 &point2)
 Compute the shared normal signed separation distance between two points.
template<ValidPointType PointType1, ValidPointType PointType2>
PointType1::value_type mundy::distance (const SharedNormalSigned distance_type, const PointType1 &point1, const PointType2 &point2, mundy::Vector3< typename PointType1::value_type > &sep)
 Compute the shared normal signed separation distance between two points.
template<ValidPointType PointType1, ValidPointType PointType2>
PointType1::value_type mundy::distance (const Euclidean distance_type, const PointType1 &point1, const PointType2 &point2)
 Compute the euclidean distance between two points.
template<ValidPointType PointType1, ValidPointType PointType2>
PointType1::value_type mundy::distance (const Euclidean distance_type, const PointType1 &point1, const PointType2 &point2, mundy::Vector3< typename PointType1::value_type > &sep)
 Compute the euclidean distance between two points.
template<ValidPointType PointType1, ValidPointType PointType2>
PointType1::value_type mundy::distance (const PointType1 &point1, const PointType2 &point2)
 Compute the shared normal signed separation distance between two points.
template<ValidPointType PointType1, ValidPointType PointType2>
PointType1::value_type mundy::distance (const PointType1 &point1, const PointType2 &point2, mundy::Vector3< typename PointType1::value_type > &sep)
 Compute the euclidean distance between two points.
template<ValidPointType PointType, ValidSphereType SphereType>
PointType::value_type mundy::distance (const PointType &point, const SphereType &sphere)
 Compute the shared normal signed separation distance between a point and a sphere.
template<ValidPointType PointType, ValidSphereType SphereType>
PointType::value_type mundy::distance (const SharedNormalSigned distance_type, const PointType &point, const SphereType &sphere)
 Compute the shared normal signed separation distance between a point and a sphere.
template<ValidPointType PointType, ValidSphereType SphereType>
PointType::value_type mundy::distance (const PointType &point, const SphereType &sphere, mundy::Vector3< typename PointType::value_type > &sep)
 Compute the distance between a point and a sphere.
template<ValidSphereType SphereType1, ValidSphereType SphereType2>
SphereType1::value_type mundy::distance (const SphereType1 &sphere1, const SphereType2 &sphere2)
 Compute the shared normal signed separation distance between two spheres.
template<ValidSphereType SphereType1, ValidSphereType SphereType2>
SphereType1::value_type mundy::distance (const SharedNormalSigned distance_type, const SphereType1 &sphere1, const SphereType2 &sphere2)
 Compute the shared normal signed separation distance between two spheres.
template<ValidSphereType SphereType1, ValidSphereType SphereType2>
SphereType1::value_type mundy::distance (const SphereType1 &sphere1, const SphereType2 &sphere2, mundy::Vector3< typename SphereType1::value_type > &sep)
 Compute the distance between two spheres.

Detailed Description

Typedef Documentation

◆ Scalar [1/2]

template<ValidCircle3DType Circle3DType1, ValidCircle3DType Circle3DType2>
using mundy::Circle3DCircle3DObjective< Circle3DType1, Circle3DType2 >::Scalar = typename Circle3DType1::value_type

◆ Scalar [2/2]

template<ValidPointType PointType, ValidEllipsoidType EllipsoidType>
using mundy::PointEllipsoidObjective< PointType, EllipsoidType >::Scalar = typename PointType::value_type

Function Documentation

◆ distance() [1/50]

template<ValidCircle3DType Circle3DType1, ValidCircle3DType Circle3DType2>
Circle3DType1::value_type mundy::distance ( const Circle3DType1 & circle3d1,
const Circle3DType2 & circle3d2 )

◆ distance() [2/50]

template<ValidCircle3DType Circle3DType1, ValidCircle3DType Circle3DType2>
Circle3DType1::value_type mundy::distance ( const Euclidean distance_type,
const Circle3DType1 & circle3d1,
const Circle3DType2 & circle3d2 )

◆ Circle3DCircle3DObjective()

template<ValidCircle3DType Circle3DType1, ValidCircle3DType Circle3DType2>
mundy::Circle3DCircle3DObjective< Circle3DType1, Circle3DType2 >::Circle3DCircle3DObjective ( const Circle3DType1 & circle3d0,
const Circle3DType2 & circle3d1,
mundy::Vector3< Scalar > & shared_normal0,
mundy::Vector3< Scalar > & shared_normal1,
Point< Scalar > & foot_point0,
Point< Scalar > & foot_point1 )
inline

◆ theta_to_foot_point_on_circle3d()

template<ValidCircle3DType Circle3DType1, ValidCircle3DType Circle3DType2>
template<ValidCircle3DType Circle3DType>
Point< Scalar > mundy::Circle3DCircle3DObjective< Circle3DType1, Circle3DType2 >::theta_to_foot_point_on_circle3d ( const Scalar theta,
const Circle3DType & circle3d ) const
inline

◆ operator()() [1/2]

template<ValidCircle3DType Circle3DType1, ValidCircle3DType Circle3DType2>
Scalar mundy::Circle3DCircle3DObjective< Circle3DType1, Circle3DType2 >::operator() ( const mundy::Vector< Scalar, 2 > & theta1_theta2) const
inline

◆ distance() [3/50]

template<ValidCircle3DType Circle3DType1, ValidCircle3DType Circle3DType2>
Circle3DType1::value_type mundy::distance ( const Euclidean distance_type,
const Circle3DType1 & circle3d1,
const Circle3DType2 & circle3d2,
Point< typename Circle3DType1::value_type > & closest_point1,
Point< typename Circle3DType1::value_type > & closest_point2,
mundy::Vector3< typename Circle3DType1::value_type > & shared_normal1,
mundy::Vector3< typename Circle3DType1::value_type > & shared_normal2 )

◆ distance() [4/50]

template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2>
EllipsoidType1::value_type mundy::distance ( const EllipsoidType1 & ellipsoid1,
const EllipsoidType2 & ellipsoid2 )

Dispatches to distance(SharedNormalSigned{}, ...). The implementation uses a combined cost-and-gradient (FDF) L-BFGS minimiser over a 3×3 grid of initial guesses.

◆ distance() [5/50]

template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2>
EllipsoidType1::value_type mundy::distance ( const SharedNormalSigned tag,
const EllipsoidType1 & ellipsoid1,
const EllipsoidType2 & ellipsoid2 )

◆ distance() [6/50]

template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2>
EllipsoidType1::value_type mundy::distance ( const SharedNormalSigned ,
const EllipsoidType1 & ellipsoid1,
const EllipsoidType2 & ellipsoid2,
Point< typename EllipsoidType1::value_type > & closest_point1,
Point< typename EllipsoidType1::value_type > & closest_point2,
mundy::Vector3< typename EllipsoidType1::value_type > & shared_normal1,
mundy::Vector3< typename EllipsoidType1::value_type > & shared_normal2 )

Each evaluation point in the minimiser calls map_surface_normal_to_foot_point_on_ellipsoid exactly once for each ellipsoid, with the result shared between the objective value and the analytical gradient.

◆ distance() [7/50]

template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2>
EllipsoidType1::value_type mundy::distance ( const SharedNormalSignedFiniteDiff tag,
const EllipsoidType1 & ellipsoid1,
const EllipsoidType2 & ellipsoid2 )

Uses central-difference approximations for the L-BFGS gradient instead of the analytical gradient. Kept so that timing and accuracy comparisons with the default FDF implementation remain reproducible. Not intended for production use.

◆ distance() [8/50]

template<ValidEllipsoidType EllipsoidType1, ValidEllipsoidType EllipsoidType2>
EllipsoidType1::value_type mundy::distance ( const SharedNormalSignedFiniteDiff ,
const EllipsoidType1 & ellipsoid1,
const EllipsoidType2 & ellipsoid2,
Point< typename EllipsoidType1::value_type > & closest_point1,
Point< typename EllipsoidType1::value_type > & closest_point2,
mundy::Vector3< typename EllipsoidType1::value_type > & shared_normal1,
mundy::Vector3< typename EllipsoidType1::value_type > & shared_normal2 )

◆ distance() [9/50]

template<ValidLineType LineType1, ValidLineType LineType2>
LineType1::value_type mundy::distance ( const LineType1 & line1,
const LineType2 & line2 )
Template Parameters
ScalarThe scalar type
Parameters
[in]line1One line
[in]line2The other line

◆ distance() [10/50]

template<ValidLineType LineType1, ValidLineType LineType2>
LineType1::value_type mundy::distance ( const SharedNormalSigned distance_type,
const LineType1 & line1,
const LineType2 & line2 )
Template Parameters
ScalarThe scalar type
Parameters
[in]distance_typeThe distance type
[in]line1One line
[in]line2The other line

◆ distance() [11/50]

template<ValidLineType LineType1, ValidLineType LineType2>
LineType1::value_type mundy::distance ( const Euclidean distance_type,
const LineType1 & line1,
const LineType2 & line2 )
Template Parameters
ScalarThe scalar type
Parameters
[in]distance_typeThe distance type
[in]line1One line
[in]line2The other line

◆ distance() [12/50]

template<ValidLineType LineType1, ValidLineType LineType2>
LineType1::value_type mundy::distance ( const LineType1 & line1,
const LineType2 & line2,
Point< typename LineType1::value_type > & closest_point1,
Point< typename LineType1::value_type > & closest_point2,
typename LineType1::value_type & arch_length1,
typename LineType1::value_type & arch_length2,
mundy::Vector3< typename LineType1::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]line1One line
[in]line2The other line
[out]closest_point1The closest point on line1
[out]closest_point2The closest point on line2
[out]arch_length1The arch-length parameter of the closest point on line1
[out]arch_length2The arch-length parameter of the closest point on line2
[out]sepThe separation vector (from line1 to line2)

◆ distance() [13/50]

template<ValidLineType LineType1, ValidLineType LineType2>
LineType1::value_type mundy::distance ( const SharedNormalSigned distance_type,
const LineType1 & line1,
const LineType2 & line2,
Point< typename LineType1::value_type > & closest_point1,
Point< typename LineType1::value_type > & closest_point2,
typename LineType1::value_type & arch_length1,
typename LineType1::value_type & arch_length2,
mundy::Vector3< typename LineType1::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]distance_typeThe distance type
[in]line1One line
[in]line2The other line
[out]closest_point1The closest point on line1
[out]closest_point2The closest point on line2
[out]arch_length1The arch-length parameter of the closest point on line1
[out]arch_length2The arch-length parameter of the closest point on line2
[out]sepThe separation vector (from line1 to line2)

◆ distance() [14/50]

template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2>
LineSegmentType1::value_type mundy::distance ( const LineSegmentType1 & line_segment1,
const LineSegmentType2 & line_segment2 )
Template Parameters
ScalarThe scalar type
Parameters
[in]line_segment1The first line segment
[in]line_segment2The second line segment

◆ distance() [15/50]

template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2>
LineSegmentType1::value_type mundy::distance ( const Euclidean distance_type,
const LineSegmentType1 & line_segment1,
const LineSegmentType2 & line_segment2 )
Template Parameters
ScalarThe scalar type
Parameters
[in]line_segment1The first line segment
[in]line_segment2The second line segment

◆ distance() [16/50]

template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2>
LineSegmentType1::value_type mundy::distance ( const SharedNormalSigned distance_type,
const LineSegmentType1 & line_segment1,
const LineSegmentType2 & line_segment2 )
Template Parameters
ScalarThe scalar type
Parameters
[in]line_segment1The first line segment
[in]line_segment2The second line segment

◆ distance() [17/50]

template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2>
LineSegmentType1::value_type mundy::distance ( const LineSegmentType1 & line_segment1,
const LineSegmentType2 & line_segment2,
Point< typename LineSegmentType1::value_type > & closest_point1,
Point< typename LineSegmentType1::value_type > & closest_point2,
typename LineSegmentType1::value_type & arch_length1,
typename LineSegmentType1::value_type & arch_length2,
mundy::Vector3< typename LineSegmentType1::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]line_segment1The first line segment
[in]line_segment2The second line segment
[out]closest_point1The closest point on the first line segment
[out]closest_point2The closest point on the second line segment
[out]arch_length1The arch-length parameter of the closest point on the first line segment
[out]arch_length2The arch-length parameter of the closest point on the second line segment
[out]sepThe separation vector (from line_segment1 to line_segment2)

◆ distance() [18/50]

template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2>
LineSegmentType1::value_type mundy::distance ( const SharedNormalSigned distance_type,
const LineSegmentType1 & line_segment1,
const LineSegmentType2 & line_segment2,
Point< typename LineSegmentType1::value_type > & closest_point1,
Point< typename LineSegmentType1::value_type > & closest_point2,
typename LineSegmentType1::value_type & arch_length1,
typename LineSegmentType1::value_type & arch_length2,
mundy::Vector3< typename LineSegmentType1::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]line_segment1The first line segment
[in]line_segment2The second line segment
[out]closest_point1The closest point on the first line segment
[out]closest_point2The closest point on the second line segment
[out]arch_length1The arch-length parameter of the closest point on the first line segment
[out]arch_length2The arch-length parameter of the closest point on the second line segment
[out]sepThe separation vector (from line_segment1 to line_segment2)

◆ distance() [19/50]

template<ValidLineSegmentType LineSegmentType1, ValidLineSegmentType LineSegmentType2>
LineSegmentType1::value_type mundy::distance ( const Euclidean distance_type,
const LineSegmentType1 & line_segment1,
const LineSegmentType2 & line_segment2,
Point< typename LineSegmentType1::value_type > & closest_point1,
Point< typename LineSegmentType1::value_type > & closest_point2,
typename LineSegmentType1::value_type & arch_length1,
typename LineSegmentType1::value_type & arch_length2,
mundy::Vector3< typename LineSegmentType1::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]line_segment1The first line segment
[in]line_segment2The second line segment
[out]closest_point1The closest point on the first line segment
[out]closest_point2The closest point on the second line segment
[out]arch_length1The arch-length parameter of the closest point on the first line segment
[out]arch_length2The arch-length parameter of the closest point on the second line segment
[out]sepThe separation vector (from line_segment1 to line_segment2)

◆ distance() [20/50]

template<ValidLineSegmentType LineSegmentType, ValidSphereType SphereType>
LineSegmentType::value_type mundy::distance ( const LineSegmentType & line_segment,
const SphereType & sphere )
Template Parameters
ScalarThe scalar type
Parameters
[in]line_segmentThe line segment
[in]sphereThe sphere

◆ distance() [21/50]

template<ValidLineSegmentType LineSegmentType, ValidSphereType SphereType>
LineSegmentType::value_type mundy::distance ( const SharedNormalSigned distance_type,
const LineSegmentType & line_segment,
const SphereType & sphere )
Template Parameters
ScalarThe scalar type
Parameters
[in]line_segmentThe line segment
[in]sphereThe sphere

◆ distance() [22/50]

template<ValidLineSegmentType LineSegmentType, ValidSphereType SphereType>
LineSegmentType::value_type mundy::distance ( const LineSegmentType & line_segment,
const SphereType & sphere,
Point< typename LineSegmentType::value_type > & closest_point,
typename LineSegmentType::value_type & arch_length,
mundy::Vector3< typename LineSegmentType::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]line_segmentThe line segment
[in]sphereThe sphere
[out]closest_pointThe closest point on the line segment
[out]arch_lengthThe arch-length parameter of the closest point on the line segment
[out]sepThe separation vector (from line_segment to sphere)

◆ distance() [23/50]

template<ValidLineSegmentType LineSegmentType, ValidSphereType SphereType>
LineSegmentType::value_type mundy::distance ( const SharedNormalSigned distance_type,
const LineSegmentType & line_segment,
const SphereType & sphere,
Point< typename LineSegmentType::value_type > & closest_point,
typename LineSegmentType::value_type & arch_length,
mundy::Vector3< typename LineSegmentType::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]line_segmentThe line segment
[in]sphereThe sphere
[out]closest_pointThe closest point on the line segment
[out]arch_lengthThe arch-length parameter of the closest point on the line segment
[out]sepThe separation vector (from line_segment to sphere)

◆ distance() [24/50]

template<ValidLineType LineType, ValidSphereType SphereType>
LineType::value_type mundy::distance ( const LineType & line,
const SphereType & sphere )
Template Parameters
ScalarThe scalar type
Parameters
[in]lineThe line
[in]sphereThe sphere

◆ distance() [25/50]

template<ValidLineType LineType, ValidSphereType SphereType>
LineType::value_type mundy::distance ( const SharedNormalSigned distance_type,
const LineType & line,
const SphereType & sphere )
Template Parameters
ScalarThe scalar type
Parameters
[in]lineThe line
[in]sphereThe sphere

◆ distance() [26/50]

template<ValidLineType LineType, ValidSphereType SphereType>
LineType::value_type mundy::distance ( const LineType & line,
const SphereType & sphere,
Point< typename LineType::value_type > & closest_point,
typename LineType::value_type & arch_length,
mundy::Vector3< typename LineType::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]lineThe line
[in]sphereThe sphere
[out]closest_pointThe closest point on the line
[out]arch_lengthThe arch-length parameter of the closest point on the line
[out]sepThe separation vector (from line to sphere)

◆ distance() [27/50]

template<ValidLineType LineType, ValidSphereType SphereType>
LineType::value_type mundy::distance ( const SharedNormalSigned distance_type,
const LineType & line,
const SphereType & sphere,
Point< typename LineType::value_type > & closest_point,
typename LineType::value_type & arch_length,
mundy::Vector3< typename LineType::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]lineThe line
[in]sphereThe sphere
[out]closest_pointThe closest point on the line
[out]arch_lengthThe arch-length parameter of the closest point on the line
[out]sepThe separation vector (from line to sphere)

◆ distance() [28/50]

template<ValidPointType PointType, ValidEllipsoidType EllipsoidType>
PointType::value_type mundy::distance ( const PointType & point,
const EllipsoidType & ellipsoid )

◆ distance() [29/50]

template<ValidPointType PointType, ValidEllipsoidType EllipsoidType>
PointType::value_type mundy::distance ( const SharedNormalSigned distance_type,
const PointType & point,
const EllipsoidType & ellipsoid )

◆ PointEllipsoidObjective()

template<ValidPointType PointType, ValidEllipsoidType EllipsoidType>
mundy::PointEllipsoidObjective< PointType, EllipsoidType >::PointEllipsoidObjective ( const PointType & point,
const EllipsoidType & ellipsoid,
mundy::Vector3< Scalar > & shared_normal,
Point< Scalar > & foot_point )
inline

◆ operator()() [2/2]

template<ValidPointType PointType, ValidEllipsoidType EllipsoidType>
Scalar mundy::PointEllipsoidObjective< PointType, EllipsoidType >::operator() ( const mundy::Vector< Scalar, 2 > & theta_phi) const
inline

◆ distance() [30/50]

template<ValidPointType PointType, ValidEllipsoidType EllipsoidType>
PointType::value_type mundy::distance ( const SharedNormalSigned distance_type,
const PointType & point,
const EllipsoidType & ellipsoid,
Point< typename PointType::value_type > & closest_point,
mundy::Vector3< typename PointType::value_type > & ellipsoid_normal )

◆ distance() [31/50]

template<ValidPointType PointType, ValidLineType LineType>
PointType::value_type mundy::distance ( const PointType & point,
const LineType & line )
Template Parameters
ScalarThe scalar type
Parameters
[in]pointThe point
[in]lineThe line

◆ distance() [32/50]

template<ValidPointType PointType, ValidLineType LineType>
PointType::value_type mundy::distance ( const SharedNormalSigned distance_type,
const PointType & point,
const LineType & line )
Template Parameters
ScalarThe scalar type
Parameters
[in]pointThe point
[in]lineThe line

◆ distance() [33/50]

template<ValidPointType PointType, ValidLineType LineType>
PointType::value_type mundy::distance ( const PointType & point,
const LineType & line,
Point< typename PointType::value_type > & closest_point,
typename PointType::value_type & arch_length,
mundy::Vector3< typename PointType::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]pointThe point
[in]lineThe line
[out]closest_pointThe closest point on the line
[out]arch_lengthThe arch-length parameter of the closest point on the line
[out]sepThe separation vector (from point to line)

◆ distance() [34/50]

template<ValidPointType PointType, ValidLineType LineType>
PointType::value_type mundy::distance ( const SharedNormalSigned distance_type,
const PointType & point,
const LineType & line,
Point< typename PointType::value_type > & closest_point,
typename PointType::value_type & arch_length,
mundy::Vector3< typename PointType::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]pointThe point
[in]lineThe line
[out]closest_pointThe closest point on the line
[out]arch_lengthThe arch-length parameter of the closest point on the line
[out]sepThe separation vector (from point to line)

◆ distance() [35/50]

template<ValidPointType PointType, ValidLineSegmentType LineSegmentType>
PointType::value_type mundy::distance ( const PointType & point,
const LineSegmentType & line_segment )
Template Parameters
ScalarThe scalar type
Parameters
[in]pointThe point
[in]line_segmentThe line segment

◆ distance() [36/50]

template<ValidPointType PointType, ValidLineSegmentType LineSegmentType>
PointType::value_type mundy::distance ( const SharedNormalSigned distance_type,
const PointType & point,
const LineSegmentType & line_segment )
Template Parameters
ScalarThe scalar type
Parameters
[in]pointThe point
[in]line_segmentThe line segment

◆ distance() [37/50]

template<ValidPointType PointType, ValidLineSegmentType LineSegmentType>
PointType::value_type mundy::distance ( const PointType & point,
const LineSegmentType & line_segment,
Point< typename PointType::value_type > & closest_point,
typename PointType::value_type & arch_length,
mundy::Vector3< typename PointType::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]pointThe point
[in]line_segmentThe line segment
[out]closest_pointThe closest point on the line segment
[out]arch_lengthThe arch-length parameter of the closest point on the line segment
[out]sepThe separation vector (from point to line segment)

◆ distance() [38/50]

template<ValidPointType PointType, ValidLineSegmentType LineSegmentType>
PointType::value_type mundy::distance ( const SharedNormalSigned distance_type,
const PointType & point,
const LineSegmentType & line_segment,
Point< typename PointType::value_type > & closest_point,
typename PointType::value_type & arch_length,
mundy::Vector3< typename PointType::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]pointThe point
[in]line_segmentThe line segment
[out]closest_pointThe closest point on the line segment
[out]arch_lengthThe arch-length parameter of the closest point on the line segment
[out]sepThe separation vector (from point to line segment)

◆ distance() [39/50]

template<ValidPointType PointType1, ValidPointType PointType2>
PointType1::value_type mundy::distance ( const SharedNormalSigned distance_type,
const PointType1 & point1,
const PointType2 & point2 )
Template Parameters
ScalarThe scalar type
Parameters
[in]point1The first point
[in]point2The second point

◆ distance() [40/50]

template<ValidPointType PointType1, ValidPointType PointType2>
PointType1::value_type mundy::distance ( const SharedNormalSigned distance_type,
const PointType1 & point1,
const PointType2 & point2,
mundy::Vector3< typename PointType1::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]point1The first point
[in]point2The second point
[out]sepThe separation vector (from point1 to point2)

◆ distance() [41/50]

template<ValidPointType PointType1, ValidPointType PointType2>
PointType1::value_type mundy::distance ( const Euclidean distance_type,
const PointType1 & point1,
const PointType2 & point2 )
Template Parameters
ScalarThe scalar type
Parameters
[in]point1The first point
[in]point2The second point

◆ distance() [42/50]

template<ValidPointType PointType1, ValidPointType PointType2>
PointType1::value_type mundy::distance ( const Euclidean distance_type,
const PointType1 & point1,
const PointType2 & point2,
mundy::Vector3< typename PointType1::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]point1The first point
[in]point2The second point
[out]sepThe separation vector (from point1 to point2)

◆ distance() [43/50]

template<ValidPointType PointType1, ValidPointType PointType2>
PointType1::value_type mundy::distance ( const PointType1 & point1,
const PointType2 & point2 )
Template Parameters
ScalarThe scalar type
Parameters
[in]point1The first point
[in]point2The second point

◆ distance() [44/50]

template<ValidPointType PointType1, ValidPointType PointType2>
PointType1::value_type mundy::distance ( const PointType1 & point1,
const PointType2 & point2,
mundy::Vector3< typename PointType1::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]point1The first point
[in]point2The second point
[out]sepThe separation vector (from point1 to point2)

◆ distance() [45/50]

template<ValidPointType PointType, ValidSphereType SphereType>
PointType::value_type mundy::distance ( const PointType & point,
const SphereType & sphere )
Template Parameters
ScalarThe scalar type
Parameters
[in]pointThe point
[in]sphereThe sphere

◆ distance() [46/50]

template<ValidPointType PointType, ValidSphereType SphereType>
PointType::value_type mundy::distance ( const SharedNormalSigned distance_type,
const PointType & point,
const SphereType & sphere )
Template Parameters
ScalarThe scalar type
Parameters
[in]pointThe point
[in]sphereThe sphere

◆ distance() [47/50]

template<ValidPointType PointType, ValidSphereType SphereType>
PointType::value_type mundy::distance ( const PointType & point,
const SphereType & sphere,
mundy::Vector3< typename PointType::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]pointThe point
[in]sphereThe sphere
[out]sepThe separation vector (from point to sphere)

◆ distance() [48/50]

template<ValidSphereType SphereType1, ValidSphereType SphereType2>
SphereType1::value_type mundy::distance ( const SphereType1 & sphere1,
const SphereType2 & sphere2 )
Template Parameters
ScalarThe scalar type
Parameters
[in]sphere1One sphere
[in]sphere2The other sphere

◆ distance() [49/50]

template<ValidSphereType SphereType1, ValidSphereType SphereType2>
SphereType1::value_type mundy::distance ( const SharedNormalSigned distance_type,
const SphereType1 & sphere1,
const SphereType2 & sphere2 )
Template Parameters
ScalarThe scalar type
Parameters
[in]sphere1One sphere
[in]sphere2The other sphere

◆ distance() [50/50]

template<ValidSphereType SphereType1, ValidSphereType SphereType2>
SphereType1::value_type mundy::distance ( const SphereType1 & sphere1,
const SphereType2 & sphere2,
mundy::Vector3< typename SphereType1::value_type > & sep )
Template Parameters
ScalarThe scalar type
Parameters
[in]sphere1One sphere
[in]sphere2The other sphere
[out]sepThe separation vector (from the surface of sphere1 to the surface of sphere2)