Simbody  3.7
SimTK::Geo::LineSeg_< P > Class Template Reference

A 3d line segment primitive represented by its end points in an unspecified frame, and a collection of line segment-related utility methods. More...

## Public Member Functions

LineSeg_ ()
Construct an uninitialized LineSeg object; the end points will be garbage (NaN in Debug builds). More...

LineSeg_ (const Vec3P &e0, const Vec3P &e1)
Construct a LineSeg with the given end points. More...

LineSeg_setEndpoints (const Vec3P &e0, const Vec3P &e1)
Change the end points of this line segment. More...

LineSeg_setEndpoint (int which, const Vec3P &p)
Change one end point of this line segment. More...

bool isDegenerate (RealP tol=Geo::getDefaultTol< P >()) const
Determine whether this line segment is degenerate to a given tolerance, meaning that its length is less than or equal to the tolerance. More...

const Vec3PgetEndpoint (int which) const
Get the location of an end point. Order is the same as construction. More...

Vec3PupdEndpoint (int which)
Get a writable reference to the location of an end point. Order is the same as construction. More...

const Vec3Poperator[] (int which) const
Access an end point by indexing the line segment. More...

Vec3Poperator[] (int which)
Get writable access to an end point by indexing the line segment. More...

RealP calcLength () const
Calculate the length of this line segment (expensive). More...

RealP calcLengthSqr () const
Calculate the square of the length of this line segment (cheap). More...

Vec3P findPoint (RealP t) const
Return a point along the line segment given by its coordinate t, where t==0 gives end point 0, t==1 gives end point 1 and other values interpolate or extrapolate linearly. More...

Vec3P findMidpoint () const
Return the center point of the line segment; this is the same as findPoint(1/2) but faster. More...

Sphere_< P > calcBoundingSphere () const
Calculate a minimal bounding sphere for this line segment. More...

RealP findDistanceToPoint (const Vec3P &p2) const
Find the distance between this line segment and a point expressed in the same frame. More...

RealP findDistanceToPointSqr (const Vec3P &p2) const
Find the square of the distance between this line segment and a point expressed in the same frame. More...

## Detailed Description

### template<class P> class SimTK::Geo::LineSeg_< P >

A 3d line segment primitive represented by its end points in an unspecified frame, and a collection of line segment-related utility methods.

We support a one-parameter t representation of the line segment, where t=0 gives the first end point and t=1 gives the second end point.

## ◆ LineSeg_() [1/2]

template<class P>
 SimTK::Geo::LineSeg_< P >::LineSeg_ ( )
inline

Construct an uninitialized LineSeg object; the end points will be garbage (NaN in Debug builds).

## ◆ LineSeg_() [2/2]

template<class P>
 SimTK::Geo::LineSeg_< P >::LineSeg_ ( const Vec3P & e0, const Vec3P & e1 )
inline

Construct a LineSeg with the given end points.

When an orientation is needed we define the line segment to go from e0 to e1.

## ◆ setEndpoints()

template<class P>
 LineSeg_& SimTK::Geo::LineSeg_< P >::setEndpoints ( const Vec3P & e0, const Vec3P & e1 )
inline

Change the end points of this line segment.

## ◆ setEndpoint()

template<class P>
 LineSeg_& SimTK::Geo::LineSeg_< P >::setEndpoint ( int which, const Vec3P & p )
inline

Change one end point of this line segment.

## ◆ isDegenerate()

template<class P>
 bool SimTK::Geo::LineSeg_< P >::isDegenerate ( RealP tol = `Geo::getDefaultTol

()` ) const

inline

Determine whether this line segment is degenerate to a given tolerance, meaning that its length is less than or equal to the tolerance.

Use a tolerance of zero if you want to check only for exact degeneracy. By default the tolerance is SignificantReal for the precision in use, about 2e-14 in double, 9e-7 in float. Cost is 10 flops.

## ◆ getEndpoint()

template<class P>
 const Vec3P& SimTK::Geo::LineSeg_< P >::getEndpoint ( int which ) const
inline

Get the location of an end point. Order is the same as construction.

You can use operator[] instead for a more compact notation.

## ◆ updEndpoint()

template<class P>
 Vec3P& SimTK::Geo::LineSeg_< P >::updEndpoint ( int which )
inline

Get a writable reference to the location of an end point. Order is the same as construction.

You can use operator[] instead for a more compact notation.

## ◆ operator[]() [1/2]

template<class P>
 const Vec3P& SimTK::Geo::LineSeg_< P >::operator[] ( int which ) const
inline

Access an end point by indexing the line segment.

## ◆ operator[]() [2/2]

template<class P>
 Vec3P& SimTK::Geo::LineSeg_< P >::operator[] ( int which )
inline

Get writable access to an end point by indexing the line segment.

## ◆ calcLength()

template<class P>
 RealP SimTK::Geo::LineSeg_< P >::calcLength ( ) const
inline

Calculate the length of this line segment (expensive).

## ◆ calcLengthSqr()

template<class P>
 RealP SimTK::Geo::LineSeg_< P >::calcLengthSqr ( ) const
inline

Calculate the square of the length of this line segment (cheap).

Cost is 8 flops.

## ◆ findPoint()

template<class P>
 Vec3P SimTK::Geo::LineSeg_< P >::findPoint ( RealP t ) const
inline

Return a point along the line segment given by its coordinate t, where t==0 gives end point 0, t==1 gives end point 1 and other values interpolate or extrapolate linearly.

Note that values outside the range [0,1] are not on the line segment. Cost is 10 flops.

## ◆ findMidpoint()

template<class P>
 Vec3P SimTK::Geo::LineSeg_< P >::findMidpoint ( ) const
inline

Return the center point of the line segment; this is the same as findPoint(1/2) but faster.

Cost is 4 flops.

## ◆ calcBoundingSphere()

template<class P>
 Sphere_

SimTK::Geo::LineSeg_< P >::calcBoundingSphere ( ) const

inline

Calculate a minimal bounding sphere for this line segment.

This is the sphere whose center is the segment midpoint and whose radius is half the segment length, plus a little slop. Cost is about 45 flops.

## ◆ findDistanceToPoint()

template<class P>
 RealP SimTK::Geo::LineSeg_< P >::findDistanceToPoint ( const Vec3P & p2 ) const
inline

Find the distance between this line segment and a point expressed in the same frame.

Cost is XXX flops.

## ◆ findDistanceToPointSqr()

template<class P>
 RealP SimTK::Geo::LineSeg_< P >::findDistanceToPointSqr ( const Vec3P & p2 ) const
inline

Find the square of the distance between this line segment and a point expressed in the same frame.

Cost is XXX flops.

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