Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

ParametricCurve Class Reference

#include <parametricCurve.h>

Inheritance diagram for ParametricCurve:

PandaNode TypedWritable Namable BoundedObject ReferenceCount TypedObject CubicCurveseg NurbsPPCurve PiecewiseCurve ClassicNurbsCurve HermiteCurve List of all members.

Public Types

typedef pvector< BezierSegBezierSegs

Public Member Functions

virtual bool safe_to_flatten () const
virtual bool safe_to_transform () const
virtual float get_max_t () const
void set_curve_type (int type)
int get_curve_type () const
void set_num_dimensions (int num)
int get_num_dimensions () const
float calc_length () const
float calc_length (float from, float to) const
float find_length (float start_t, float length_offset) const
virtual bool get_point (float t, LVecBase3f &point) const=0
virtual bool get_tangent (float t, LVecBase3f &tangent) const=0
virtual bool get_pt (float t, LVecBase3f &point, LVecBase3f &tangent) const=0
virtual bool get_2ndtangent (float t, LVecBase3f &tangent2) const=0
virtual bool adjust_point (float t, float px, float py, float pz)
virtual bool adjust_tangent (float t, float tx, float ty, float tz)
virtual bool adjust_pt (float t, float px, float py, float pz, float tx, float ty, float tz)
virtual bool recompute ()
virtual bool stitch (const ParametricCurve *a, const ParametricCurve *b)
bool write_egg (Filename filename, CoordinateSystem cs=CS_default)
bool write_egg (ostream &out, const Filename &filename, CoordinateSystem cs)
virtual bool get_bezier_segs (BezierSegs &) const
virtual bool get_bezier_seg (BezierSeg &) const
virtual NurbsCurveInterfaceget_nurbs_interface ()
virtual bool convert_to_hermite (HermiteCurve *hc) const
virtual bool convert_to_nurbs (ParametricCurve *nc) const
void register_drawer (ParametricCurveDrawer *drawer)
void unregister_drawer (ParametricCurveDrawer *drawer)
virtual TypeHandle get_type () const
virtual TypeHandle force_init_type ()

Static Public Member Functions

TypeHandle get_class_type ()
void init_type ()

Public Attributes

PUBLISHED __pad1__: virtual bool is_valid() const

Protected Member Functions

void invalidate (float t1, float t2)
void invalidate_all ()
virtual bool format_egg (ostream &out, const string &name, const string &curve_type, int indent_level) const
virtual void write_datagram (BamWriter *manager, Datagram &me)
void fillin (DatagramIterator &scan, BamReader *manager)

Protected Attributes

int _curve_type
int _num_dimensions

Private Types

typedef plist< ParametricCurveDrawer * > DrawerList

Private Member Functions

virtual ~ParametricCurve ()
float r_calc_length (float t1, float t2, const LPoint3f &p1, const LPoint3f &p2, float seglength) const
bool r_find_length (float target_length, float &found_t, float t1, float t2, const LPoint3f &p1, const LPoint3f &p2, float &seglength) const
bool r_find_t (float target_length, float &found_t, float t1, float t2, const LPoint3f &p1, const LPoint3f &p2) const
bool find_t_linear (float target_length, float &found_t, float t1, float t2, const LPoint3f &p1, const LPoint3f &p2) const

Private Attributes

PUBLISHED __pad0__: ParametricCurve()
DrawerList _drawers

Static Private Attributes

TypeHandle _type_handle

Member Typedef Documentation

typedef pvector<BezierSeg> ParametricCurve::BezierSegs
 

Definition at line 112 of file parametricCurve.h.

Referenced by convert_to_hermite(), and convert_to_nurbs().

typedef plist<ParametricCurveDrawer *> ParametricCurve::DrawerList [private]
 

Definition at line 151 of file parametricCurve.h.


Constructor & Destructor Documentation

ParametricCurve::~ParametricCurve  )  [private, virtual]
 

Definition at line 54 of file parametricCurve.cxx.

References _drawers.


Member Function Documentation

