Public Member Functions | Private Member Functions | Private Attributes
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 &, const label start, const label end, const pointField &control)
 Construct from components. More...
 
 bezier (const pointField &, Istream &)
 Construct from Istream. More...
 
virtual ~bezier ()
 Destructor. More...
 
point position (const scalar lambda) const
 Return the point position corresponding to the curve parameter. More...
 
scalar length () const
 Return the length of the curve. More...
 
- Public Member Functions inherited from curvedEdge
 TypeName ("curvedEdge")
 Runtime type information. More...
 
 declareRunTimeSelectionTable (autoPtr, curvedEdge, Istream,(const pointField &points, Istream &is),(points, is))
 
 curvedEdge (const pointField &points, const label start, const label end)
 Construct from components. More...
 
 curvedEdge (const pointField &, Istream &)
 Construct from Istream setting pointsList. More...
 
 curvedEdge (const curvedEdge &)
 Copy construct. More...
 
virtual autoPtr< curvedEdgeclone () const
 Clone function. More...
 
virtual ~curvedEdge ()
 Destructor. More...
 
label start () const
 Return label of start point. More...
 
label end () const
 Return label of end point. More...
 
int compare (const curvedEdge &) const
 Compare the given start and end points with this curve. More...
 
int compare (const edge &) const
 Compare the given start and end points with this curve. More...
 
int compare (const label start, const label end) const
 Compare the given start and end points with this curve. More...
 
void operator= (const curvedEdge &)
 

Private Member Functions

 bezier (const bezier &)
 Disallow default bitwise copy construct. More...
 
void operator= (const bezier &)
 Disallow default bitwise assignment. More...
 

Private Attributes

pointField control_
 Control points. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from curvedEdge
static autoPtr< curvedEdgeNew (const pointField &, Istream &)
 New function which constructs and returns pointer to a curvedEdge. More...
 
- Static Protected Member Functions inherited from curvedEdge
static pointField appendEndPoints (const pointField &, const label start, const label end, const pointField &otherKnots)
 Return a complete point field by appending the start/end points. More...
 
- Protected Attributes inherited from curvedEdge
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 bezier )
private

Disallow default bitwise copy construct.

◆ bezier() [2/3]

bezier ( const pointField ps,
const label  start,
const label  end,
const pointField control 
)

Construct from components.

Definition at line 42 of file bezier.C.

◆ bezier() [3/3]

bezier ( const pointField ps,
Istream is 
)

Construct from Istream.

Definition at line 54 of file bezier.C.

◆ ~bezier()

~bezier ( )
virtual

Destructor.

Definition at line 63 of file bezier.C.

Member Function Documentation

◆ operator=()

void operator= ( const bezier )
private

Disallow default bitwise assignment.

◆ TypeName()

TypeName ( "bezier"  )

◆ position()

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

Return the point position corresponding to the curve parameter.

0 <= lambda <= 1

Implements curvedEdge.

Definition at line 69 of file bezier.C.

References UList::assign(), forAll, and lambda().

Here is the call graph for this function:

◆ length()

Foam::scalar length ( ) const
virtual

Return the length of the curve.

Implements curvedEdge.

Definition at line 90 of file bezier.C.

References NotImplemented.

Field Documentation

◆ control_

pointField control_
private

Control points.

Definition at line 64 of file bezier.H.


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