Panda3D
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties
Public Member Functions | Static Public Member Functions
ParametricCurve Class Reference

A virtual base class for parametric curves. More...

Inheritance diagram for ParametricCurve:
PandaNode TypedWritable Namable LinkedListNode ReferenceCount TypedObject CubicCurveseg PiecewiseCurve HermiteCurve NurbsCurve

List of all members.

Public Member Functions

bool adjustPoint (float t, float px, float py, float pz)
 Recomputes the curve such that it passes through the point (px, py, pz) at time t, but keeps the same tangent value at that point.
bool adjustPt (float t, float px, float py, float pz, float tx, float ty, float tz)
 Recomputes the curve such that it passes through the point (px, py, pz) with the tangent (tx, ty, tz).
bool adjustTangent (float t, float tx, float ty, float tz)
 Recomputes the curve such that it has the tangent (tx, ty, tz) at time t, but keeps the same position at the point.
float calcLength ()
 Approximates the length of the entire curve to within a few decimal places.
float calcLength (float from, float to)
 Approximates the length of the curve segment from parametric time 'from' to time 'to'.
float findLength (float start_t, float length_offset)
 Returns the parametric value corresponding to the indicated distance along the curve from the starting parametric value.
bool get2ndtangent (float t, VBase3 tangent2)
int getCurveType ()
 Returns the flag indicating the use to which the curve is intended to be put.
float getMaxT ()
 Returns the upper bound of t for the entire curve.
int getNumDimensions ()
 Returns the number of significant dimensions in the curve's vertices, as set by a previous call to set_num_dimensions().
bool getPoint (float t, VBase3 point)
bool getPt (float t, VBase3 point, VBase3 tangent)
bool getTangent (float t, VBase3 tangent)
bool isValid ()
 Returns true if the curve is defined.
bool recompute ()
 Recalculates the curve, if necessary.
 setCurveType (int type)
 Sets the flag indicating the use to which the curve is intended to be put.
 setNumDimensions (int num)
 Specifies the number of significant dimensions in the curve's vertices.
bool stitch (ParametricCurve const a, ParametricCurve const b)
 Regenerates this curve as one long curve: the first curve connected end-to-end with the second one.
bool writeEgg (Filename filename, CoordinateSystem cs)
 Writes an egg description of the nurbs curve to the specified output file.
bool writeEgg (Filename filename)
 Writes an egg description of the nurbs curve to the specified output file.
bool writeEgg (ostream out, Filename const filename, CoordinateSystem cs)
 Writes an egg description of the nurbs curve to the specified output stream.

Static Public Member Functions

static TypeHandle getClassType ()

Detailed Description

A virtual base class for parametric curves.

This encapsulates all curves in 3-d space defined for a single parameter t in the range [0,get_max_t()].


Member Function Documentation

bool adjustPoint ( float  t,
float  px,
float  py,
float  pz 
)

Recomputes the curve such that it passes through the point (px, py, pz) at time t, but keeps the same tangent value at that point.

bool adjustPt ( float  t,
float  px,
float  py,
float  pz,
float  tx,
float  ty,
float  tz 
)

Recomputes the curve such that it passes through the point (px, py, pz) with the tangent (tx, ty, tz).

bool adjustTangent ( float  t,
float  tx,
float  ty,
float  tz 
)

Recomputes the curve such that it has the tangent (tx, ty, tz) at time t, but keeps the same position at the point.

float calcLength ( )

Approximates the length of the entire curve to within a few decimal places.

float calcLength ( float  from,
float  to 
)

Approximates the length of the curve segment from parametric time 'from' to time 'to'.

float findLength ( float  start_t,
float  length_offset 
)

Returns the parametric value corresponding to the indicated distance along the curve from the starting parametric value.

This is the inverse of calc_length(): rather than determining the length along the curve between two parametric points, it determines the position in parametric time of a point n units along the curve.

The search distance must not be negative.

bool get2ndtangent ( float  t,
VBase3  tangent2 
)
static TypeHandle getClassType ( ) [static]

Reimplemented from PandaNode.

Reimplemented in NurbsCurve, HermiteCurve, PiecewiseCurve, and CubicCurveseg.

Returns the flag indicating the use to which the curve is intended to be put.

float getMaxT ( )

Returns the upper bound of t for the entire curve.

The curve is defined in the range 0.0f <= t <= get_max_t(). This base class function always returns 1.0f; derived classes might override this to return something else.

Returns the number of significant dimensions in the curve's vertices, as set by a previous call to set_num_dimensions().

This is only a hint as to how the curve is intended to be used; the actual number of dimensions of any curve is always three.

bool getPoint ( float  t,
VBase3  point 
)
bool getPt ( float  t,
VBase3  point,
VBase3  tangent 
)
bool getTangent ( float  t,
VBase3  tangent 
)
bool isValid ( )

Returns true if the curve is defined.

This base class function always returns true; derived classes might override this to sometimes return false.

bool recompute ( )

Recalculates the curve, if necessary.

Returns true if the resulting curve is valid, false otherwise.

setCurveType ( int  type)

Sets the flag indicating the use to which the curve is intended to be put.

This flag is optional and only serves to provide a hint to the egg reader and writer code; it has no effect on the curve's behavior.

Setting the curve type also sets the num_dimensions to 3 or 1 according to the type.

THis flag may have one of the values PCT_XYZ, PCT_HPR, or PCT_T.

Specifies the number of significant dimensions in the curve's vertices.

This should be one of 1, 2, or 3. Normally, XYZ and HPR curves have three dimensions; time curves should always have one dimension. This only serves as a hint to the mopath editor, and also controls how the curve is written out.

bool stitch ( ParametricCurve const  a,
ParametricCurve const  b 
)

Regenerates this curve as one long curve: the first curve connected end-to-end with the second one.

Either a or b may be the same as 'this'.

Returns true if successful, false on failure or if the curve type does not support stitching.

bool writeEgg ( Filename  filename,
CoordinateSystem  cs 
)

Writes an egg description of the nurbs curve to the specified output file.

Returns true if the file is successfully written.

bool writeEgg ( Filename  filename)

Writes an egg description of the nurbs curve to the specified output file.

Returns true if the file is successfully written.

bool writeEgg ( ostream  out,
Filename const  filename,
CoordinateSystem  cs 
)

Writes an egg description of the nurbs curve to the specified output stream.

Returns true if the file is successfully written.

 All Classes Namespaces Functions Variables Enumerations Enumerator Properties