bool ParametricCurve::adjust_point float  t,
float  px,
float  py,
float  pz
[virtual]
 

Reimplemented in PiecewiseCurve.

Definition at line 305 of file parametricCurve.cxx.

Referenced by ParametricCurveCollection::adjust_hpr(), and ParametricCurveCollection::adjust_xyz().

bool ParametricCurve::adjust_pt float  t,
float  px,
float  py,
float  pz,
float  tx,
float  ty,
float  tz
[virtual]
 

Reimplemented in PiecewiseCurve.

Definition at line 328 of file parametricCurve.cxx.

bool ParametricCurve::adjust_tangent float  t,
float  tx,
float  ty,
float  tz
[virtual]
 

Reimplemented in PiecewiseCurve.

Definition at line 317 of file parametricCurve.cxx.

float ParametricCurve::calc_length float  from,
float  to
const
 

Definition at line 210 of file parametricCurve.cxx.

References get_point(), length(), and r_calc_length().

float ParametricCurve::calc_length  )  const
 

Definition at line 199 of file parametricCurve.cxx.

References get_max_t().

Referenced by ParametricCurveCollection::make_even().

bool ParametricCurve::convert_to_hermite HermiteCurve hc  )  const [virtual]
 

Definition at line 508 of file parametricCurve.cxx.

References _curve_type, HermiteCurve::append_cv(), BezierSegs, get_bezier_segs(), HermiteCurve::get_cv_in(), HermiteCurve::get_cv_out(), HermiteCurve::get_cv_type(), HermiteCurve::get_num_cvs(), HC_CUT, HC_FREE, HC_G1, HC_SMOOTH, n, HermiteCurve::remove_all_cvs(), set_curve_type(), HermiteCurve::set_cv_in(), HermiteCurve::set_cv_out(), HermiteCurve::set_cv_tstart(), and HermiteCurve::set_cv_type().

Referenced by HermiteCurve::HermiteCurve().

bool ParametricCurve::convert_to_nurbs ParametricCurve *  nc  )  const [virtual]
 

Reimplemented in ClassicNurbsCurve, and NurbsPPCurve.

Definition at line 581 of file parametricCurve.cxx.

References _curve_type, NurbsCurveInterface::append_cv(), BezierSegs, get_bezier_segs(), get_nurbs_interface(), NULL, recompute(), NurbsCurveInterface::remove_all_cvs(), set_curve_type(), NurbsCurveInterface::set_knot(), and t.

Referenced by ClassicNurbsCurve::ClassicNurbsCurve(), and NurbsPPCurve::NurbsPPCurve().

void ParametricCurve::fillin DatagramIterator scan,
BamReader manager
[protected]
 

Reimplemented from PandaNode.

Reimplemented in ClassicNurbsCurve, CubicCurveseg, HermiteCurve, and PiecewiseCurve.

Definition at line 1002 of file parametricCurve.cxx.

References _curve_type, _num_dimensions, PandaNode::fillin(), and DatagramIterator::get_int8().

Referenced by PiecewiseCurve::fillin(), and CubicCurveseg::fillin().

float ParametricCurve::find_length float  start_t,
float  length_offset
const
 

Definition at line 258 of file parametricCurve.cxx.

References cfloor(), get_max_t(), get_point(), and r_find_length().

Referenced by ParametricCurveCollection::make_even().

bool ParametricCurve::find_t_linear float  target_length,
float &  found_t,
float  t1,
float  t2,
const LPoint3f &  p1,
const LPoint3f &  p2
const [private]
 

Definition at line 910 of file parametricCurve.cxx.

References get_point(), len, and tolerance_divisor.

Referenced by r_find_length().

virtual TypeHandle ParametricCurve::force_init_type void   )  [inline, virtual]
 

Reimplemented from PandaNode.

Reimplemented in ClassicNurbsCurve, CubicCurveseg, HermiteCurve, NurbsPPCurve, and PiecewiseCurve.

Definition at line 171 of file parametricCurve.h.

References PandaNode::get_class_type(), and PandaNode::init_type().

