A virtual base class for parametric curves. More...
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 () |
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()].
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.
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.
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.
int getNumDimensions | ( | ) |
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 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.
setNumDimensions | ( | int | num | ) |
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.
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.