Public Member Functions | List of all members
bezier Class Reference

Nth order bezier curve edge. Only interior control points should be specified. The outer points are taken as start and end. Note that the calculation of each point takes 0(N^2) time, where N is the number of control points. This edge type shouldn't therefore be used for finely discretised line data; polyLine or similar will be more appropriate for such cases. Beziers are useful for simple curved shapes such as aerofoils, or when you want an edge to match a specific direction at one, or both, or its endpoints. In comparison with BSplines, the grading of bezier edges should be smoother, and the code is much simpler. The algorithmic order is worse, however, and the edge will not follow the control points as closely. More...

Inheritance diagram for bezier:
Inheritance graph
[legend]
Collaboration diagram for bezier:
Collaboration graph
[legend]

Public Member Functions

 TypeName ("bezier")
 
 bezier (const pointField &points, const edge &fromTo, const pointField &control)
 
 bezier (const pointField &points, const label from, const label to, const pointField &control)
 
 bezier (const dictionary &dict, const label index, const searchableSurfaces &, const pointField &points, Istream &is)
 
virtual ~bezier ()=default
 
point position (const scalar lambda) const
 
scalar length () const
 
- Public Member Functions inherited from blockEdge
 TypeName ("blockEdge")
 
 declareRunTimeSelectionTable (autoPtr, blockEdge, Istream,(const dictionary &dict, const label index, const searchableSurfaces &geometry, const pointField &points, Istream &is),(dict, index, geometry, points, is))
 
 blockEdge (const pointField &points, const edge &fromTo)
 
 blockEdge (const dictionary &dict, const label index, const pointField &points, Istream &is)
 
virtual autoPtr< blockEdgeclone () const
 
virtual ~blockEdge ()=default
 
bool valid () const noexcept
 
label start () const noexcept
 
label end () const noexcept
 
const pointfirstPoint () const
 
const pointlastPoint () const
 
int compare (const blockEdge &e) const
 
int compare (const edge &e) const
 
int compare (const label start, const label end) const
 
point linearPosition (const scalar lambda) const
 
virtual tmp< pointFieldposition (const scalarList &lambdas) const
 
void write (Ostream &os, const dictionary &dict) const
 

Additional Inherited Members

- Static Public Member Functions inherited from blockEdge
static autoPtr< blockEdgeNew (const dictionary &dict, const label index, const searchableSurfaces &geometry, const pointField &points, Istream &is)
 
- Protected Member Functions inherited from blockEdge
 blockEdge (const pointField &points, const label from, const label to)
 
- Static Protected Member Functions inherited from blockEdge
static pointField appendEndPoints (const pointField &p, const label from, const label to, const pointField &intermediate)
 
- Protected Attributes inherited from blockEdge
const pointFieldpoints_
 
const label start_
 
const label end_
 

Detailed Description

Nth order bezier curve edge. Only interior control points should be specified. The outer points are taken as start and end. Note that the calculation of each point takes 0(N^2) time, where N is the number of control points. This edge type shouldn't therefore be used for finely discretised line data; polyLine or similar will be more appropriate for such cases. Beziers are useful for simple curved shapes such as aerofoils, or when you want an edge to match a specific direction at one, or both, or its endpoints. In comparison with BSplines, the grading of bezier edges should be smoother, and the code is much simpler. The algorithmic order is worse, however, and the edge will not follow the control points as closely.

Source files

Definition at line 57 of file bezier.H.

Constructor & Destructor Documentation

◆ bezier() [1/3]

bezier ( const pointField points,
const edge fromTo,
const pointField control 
)
Parameters
pointsReferenced point field
fromToStart/end in point field
controlThe control points

Definition at line 41 of file bezier.C.

◆ bezier() [2/3]

bezier ( const pointField points,
const label  from,
const label  to,
const pointField control 
)
Parameters
pointsReferenced point field
fromStart point in point field
toEnd point in point field
controlThe control points

Definition at line 53 of file bezier.C.

◆ bezier() [3/3]

bezier ( const dictionary dict,
const label  index,
const searchableSurfaces ,
const pointField points,
Istream is 
)
Parameters
pointsReferenced point field

Definition at line 65 of file bezier.C.

◆ ~bezier()

virtual ~bezier ( )
virtualdefault

Member Function Documentation

◆ TypeName()

TypeName ( "bezier"  )

◆ position()

Foam::point position ( const scalar  lambda) const
virtual

Implements blockEdge.

Definition at line 83 of file bezier.C.

References forAll, and lambda().

Here is the call graph for this function:

◆ length()

Foam::scalar length ( ) const
virtual

Implements blockEdge.

Definition at line 102 of file bezier.C.

References NotImplemented.


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