bool ParametricCurve::format_egg ostream &  out,
const string &  name,
const string &  curve_type,
int  indent_level
const [protected, virtual]
 

Reimplemented in ClassicNurbsCurve, HermiteCurve, and NurbsPPCurve.

Definition at line 701 of file parametricCurve.cxx.

Referenced by write_egg().

virtual bool ParametricCurve::get_2ndtangent float  t,
LVecBase3f &  tangent2
const [pure virtual]
 

Implemented in CubicCurveseg, NurbsPPCurve, and PiecewiseCurve.

Referenced by PiecewiseCurve::get_2ndtangent().

bool ParametricCurve::get_bezier_seg BezierSeg  )  const [virtual]
 

Definition at line 484 of file parametricCurve.cxx.

bool ParametricCurve::get_bezier_segs BezierSegs  )  const [virtual]
 

Definition at line 471 of file parametricCurve.cxx.

Referenced by convert_to_hermite(), and convert_to_nurbs().

TypeHandle ParametricCurve::get_class_type void   )  [inline, static]
 

Reimplemented from PandaNode.

Reimplemented in ClassicNurbsCurve, CubicCurveseg, HermiteCurve, NurbsPPCurve, and PiecewiseCurve.

Definition at line 160 of file parametricCurve.h.

Referenced by PiecewiseCurve::force_init_type(), CubicCurveseg::force_init_type(), PiecewiseCurve::get_type(), CubicCurveseg::get_type(), PiecewiseCurve::init_type(), NurbsPPCurve::init_type(), CubicCurveseg::init_type(), and ParametricCurveCollection::r_add_curves().

int ParametricCurve::get_curve_type  )  const
 

Definition at line 158 of file parametricCurve.cxx.

References _curve_type.

Referenced by ParametricCurveCollection::clear_timewarps(), ParametricCurveCollection::evaluate(), ParametricCurveCollection::evaluate_t(), ParametricCurveCollection::face_forward(), ParametricCurveCollection::get_default_curve(), ParametricCurveCollection::get_hpr_curve(), ParametricCurveCollection::get_num_timewarps(), ParametricCurveCollection::get_timewarp_curve(), ParametricCurveCollection::get_xyz_curve(), HermiteCurve::output(), ParametricCurveCollection::write_egg(), and write_egg().

float ParametricCurve::get_max_t  )  const [virtual]
 

Reimplemented in NurbsPPCurve, and PiecewiseCurve.

Definition at line 112 of file parametricCurve.cxx.

Referenced by ParametricCurveCollection::adjust_hpr(), ParametricCurveCollection::adjust_xyz(), calc_length(), ParametricCurveDrawer::draw(), find_length(), and ParametricCurveCollection::make_even().

int ParametricCurve::get_num_dimensions  )  const
 

Definition at line 187 of file parametricCurve.cxx.

References _num_dimensions.

NurbsCurveInterface * ParametricCurve::get_nurbs_interface  )  [virtual]
 

Reimplemented in ClassicNurbsCurve, and NurbsPPCurve.

Definition at line 496 of file parametricCurve.cxx.

References NULL.

Referenced by convert_to_nurbs(), NurbsCurveInterface::convert_to_nurbs(), and NurbsCurveDrawer::draw().

virtual bool ParametricCurve::get_point float  t,
LVecBase3f &  point
const [pure virtual]
 

Implemented in NurbsPPCurve, and PiecewiseCurve.

Referenced by calc_length(), ParametricCurveDrawer::draw(), NurbsCurveDrawer::draw(), ParametricCurveCollection::evaluate(), ParametricCurveCollection::evaluate_t(), find_length(), find_t_linear(), PiecewiseCurve::get_point(), r_calc_length(), r_find_length(), and r_find_t().

virtual bool ParametricCurve::get_pt float  t,
LVecBase3f &  point,
LVecBase3f &  tangent
const [pure virtual]
 

Implemented in CubicCurveseg, NurbsPPCurve, and PiecewiseCurve.

