Trax3 3.1.0
trax track library
Loading...
Searching...
No Matches
trax::LineP Struct Referenceabstract

A straight line with owned parameters. More...

#include <C:/Trend/Development/Trax3/Code/trax/Curve.h>

Inheritance diagram for trax::LineP:

Classes

struct  Data
 Data definig the curve. More...

Public Member Functions

virtual const DataGetData () const noexcept=0
 Retrieves the data to construct this curve type. A roundtrip is guaranteed to be invariant.
Creation

Creates a straight line.

Parameters
startDefines the starting point of the line segment.
endDefines the end point of the line segment.
upUp direction (must be normalized).
dataDefines the starting point in data.vb.pos and the direction in data.vb.tan.
Returns
The total curve range between start and end
Exceptions
std::invalid_argumentif the creation fails.
virtual common::Interval< LengthCreate (const spat::Position< Length > &start, const spat::Position< Length > &end, const spat::Vector< One > &up=Up)=0
 Creates a straight line.
virtual void Create (const spat::VectorBundle< Length, One > &start, const spat::Vector< One > &up=Up)=0
virtual void Create (const spat::VectorBundle2< Length, One > &start)=0
 Creates a straight line.
virtual void Create (const spat::Frame< Length, One > &start)=0
 Creates a straight line.
virtual void Create (const spat::Position< Length > &start, const spat::Vector< One > &tan, const spat::Vector< One > &up=Up)=0
virtual common::Interval< LengthCreate (const Data &data)=0
 Creates a straight line.
Public Member Functions inherited from trax::Curve
virtual const char * TypeName () const noexcept=0
virtual CurveType GetCurveType () const noexcept=0
virtual bool IsValid () const noexcept=0
virtual AnglePerLength Curvature (Length s) const =0
virtual AnglePerLength Torsion (Length s) const =0
virtual bool IsFlat () const noexcept=0
virtual void Transition (Length s, spat::Position< Length > &pos) const =0
 Copies the 3D Position at the specified location to pos.
virtual void Transition (Length s, spat::Vector< One > &tan) const =0
 Copies the 3D tangential vector at the specified location to tan.
virtual void Transition (Length s, spat::VectorBundle< Length, One > &bundle) const =0
 Copies the 3D Position and tangential vector at the specified location to bundle.
virtual void Transition (Length s, spat::VectorBundle2< Length, One > &bundle) const =0
 Copies the 3D Position and tangential and normal vectors at the specified location to bundle.
virtual void Transition (Length s, spat::Frame< Length, One > &frame) const =0
 Copies the 3D TBN-Frame at the specified location to frame.
virtual std::vector< LengthZeroSet () const =0
 Returns a list of parameters at which the normal vector flips from one side to the other.
virtual common::Interval< LengthRange () const =0
virtual spat::Vector< OneLocalUp () const =0
 Gives the Curve's idiosyncratic up direction. Some curves maintain some idea about where they have their upside, either because of their form (e.g Helix) or because it is extra defined (e.g. for Line). Some curves maintain no such notion (e.g. many Cubics).
virtual spat::Frame< Length, OneGetCurveLocalTransformation () const =0
virtual std::unique_ptr< Curve > Clone () const =0
 make an exact copy of this curve.
virtual bool Mirror (const spat::VectorBundle< Length, One > &mirrorPlane)=0
 Make a Curve with mirrored geometry (but of course one thet returns right handed frames).
virtual bool Equals (const Curve &toCurve, common::Interval< Length > range, Length epsilon_length=epsilon__length, Angle epsilon_angle=epsilon__angle) const =0
 Comparison.
 Curve (Curve &&)=delete
Curve & operator= (const Curve &)=delete
Curve & operator= (Curve &&)=delete

Static Public Member Functions

static dclspc std::unique_ptr< LinePMake () noexcept
 Makes a LineP object.

Additional Inherited Members

Public Types inherited from trax::Curve
enum class  CurveType {
  none = 0 , Line , Arc , Helix ,
  LineP , ArcP , HelixP , Clothoid ,
  Cubic , Spline , Rotator , RotatorWithOffset ,
  RotatorChain , PolygonalChain , SampledCurve , Parallel ,
  EEPCurve , EEPResidual , EEPAlternative , Unknown ,
  UserDefined
}
 Curve type identification values. More...
Protected Member Functions inherited from trax::Curve
 Curve (const Curve &)=default

Detailed Description

A straight line with owned parameters.

Try to use 'Line' instead. Only use this curve with redundant parameters if you really need it; for example to position a curve independently from the track's frame, or you want to use the create methods on a curve directly.

Member Function Documentation

◆ Create() [1/2]

virtual void trax::LineP::Create ( const spat::Position< Length > & start,
const spat::Vector< One > & tan,
const spat::Vector< One > & up = Up )
pure virtual
Parameters
startDefines the starting point.
tanDefines the direction of the line.
upUp direction.

◆ Create() [2/2]

virtual void trax::LineP::Create ( const spat::VectorBundle< Length, One > & start,
const spat::Vector< One > & up = Up )
pure virtual
Parameters
startDefines the starting point in start.P and the direction in start.T.
upUp direction.

The documentation for this struct was generated from the following file:
  • C:/Trend/Development/Trax3/Code/trax/Curve.h