Panda3D
Public Member Functions | List of all members
NurbsCurveResult Class Reference

The result of a NurbsCurveEvaluator. More...

Inheritance diagram for NurbsCurveResult:
ReferenceCount

Public Member Functions

 __init__ (const NurbsCurveResult)
 
 adaptiveSample (float tolerance)
 Determines the set of subdivisions necessary to approximate the curve with a set of linear segments, no point of which is farther than tolerance units from the actual curve. More...
 
float evalExtendedPoint (float t, int d)
 Evaluates the curve in n-dimensional space according to the extended vertices associated with the curve in the indicated dimension. More...
 
bool evalExtendedPoints (float t, int d, PNStdfloat[] result, int num_values)
 Simultaneously performs eval_extended_point on a contiguous sequence of dimensions. More...
 
bool evalPoint (float t, LVecBase3 point)
 Computes the point on the curve corresponding to the indicated value in parametric time. More...
 
float evalSegmentExtendedPoint (int segment, float t, int d)
 Evaluates the curve in n-dimensional space according to the extended vertices associated with the curve in the indicated dimension. More...
 
 evalSegmentExtendedPoints (int segment, float t, int d, PNStdfloat[] result, int num_values)
 Simultaneously performs eval_extended_point on a contiguous sequence of dimensions. More...
 
 evalSegmentPoint (int segment, float t, LVecBase3 point)
 Evaluates the point on the curve corresponding to the indicated value in parametric time within the indicated curve segment. More...
 
 evalSegmentTangent (int segment, float t, LVecBase3 tangent)
 As eval_segment_point, but computes the tangent to the curve at the indicated point. More...
 
bool evalTangent (float t, LVecBase3 tangent)
 Computes the tangent to the curve at the indicated point in parametric time. More...
 
float getEndT ()
 Returns the last legal value of t on the curve. More...
 
int getNumSamples ()
 Returns the number of sample points generated by the previous call to adaptive_sample(). More...
 
int getNumSegments ()
 Returns the number of piecewise continuous segments within the curve. More...
 
const LPoint3 getSamplePoint (int n)
 Returns the point on the curve of the nth sample point generated by the previous call to adaptive_sample(). More...
 
list getSamplePoints ()
 
float getSampleT (int n)
 Returns the t value of the nth sample point generated by the previous call to adaptive_sample(). More...
 
list getSampleTs ()
 
float getSegmentT (int segment, float t)
 Accepts a t value in the range [0, 1], and assumed to be relative to the indicated segment (as in eval_segment_point()), and returns the corresponding t value in the entire curve (as in eval_point()). More...
 
float getStartT ()
 Returns the first legal value of t on the curve. More...
 
- Public Member Functions inherited from ReferenceCount
int getRefCount ()
 Returns the current reference count. More...
 
 ref ()
 Explicitly increments the reference count. More...
 
bool testRefCountIntegrity ()
 Does some easy checks to make sure that the reference count isn't completely bogus. More...
 
bool testRefCountNonzero ()
 Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More...
 
bool unref ()
 Explicitly decrements the reference count. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from ReferenceCount
static TypeHandle getClassType ()
 
- Public Attributes inherited from ReferenceCount
int ref_count
 The current reference count. More...
 

Detailed Description

The result of a NurbsCurveEvaluator.

This object represents a curve in a particular coordinate space. It can return the point and/or tangent to the curve at any point.

This is not related to NurbsCurve, CubicCurveseg or any of the ParametricCurve-derived objects in this module. It is a completely parallel implementation of NURBS curves, and will probably eventually replace the whole ParametricCurve class hierarchy.

Member Function Documentation

◆ __init__()

__init__ ( const  NurbsCurveResult)

◆ adaptiveSample()

adaptiveSample ( float  tolerance)

Determines the set of subdivisions necessary to approximate the curve with a set of linear segments, no point of which is farther than tolerance units from the actual curve.

After this call, you may walk through the resulting set of samples with get_num_samples(), get_sample_t(), and get_sample_point().

◆ evalExtendedPoint()

float evalExtendedPoint ( float  t,
int  d 
)

Evaluates the curve in n-dimensional space according to the extended vertices associated with the curve in the indicated dimension.

◆ evalExtendedPoints()

bool evalExtendedPoints ( float  t,
int  d,
PNStdfloat []  result,
int  num_values 
)

Simultaneously performs eval_extended_point on a contiguous sequence of dimensions.

The dimensions evaluated are d through (d + num_values - 1); the results are filled into the num_values elements in the indicated result array.

◆ evalPoint()

bool evalPoint ( float  t,
LVecBase3  point 
)

Computes the point on the curve corresponding to the indicated value in parametric time.

Returns true if the t value is valid, false otherwise.

◆ evalSegmentExtendedPoint()

float evalSegmentExtendedPoint ( int  segment,
float  t,
int  d 
)

Evaluates the curve in n-dimensional space according to the extended vertices associated with the curve in the indicated dimension.

◆ evalSegmentExtendedPoints()

evalSegmentExtendedPoints ( int  segment,
float  t,
int  d,
PNStdfloat []  result,
int  num_values 
)

Simultaneously performs eval_extended_point on a contiguous sequence of dimensions.

The dimensions evaluated are d through (d + num_values - 1); the results are filled into the num_values elements in the indicated result array.

◆ evalSegmentPoint()

evalSegmentPoint ( int  segment,
float  t,
LVecBase3  point 
)

Evaluates the point on the curve corresponding to the indicated value in parametric time within the indicated curve segment.

t should be in the range [0, 1].

The curve is internally represented as a number of connected (or possibly unconnected) piecewise continuous segments. The exact number of segments for a particular curve depends on the knot vector, and is returned by get_num_segments(). Normally, eval_point() is used to evaluate a point along the continuous curve, but when you care more about local continuity, you can use eval_segment_point() to evaluate the points along each segment.

◆ evalSegmentTangent()

evalSegmentTangent ( int  segment,
float  t,
LVecBase3  tangent 
)

As eval_segment_point, but computes the tangent to the curve at the indicated point.

The tangent vector will not necessarily be normalized, and could be zero, particularly at the endpoints.

◆ evalTangent()

bool evalTangent ( float  t,
LVecBase3  tangent 
)

Computes the tangent to the curve at the indicated point in parametric time.

This tangent vector will not necessarily be normalized, and could be zero. See also eval_point().

◆ getEndT()

float getEndT ( )

Returns the last legal value of t on the curve.

◆ getNumSamples()

int getNumSamples ( )

Returns the number of sample points generated by the previous call to adaptive_sample().

◆ getNumSegments()

int getNumSegments ( )

Returns the number of piecewise continuous segments within the curve.

This number is usually not important unless you plan to call eval_segment_point().

◆ getSamplePoint()

const LPoint3 getSamplePoint ( int  n)

Returns the point on the curve of the nth sample point generated by the previous call to adaptive_sample().

For tangents, or extended points, you should use get_sample_t() and pass it into eval_tangent() or eval_extended_point().

◆ getSamplePoints()

list getSamplePoints ( )

◆ getSampleT()

float getSampleT ( int  n)

Returns the t value of the nth sample point generated by the previous call to adaptive_sample().

◆ getSampleTs()

list getSampleTs ( )

◆ getSegmentT()

float getSegmentT ( int  segment,
float  t 
)

Accepts a t value in the range [0, 1], and assumed to be relative to the indicated segment (as in eval_segment_point()), and returns the corresponding t value in the entire curve (as in eval_point()).

◆ getStartT()

float getStartT ( )

Returns the first legal value of t on the curve.

Usually this is 0.0.