Referenced by ParametricCurveDrawer::draw(), and PiecewiseCurve::get_pt().

virtual bool ParametricCurve::get_tangent float  t,
LVecBase3f &  tangent
const [pure virtual]
 

Implemented in CubicCurveseg, NurbsPPCurve, and PiecewiseCurve.

Referenced by ParametricCurveCollection::determine_hpr(), and PiecewiseCurve::get_tangent().

virtual TypeHandle ParametricCurve::get_type void   )  const [inline, virtual]
 

Reimplemented from PandaNode.

Reimplemented in ClassicNurbsCurve, CubicCurveseg, HermiteCurve, NurbsPPCurve, and PiecewiseCurve.

Definition at line 168 of file parametricCurve.h.

References PandaNode::get_class_type().

Referenced by stitch().

void ParametricCurve::init_type void   )  [inline, static]
 

Reimplemented from PandaNode.

Reimplemented in ClassicNurbsCurve, CubicCurveseg, HermiteCurve, NurbsPPCurve, and PiecewiseCurve.

Definition at line 163 of file parametricCurve.h.

References PandaNode::get_class_type(), PandaNode::init_type(), and register_type().

Referenced by ConfigureFn(), PiecewiseCurve::force_init_type(), CubicCurveseg::force_init_type(), PiecewiseCurve::init_type(), NurbsPPCurve::init_type(), and CubicCurveseg::init_type().

void ParametricCurve::invalidate float  t1,
float  t2
[protected]
 

Definition at line 672 of file parametricCurve.cxx.

References invalidate_all().

Referenced by HermiteCurve::invalidate_cv().

void ParametricCurve::invalidate_all  )  [protected]
 

Definition at line 684 of file parametricCurve.cxx.

References _drawers, and n.

Referenced by HermiteCurve::append_cv(), HermiteCurve::insert_cv(), invalidate(), HermiteCurve::invalidate_cv(), HermiteCurve::remove_all_cvs(), HermiteCurve::remove_cv(), and HermiteCurve::set_cv_tstart().

float ParametricCurve::r_calc_length float  t1,
float  t2,
const LPoint3f &  p1,
const LPoint3f &  p2,
float  seglength
const [private]
 

Definition at line 716 of file parametricCurve.cxx.

References get_point().

Referenced by calc_length().

bool ParametricCurve::r_find_length float  target_length,
float &  found_t,
float  t1,
float  t2,
const LPoint3f &  p1,
const LPoint3f &  p2,
float &  seglength
const [private]
 

Definition at line 763 of file parametricCurve.cxx.

References find_t_linear(), and get_point().

Referenced by find_length().

bool ParametricCurve::r_find_t float  target_length,
float &  found_t,
float  t1,
float  t2,
const LPoint3f &  p1,
const LPoint3f &  p2
const [private]
 

Definition at line 841 of file parametricCurve.cxx.

References get_point().

bool ParametricCurve::recompute  )  [virtual]
 

Reimplemented in ClassicNurbsCurve, and NurbsPPCurve.

Definition at line 340 of file parametricCurve.cxx.

Referenced by convert_to_nurbs(), NurbsCurveInterface::convert_to_nurbs(), and ParametricCurveCollection::recompute().

void ParametricCurve::register_drawer ParametricCurveDrawer drawer  ) 
 

Definition at line 645 of file parametricCurve.cxx.

References _drawers.

Referenced by ParametricCurveCollection::prepare_add_curve(), and ParametricCurveCollection::register_drawer().

bool ParametricCurve::safe_to_flatten  )  const [virtual]
 

Reimplemented from PandaNode.

Definition at line 72 of file parametricCurve.cxx.

bool ParametricCurve::safe_to_transform  )  const [virtual]
 

Reimplemented from PandaNode.

Definition at line 85 of file parametricCurve.cxx.

void ParametricCurve::set_curve_type int  type  ) 
 

Definition at line 133 of file parametricCurve.cxx.

References _curve_type, _num_dimensions, PCT_HPR, PCT_NONE, PCT_T, PCT_XYZ, and type.

