Panda3D
Classes | Public Member Functions
NurbsBasisVector Class Reference

This encapsulates a series of matrices that are used to represent the sequential segments of a NurbsCurveEvaluator. More...

#include "nurbsBasisVector.h"

List of all members.

Classes

class  Segment

Public Member Functions

void append_segment (int vertex_index, const PN_stdfloat knots[])
 Computes a NURBS basis for one segment of the curve and appends it to the set of basis matrices.
void clear (int order)
 Removes all the segments from the curve.
const LMatrix4get_basis (int segment) const
 Returns the basis matrix associated with the nth segment.
PN_stdfloat get_end_t () const
 Returns the last legal value of t on the curve.
PN_stdfloat get_from (int segment) const
 Returns the t value of the beginning of this segment.
int get_num_segments () const
 Returns the number of piecewise continuous segments in the curve.
int get_order () const
 Returns the order of the segments in the curve.
PN_stdfloat get_start_t () const
 Returns the first legal value of t on the curve.
PN_stdfloat get_to (int segment) const
 Returns the t value of the end of this segment.
int get_vertex_index (int segment) const
 Returns the vertex index of the nth segment.
PN_stdfloat scale_t (int segment, PN_stdfloat t) const
 Scales the value of t into the range [0, 1] corresponding to [from, to].
void transpose ()
 Transposes the basis matrices stored in the vector.

Detailed Description

This encapsulates a series of matrices that are used to represent the sequential segments of a NurbsCurveEvaluator.

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.

Definition at line 37 of file nurbsBasisVector.h.


Member Function Documentation

void NurbsBasisVector::append_segment ( int  vertex_index,
const PN_stdfloat  knots[] 
)

Computes a NURBS basis for one segment of the curve and appends it to the set of basis matrices.

Definition at line 35 of file nurbsBasisVector.cxx.

References LVecBase4f::zero().

void NurbsBasisVector::clear ( int  order)

Removes all the segments from the curve.

Definition at line 23 of file nurbsBasisVector.cxx.

const LMatrix4 & NurbsBasisVector::get_basis ( int  segment) const [inline]

Returns the basis matrix associated with the nth segment.

This is the pure matrix based on the knot vector over the segment; it does not depend on the control vertices.

Definition at line 123 of file nurbsBasisVector.I.

References LMatrix4f::ident_mat().

Referenced by NurbsSurfaceResult::eval_segment_extended_point(), NurbsCurveResult::eval_segment_extended_point(), NurbsSurfaceResult::eval_segment_extended_points(), NurbsCurveResult::eval_segment_extended_points(), NurbsCurveResult::NurbsCurveResult(), and NurbsSurfaceResult::NurbsSurfaceResult().

PN_stdfloat NurbsBasisVector::get_end_t ( ) const [inline]

Returns the last legal value of t on the curve.

Definition at line 74 of file nurbsBasisVector.I.

Referenced by NurbsCurveResult::get_end_t(), NurbsSurfaceResult::get_end_u(), and NurbsSurfaceResult::get_end_v().

PN_stdfloat NurbsBasisVector::get_from ( int  segment) const [inline]

Returns the t value of the beginning of this segment.

Definition at line 98 of file nurbsBasisVector.I.

Referenced by NurbsCurveResult::adaptive_sample(), NurbsCurveResult::get_segment_t(), NurbsSurfaceResult::get_segment_u(), and NurbsSurfaceResult::get_segment_v().

int NurbsBasisVector::get_num_segments ( ) const [inline]
int NurbsBasisVector::get_order ( ) const [inline]
PN_stdfloat NurbsBasisVector::get_start_t ( ) const [inline]

Returns the first legal value of t on the curve.

Usually this is 0.0.

Definition at line 63 of file nurbsBasisVector.I.

Referenced by NurbsCurveResult::get_start_t(), NurbsSurfaceResult::get_start_u(), and NurbsSurfaceResult::get_start_v().

PN_stdfloat NurbsBasisVector::get_to ( int  segment) const [inline]

Returns the t value of the end of this segment.

Definition at line 109 of file nurbsBasisVector.I.

Referenced by NurbsCurveResult::get_segment_t(), NurbsSurfaceResult::get_segment_u(), and NurbsSurfaceResult::get_segment_v().

int NurbsBasisVector::get_vertex_index ( int  segment) const [inline]
PN_stdfloat NurbsBasisVector::scale_t ( int  segment,
PN_stdfloat  t 
) const [inline]

Transposes the basis matrices stored in the vector.

Definition at line 71 of file nurbsBasisVector.cxx.

Referenced by NurbsSurfaceResult::NurbsSurfaceResult().


The documentation for this class was generated from the following files:
 All Classes Functions Variables Enumerations