Referenced by convert_to_hermite(), convert_to_nurbs(), NurbsPPCurve::convert_to_nurbs(), ClassicNurbsCurve::convert_to_nurbs(), ParametricCurveCollection::make_even(), and PT().

void ParametricCurve::set_num_dimensions int  num  ) 
 

Definition at line 173 of file parametricCurve.cxx.

References _num_dimensions.

bool ParametricCurve::stitch const ParametricCurve *  a,
const ParametricCurve *  b
[virtual]
 

Reimplemented in ClassicNurbsCurve, and NurbsPPCurve.

Definition at line 355 of file parametricCurve.cxx.

References get_type().

void ParametricCurve::unregister_drawer ParametricCurveDrawer drawer  ) 
 

Definition at line 657 of file parametricCurve.cxx.

References _drawers.

Referenced by ParametricCurveCollection::prepare_remove_curve(), and ParametricCurveCollection::unregister_drawer().

void ParametricCurve::write_datagram BamWriter manager,
Datagram me
[protected, virtual]
 

Reimplemented from PandaNode.

Reimplemented in ClassicNurbsCurve, CubicCurveseg, HermiteCurve, and PiecewiseCurve.

Definition at line 986 of file parametricCurve.cxx.

References _curve_type, _num_dimensions, Datagram::add_int8(), and PandaNode::write_datagram().

Referenced by PiecewiseCurve::write_datagram(), and CubicCurveseg::write_datagram().

bool ParametricCurve::write_egg ostream &  out,
const Filename &  filename,
CoordinateSystem  cs
 

Definition at line 390 of file parametricCurve.cxx.

References cs, CS_default, CS_invalid, CS_yup_left, CS_yup_right, CS_zup_left, CS_zup_right, default_coordinate_system, format_egg(), get_curve_type(), Namable::get_name(), Namable::has_name(), PCT_HPR, PCT_T, PCT_XYZ, and Namable::set_name().

bool ParametricCurve::write_egg Filename  filename,
CoordinateSystem  cs = CS_default
 

Definition at line 370 of file parametricCurve.cxx.

References cs.

Referenced by ParametricCurveCollection::write_egg().


Member Data Documentation

PUBLISHED ParametricCurve::__pad0__ [private]
 

Reimplemented from PandaNode.

Reimplemented in ClassicNurbsCurve, CubicCurveseg, HermiteCurve, NurbsPPCurve, and PiecewiseCurve.

Definition at line 66 of file parametricCurve.h.

PUBLISHED ParametricCurve::__pad1__
 

Reimplemented from PandaNode.

Reimplemented in ClassicNurbsCurve, and NurbsPPCurve.

Definition at line 74 of file parametricCurve.h.

int ParametricCurve::_curve_type [protected]
 

Definition at line 147 of file parametricCurve.h.

Referenced by convert_to_hermite(), convert_to_nurbs(), NurbsPPCurve::convert_to_nurbs(), ClassicNurbsCurve::convert_to_nurbs(), fillin(), get_curve_type(), HermiteCurve::invalidate_cv(), HermiteCurve::recompute_basis(), set_curve_type(), and write_datagram().

DrawerList ParametricCurve::_drawers [private]
 

Definition at line 152 of file parametricCurve.h.

Referenced by invalidate_all(), register_drawer(), unregister_drawer(), and ~ParametricCurve().

int ParametricCurve::_num_dimensions [protected]
 

Definition at line 148 of file parametricCurve.h.

Referenced by fillin(), HermiteCurve::format_egg(), get_num_dimensions(), set_curve_type(), set_num_dimensions(), and write_datagram().

TypeHandle ParametricCurve::_type_handle [static, private]
 

Reimplemented from PandaNode.

Reimplemented in ClassicNurbsCurve, CubicCurveseg, HermiteCurve, NurbsPPCurve, and PiecewiseCurve.

Definition at line 33 of file parametricCurve.cxx.


The documentation for this class was generated from the following files:
Generated on Fri Apr 18 00:13:01 2003 for Panda by doxygen1.3