historical/toontown-classic.git/panda/pandac/input/libp3parametrics.in
2024-01-16 11:20:27 -06:00

3796 lines
150 KiB
Text

1565844244
3 3
16 libp3parametrics 4 UKlv 12 panda3d.core
251
272 8 is_valid 0 6 523 25 ParametricCurve::is_valid 0 1 1 164
/**
* Returns true if the curve is defined. This base class function always
* returns true; derived classes might override this to sometimes return
* false.
*/
51
virtual bool ParametricCurve::is_valid(void) const;
273 9 get_max_t 0 6 523 26 ParametricCurve::get_max_t 0 1 2 237
/**
* 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.
*/
59
virtual PN_stdfloat ParametricCurve::get_max_t(void) const;
274 14 set_curve_type 0 4 523 31 ParametricCurve::set_curve_type 0 1 3 389
/**
* 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.
*/
47
void ParametricCurve::set_curve_type(int type);
275 14 get_curve_type 0 4 523 31 ParametricCurve::get_curve_type 0 1 4 91
/**
* Returns the flag indicating the use to which the curve is intended to be
* put.
*/
48
int ParametricCurve::get_curve_type(void) const;
276 18 set_num_dimensions 0 4 523 35 ParametricCurve::set_num_dimensions 0 1 5 324
/**
* 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.
*/
50
void ParametricCurve::set_num_dimensions(int num);
277 18 get_num_dimensions 0 4 523 35 ParametricCurve::get_num_dimensions 0 1 6 267
/**
* 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.
*/
52
int ParametricCurve::get_num_dimensions(void) const;
278 11 calc_length 0 4 523 28 ParametricCurve::calc_length 0 2 7 8 188
/**
* Approximates the length of the entire curve to within a few decimal places.
*/
/**
* Approximates the length of the curve segment from parametric time 'from' to
* time 'to'.
*/
135
PN_stdfloat ParametricCurve::calc_length(void) const;
PN_stdfloat ParametricCurve::calc_length(PN_stdfloat from, PN_stdfloat to) const;
279 11 find_length 0 4 523 28 ParametricCurve::find_length 0 1 9 396
/**
* 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.
*/
95
PN_stdfloat ParametricCurve::find_length(PN_stdfloat start_t, PN_stdfloat length_offset) const;
280 9 get_point 0 6 523 26 ParametricCurve::get_point 0 1 10 0
83
virtual bool ParametricCurve::get_point(PN_stdfloat t, LVecBase3 &point) const = 0;
281 11 get_tangent 0 6 523 28 ParametricCurve::get_tangent 0 1 11 0
87
virtual bool ParametricCurve::get_tangent(PN_stdfloat t, LVecBase3 &tangent) const = 0;
282 6 get_pt 0 6 523 23 ParametricCurve::get_pt 0 1 12 0
100
virtual bool ParametricCurve::get_pt(PN_stdfloat t, LVecBase3 &point, LVecBase3 &tangent) const = 0;
283 14 get_2ndtangent 0 6 523 31 ParametricCurve::get_2ndtangent 0 1 13 0
91
virtual bool ParametricCurve::get_2ndtangent(PN_stdfloat t, LVecBase3 &tangent2) const = 0;
284 12 adjust_point 0 6 523 29 ParametricCurve::adjust_point 0 1 14 144
/**
* 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.
*/
106
virtual bool ParametricCurve::adjust_point(PN_stdfloat t, PN_stdfloat px, PN_stdfloat py, PN_stdfloat pz);
285 14 adjust_tangent 0 6 523 31 ParametricCurve::adjust_tangent 0 1 15 129
/**
* Recomputes the curve such that it has the tangent (tx, ty, tz) at time t,
* but keeps the same position at the point.
*/
108
virtual bool ParametricCurve::adjust_tangent(PN_stdfloat t, PN_stdfloat tx, PN_stdfloat ty, PN_stdfloat tz);
286 9 adjust_pt 0 6 523 26 ParametricCurve::adjust_pt 0 1 16 116
/**
* Recomputes the curve such that it passes through the point (px, py, pz)
* with the tangent (tx, ty, tz).
*/
151
virtual bool ParametricCurve::adjust_pt(PN_stdfloat t, PN_stdfloat px, PN_stdfloat py, PN_stdfloat pz, PN_stdfloat tx, PN_stdfloat ty, PN_stdfloat tz);
287 9 recompute 0 6 523 26 ParametricCurve::recompute 0 1 17 115
/**
* Recalculates the curve, if necessary. Returns true if the resulting curve
* is valid, false otherwise.
*/
46
virtual bool ParametricCurve::recompute(void);
288 6 stitch 0 6 523 23 ParametricCurve::stitch 0 1 18 259
/**
* 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.
*/
89
virtual bool ParametricCurve::stitch(ParametricCurve const *a, ParametricCurve const *b);
289 9 write_egg 0 4 523 26 ParametricCurve::write_egg 0 2 19 20 281
/**
* 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
* stream. Returns true if the file is successfully written.
*/
186
bool ParametricCurve::write_egg(Filename filename, CoordinateSystem cs = ::CS_default);
bool ParametricCurve::write_egg(std::ostream &out, Filename const &filename, CoordinateSystem cs);
290 14 get_class_type 0 4 523 31 ParametricCurve::get_class_type 0 1 21 0
56
static TypeHandle ParametricCurve::get_class_type(void);
291 14 get_class_type 0 4 525 29 CubicCurveseg::get_class_type 0 1 22 0
54
static TypeHandle CubicCurveseg::get_class_type(void);
292 25 ParametricCurveCollection 0 4 526 52 ParametricCurveCollection::ParametricCurveCollection 0 2 23 24 10
/**
*
*/
165
ParametricCurveCollection::ParametricCurveCollection(void);
inline ParametricCurveCollection::ParametricCurveCollection(ParametricCurveCollection const &) = default;
293 9 add_curve 0 4 526 36 ParametricCurveCollection::add_curve 0 2 25 26 192
/**
* Adds a new ParametricCurve to the collection at the indicated index.
* @deprecated Use insert_curve(index, curve) instead.
*/
/**
* Adds a new ParametricCurve to the collection.
*/
144
void ParametricCurveCollection::add_curve(ParametricCurve *curve);
void ParametricCurveCollection::add_curve(ParametricCurve *curve, int index);
294 12 insert_curve 0 4 526 39 ParametricCurveCollection::insert_curve 0 1 27 79
/**
* Adds a new ParametricCurve to the collection at the indicated index.
*/
88
void ParametricCurveCollection::insert_curve(std::size_t index, ParametricCurve *curve);
295 10 add_curves 0 4 526 37 ParametricCurveCollection::add_curves 0 1 28 120
/**
* Adds all the curves found in the scene graph rooted at the given node.
* Returns the number of curves found.
*/
59
int ParametricCurveCollection::add_curves(PandaNode *node);
296 12 remove_curve 0 4 526 39 ParametricCurveCollection::remove_curve 0 2 29 30 255
/**
* Removes the indicated ParametricCurve from the collection. Returns true if
* the curve was removed, false if it was not a member of the collection.
*/
/**
* Removes the indicated ParametricCurve from the collection, by its index
* number.
*/
134
bool ParametricCurveCollection::remove_curve(ParametricCurve *curve);
void ParametricCurveCollection::remove_curve(std::size_t index);
297 9 set_curve 0 4 526 36 ParametricCurveCollection::set_curve 0 1 31 94
/**
* Replaces the indicated ParametricCurve from the collection, by its index
* number.
*/
85
void ParametricCurveCollection::set_curve(std::size_t index, ParametricCurve *curve);
298 9 has_curve 0 4 526 36 ParametricCurveCollection::has_curve 0 1 32 104
/**
* Returns true if the indicated ParametricCurve appears in this collection,
* false otherwise.
*/
72
bool ParametricCurveCollection::has_curve(ParametricCurve *curve) const;
299 5 clear 0 4 526 32 ParametricCurveCollection::clear 0 1 33 60
/**
* Removes all ParametricCurves from the collection.
*/
44
void ParametricCurveCollection::clear(void);
300 15 clear_timewarps 0 4 526 42 ParametricCurveCollection::clear_timewarps 0 1 34 63
/**
* Removes all the timewarp curves from the collection.
*/
54
void ParametricCurveCollection::clear_timewarps(void);
301 14 get_num_curves 0 4 526 41 ParametricCurveCollection::get_num_curves 0 1 35 68
/**
* Returns the number of ParametricCurves in the collection.
*/
65
inline int ParametricCurveCollection::get_num_curves(void) const;
302 9 get_curve 0 4 526 36 ParametricCurveCollection::get_curve 0 1 36 61
/**
* Returns the nth ParametricCurve in the collection.
*/
78
inline ParametricCurve *ParametricCurveCollection::get_curve(int index) const;
303 13 get_xyz_curve 0 4 526 40 ParametricCurveCollection::get_xyz_curve 0 1 37 95
/**
* Returns the first XYZ curve in the collection, if any, or NULL if there are
* none.
*/
70
ParametricCurve *ParametricCurveCollection::get_xyz_curve(void) const;
304 13 get_hpr_curve 0 4 526 40 ParametricCurveCollection::get_hpr_curve 0 1 38 95
/**
* Returns the first HPR curve in the collection, if any, or NULL if there are
* none.
*/
70
ParametricCurve *ParametricCurveCollection::get_hpr_curve(void) const;
305 17 get_default_curve 0 4 526 44 ParametricCurveCollection::get_default_curve 0 1 39 180
/**
* If there is an XYZ curve in the collection, returns it; otherwise, returns
* the first curve whose type is unspecified. Returns NULL if no curve meets
* the criteria.
*/
74
ParametricCurve *ParametricCurveCollection::get_default_curve(void) const;
306 17 get_num_timewarps 0 4 526 44 ParametricCurveCollection::get_num_timewarps 0 1 40 67
/**
* Returns the number of timewarp curves in the collection.
*/
61
int ParametricCurveCollection::get_num_timewarps(void) const;
307 18 get_timewarp_curve 0 4 526 45 ParametricCurveCollection::get_timewarp_curve 0 1 41 60
/**
* Returns the nth timewarp curve in the collection.
*/
76
ParametricCurve *ParametricCurveCollection::get_timewarp_curve(int n) const;
308 9 get_max_t 0 4 526 36 ParametricCurveCollection::get_max_t 0 1 42 170
/**
* Returns the maximum T value associated with the *last* curve in the
* collection. Normally, this will be either the XYZ or HPR curve, or a
* timewarp curve.
*/
68
inline PN_stdfloat ParametricCurveCollection::get_max_t(void) const;
309 0 0 0 0 0 0 0 0
0
310 0 0 0 0 0 0 0 0
0
311 9 make_even 0 4 526 36 ParametricCurveCollection::make_even 0 1 43 539
/**
* Discards all existing timewarp curves and recomputes a new timewarp curve
* that maps distance along the curve to parametric time, so that the distance
* between any two points in parametric time is proportional to the
* approximate distance of those same two points along the XYZ curve.
*
* segments_per_unit represents the number of segments to take per each unit
* of parametric time of the original XYZ curve.
*
* The new timewarp curve (and thus, the apparent range of the collection)
* will range from 0 to max_t.
*/
92
void ParametricCurveCollection::make_even(PN_stdfloat max_t, PN_stdfloat segments_per_unit);
312 12 face_forward 0 4 526 39 ParametricCurveCollection::face_forward 0 1 44 179
/**
* Discards the existing HPR curve and generates a new one that looks in the
* direction of travel along the XYZ curve, based on the XYZ curve's tangent
* at each point.
*/
76
void ParametricCurveCollection::face_forward(PN_stdfloat segments_per_unit);
313 11 reset_max_t 0 4 526 38 ParametricCurveCollection::reset_max_t 0 1 45 277
/**
* Adjusts the apparent length of the curve by applying a new timewarp that
* maps the range [0..max_t] to the range [0..get_max_t()]. After this call,
* the curve collection will contain one more timewarp curve, and get_max_t()
* will return the given max_t value.
*/
63
void ParametricCurveCollection::reset_max_t(PN_stdfloat max_t);
314 8 evaluate 0 4 526 35 ParametricCurveCollection::evaluate 0 2 46 47 943
/**
* Computes the position and rotation represented by the first XYZ and HPR
* curves in the collection at the given point t, after t has been modified by
* all the timewarp curves in the collection applied in sequence, from back to
* front.
*
* Returns true if the point is valid (i.e. t is within the bounds indicated
* by all the timewarp curves and within the bounds of the curves themselves),
* or false otherwise.
*/
/**
* Computes the transform matrix representing translation to the position
* indicated by the first XYZ curve in the collection and the rotation
* indicated by the first HPR curve in the collection, after t has been
* modified by all the timewarp curves in the collection applied in sequence,
* from back to front.
*
* Returns true if the point is valid (i.e. t is within the bounds indicated
* by all the timewarp curves and within the bounds of the curves themselves),
* or false otherwise.
*/
211
bool ParametricCurveCollection::evaluate(PN_stdfloat t, LVecBase3 &xyz, LVecBase3 &hpr) const;
bool ParametricCurveCollection::evaluate(PN_stdfloat t, LMatrix4 &result, CoordinateSystem cs = ::CS_default) const;
315 10 evaluate_t 0 4 526 37 ParametricCurveCollection::evaluate_t 0 1 48 219
/**
* Determines the value of t that should be passed to the XYZ and HPR curves,
* after applying the given value of t to all the timewarps. Return -1.0f if
* the value of t exceeds one of the timewarps' ranges.
*/
71
PN_stdfloat ParametricCurveCollection::evaluate_t(PN_stdfloat t) const;
316 12 evaluate_xyz 0 4 526 39 ParametricCurveCollection::evaluate_xyz 0 1 49 69
/**
* Computes only the XYZ part of the curves. See evaluate().
*/
89
inline bool ParametricCurveCollection::evaluate_xyz(PN_stdfloat t, LVecBase3 &xyz) const;
317 12 evaluate_hpr 0 4 526 39 ParametricCurveCollection::evaluate_hpr 0 1 50 69
/**
* Computes only the HPR part of the curves. See evaluate().
*/
89
inline bool ParametricCurveCollection::evaluate_hpr(PN_stdfloat t, LVecBase3 &hpr) const;
318 10 adjust_xyz 0 4 526 37 ParametricCurveCollection::adjust_xyz 0 2 51 52 418
/**
* Adjust the XYZ curve at the indicated time to the new value. The curve
* shape will change correspondingly. Returns true if successful, false if
* unable to make the adjustment for some reason.
*/
/**
* Adjust the XYZ curve at the indicated time to the new value. The curve
* shape will change correspondingly. Returns true if successful, false if
* unable to make the adjustment for some reason.
*/
191
inline bool ParametricCurveCollection::adjust_xyz(PN_stdfloat t, PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
bool ParametricCurveCollection::adjust_xyz(PN_stdfloat t, LVecBase3 const &xyz);
319 10 adjust_hpr 0 4 526 37 ParametricCurveCollection::adjust_hpr 0 2 53 54 418
/**
* Adjust the HPR curve at the indicated time to the new value. The curve
* shape will change correspondingly. Returns true if successful, false if
* unable to make the adjustment for some reason.
*/
/**
* Adjust the HPR curve at the indicated time to the new value. The curve
* shape will change correspondingly. Returns true if successful, false if
* unable to make the adjustment for some reason.
*/
191
inline bool ParametricCurveCollection::adjust_hpr(PN_stdfloat t, PN_stdfloat h, PN_stdfloat p, PN_stdfloat r);
bool ParametricCurveCollection::adjust_hpr(PN_stdfloat t, LVecBase3 const &xyz);
320 9 recompute 0 4 526 36 ParametricCurveCollection::recompute 0 1 55 153
/**
* Ensures all the curves are freshly computed and up-to-date. Returns true
* if everything is valid, false if at least one curve is incorrect.
*/
48
bool ParametricCurveCollection::recompute(void);
321 6 stitch 0 4 526 33 ParametricCurveCollection::stitch 0 1 56 262
/**
* 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'. This
* will lose any timewarps on the input curves.
*
* Returns true if successful, false on failure.
*/
111
bool ParametricCurveCollection::stitch(ParametricCurveCollection const *a, ParametricCurveCollection const *b);
322 6 output 0 4 526 33 ParametricCurveCollection::output 0 1 57 114
/**
* Writes a brief one-line description of the ParametricCurveCollection to the
* indicated output stream.
*/
64
void ParametricCurveCollection::output(std::ostream &out) const;
323 5 write 0 4 526 32 ParametricCurveCollection::write 0 1 58 119
/**
* Writes a complete multi-line description of the ParametricCurveCollection
* to the indicated output stream.
*/
85
void ParametricCurveCollection::write(std::ostream &out, int indent_level = 0) const;
324 9 write_egg 0 4 526 36 ParametricCurveCollection::write_egg 0 2 59 60 328
/**
* Writes an egg description of all the nurbs curves in the collection to the
* specified output file. Returns true if the file is successfully written.
*/
/**
* Writes an egg description of all the nurbs curves in the collection to the
* specified output stream. Returns true if the file is successfully written.
*/
206
bool ParametricCurveCollection::write_egg(Filename filename, CoordinateSystem cs = ::CS_default);
bool ParametricCurveCollection::write_egg(std::ostream &out, Filename const &filename, CoordinateSystem cs);
325 11 CurveFitter 0 4 531 24 CurveFitter::CurveFitter 0 2 61 62 10
/**
*
*/
95
CurveFitter::CurveFitter(void);
inline CurveFitter::CurveFitter(CurveFitter const &) = default;
326 12 ~CurveFitter 0 4 531 25 CurveFitter::~CurveFitter 0 0 10
/**
*
*/
32
CurveFitter::~CurveFitter(void);
327 5 reset 0 4 531 18 CurveFitter::reset 0 1 63 114
/**
* Removes all the data points previously added to the CurveFitter, and
* initializes it for a new curve.
*/
30
void CurveFitter::reset(void);
328 7 add_xyz 0 4 531 20 CurveFitter::add_xyz 0 1 64 36
/**
* Adds a single sample xyz.
*/
63
void CurveFitter::add_xyz(PN_stdfloat t, LVecBase3 const &xyz);
329 7 add_hpr 0 4 531 20 CurveFitter::add_hpr 0 1 65 36
/**
* Adds a single sample hpr.
*/
63
void CurveFitter::add_hpr(PN_stdfloat t, LVecBase3 const &hpr);
330 11 add_xyz_hpr 0 4 531 24 CurveFitter::add_xyz_hpr 0 1 66 57
/**
* Adds a single sample xyz & hpr simultaneously.
*/
89
void CurveFitter::add_xyz_hpr(PN_stdfloat t, LVecBase3 const &xyz, LVecBase3 const &hpr);
331 15 get_num_samples 0 4 531 28 CurveFitter::get_num_samples 0 1 67 68
/**
* Returns the number of sample points that have been added.
*/
45
int CurveFitter::get_num_samples(void) const;
332 12 get_sample_t 0 4 531 25 CurveFitter::get_sample_t 0 1 68 64
/**
* Returns the parametric value of the nth sample added.
*/
51
PN_stdfloat CurveFitter::get_sample_t(int n) const;
333 14 get_sample_xyz 0 4 531 27 CurveFitter::get_sample_xyz 0 1 69 62
/**
* Returns the point in space of the nth sample added.
*/
51
LVecBase3 CurveFitter::get_sample_xyz(int n) const;
334 14 get_sample_hpr 0 4 531 27 CurveFitter::get_sample_hpr 0 1 70 59
/**
* Returns the orientation of the nth sample added.
*/
51
LVecBase3 CurveFitter::get_sample_hpr(int n) const;
335 18 get_sample_tangent 0 4 531 31 CurveFitter::get_sample_tangent 0 1 71 143
/**
* Returns the tangent associated with the nth sample added. This is only
* meaningful if compute_tangents() has already been called.
*/
55
LVecBase3 CurveFitter::get_sample_tangent(int n) const;
336 14 remove_samples 0 4 531 27 CurveFitter::remove_samples 0 1 72 108
/**
* Eliminates all samples from index begin, up to but not including index end,
* from the database.
*/
53
void CurveFitter::remove_samples(int begin, int end);
337 6 sample 0 4 531 19 CurveFitter::sample 0 1 73 223
/**
* Generates a series of data points by sampling the given curve (or xyz/hpr
* curves) the indicated number of times. The sampling is made evenly in
* parametric time, and then the timewarps, if any, are applied.
*/
71
void CurveFitter::sample(ParametricCurveCollection *curves, int count);
338 8 wrap_hpr 0 4 531 21 CurveFitter::wrap_hpr 0 1 74 165
/**
* Resets each HPR data point so that the maximum delta between any two
* consecutive points is 180 degrees, which should prevent incorrect HPR
* wrapping.
*/
33
void CurveFitter::wrap_hpr(void);
339 11 sort_points 0 4 531 24 CurveFitter::sort_points 0 1 75 115
/**
* Sorts all the data points in order by parametric time, in case they were
* added in an incorrect order.
*/
36
void CurveFitter::sort_points(void);
340 8 desample 0 4 531 21 CurveFitter::desample 0 1 76 175
/**
* Removes sample points in order to reduce the complexity of a sampled curve.
* Keeps one out of every factor samples. Also keeps the first and the last
* samples.
*/
47
void CurveFitter::desample(PN_stdfloat factor);
341 16 compute_tangents 0 4 531 29 CurveFitter::compute_tangents 0 1 77 231
/**
* Once a set of points has been built, and prior to calling MakeHermite() or
* MakeNurbs(), ComputeTangents() must be called to set up the tangents
* correctly (unless the tangents were defined as the points were added).
*/
54
void CurveFitter::compute_tangents(PN_stdfloat scale);
342 12 make_hermite 0 4 531 25 CurveFitter::make_hermite 0 1 78 72
/**
* Converts the current set of data points into a Hermite curve.
*/
77
PointerTo< ParametricCurveCollection > CurveFitter::make_hermite(void) const;
343 10 make_nurbs 0 4 531 23 CurveFitter::make_nurbs 0 1 79 134
/**
* Converts the current set of data points into a NURBS curve. This gives a
* smoother curve than produced by MakeHermite().
*/
75
PointerTo< ParametricCurveCollection > CurveFitter::make_nurbs(void) const;
344 6 output 0 4 531 19 CurveFitter::output 0 1 80 10
/**
*
*/
50
void CurveFitter::output(std::ostream &out) const;
345 5 write 0 4 531 18 CurveFitter::write 0 1 81 10
/**
*
*/
49
void CurveFitter::write(std::ostream &out) const;
346 14 get_class_type 0 4 531 27 CurveFitter::get_class_type 0 1 82 0
52
static TypeHandle CurveFitter::get_class_type(void);
347 14 PiecewiseCurve 0 4 532 30 PiecewiseCurve::PiecewiseCurve 0 1 83 10
/**
*
*/
37
PiecewiseCurve::PiecewiseCurve(void);
348 14 get_class_type 0 4 532 30 PiecewiseCurve::get_class_type 0 1 84 0
55
static TypeHandle PiecewiseCurve::get_class_type(void);
349 12 HermiteCurve 0 4 533 26 HermiteCurve::HermiteCurve 0 2 85 86 92
/**
*
*/
/**
* Constructs a Hermite from the indicated (possibly non-hermite) curve.
*/
88
HermiteCurve::HermiteCurve(void);
HermiteCurve::HermiteCurve(ParametricCurve const &pc);
350 11 get_num_cvs 0 4 533 25 HermiteCurve::get_num_cvs 0 1 87 51
/**
* Returns the number of CV's in the curve.
*/
42
int HermiteCurve::get_num_cvs(void) const;
351 9 insert_cv 0 4 533 23 HermiteCurve::insert_cv 0 1 88 547
/**
* Inserts a new CV at the given parametric point along the curve. If this
* parametric point is already on the curve, the CV is assigned an index
* between its two neighbors and the indices of all following CV's are
* incremented by 1; its in and out tangents are chosen to keep the curve
* consistent. If the new parametric point is beyond the end of the existing
* curve, the curve is extended to meet it and the new CV's position, in
* tangent, and out tangent are set to zero.
*
* The index number of the new CV is returned.
*/
43
int HermiteCurve::insert_cv(PN_stdfloat t);
352 9 append_cv 0 4 533 23 HermiteCurve::append_cv 0 2 89 90 149
/**
* Adds a new CV to the end of the curve. The new CV is given initial in/out
* tangents of 0. The return value is the index of the new CV.
*/
149
int HermiteCurve::append_cv(int type, PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
inline int HermiteCurve::append_cv(int type, LVecBase3 const &v);
353 9 remove_cv 0 4 533 23 HermiteCurve::remove_cv 0 1 91 100
/**
* Removes the given CV from the curve. Returns true if the CV existed, false
* otherwise.
*/
36
bool HermiteCurve::remove_cv(int n);
354 14 remove_all_cvs 0 4 533 28 HermiteCurve::remove_all_cvs 0 1 92 43
/**
* Removes all CV's from the curve.
*/
40
void HermiteCurve::remove_all_cvs(void);
355 11 set_cv_type 0 4 533 25 HermiteCurve::set_cv_type 0 1 93 544
/**
* Changes the given CV's continuity type. Legal values are HC_CUT, HC_FREE,
* HC_G1, or HC_SMOOTH.
*
* Other than HC_CUT, these have no effect on the actual curve; it remains up
* to user software to impose the constraints these imply.
*
* HC_CUT implies a disconnection of the curve; HC_FREE imposes no constraints
* on the tangents; HC_G1 forces the tangents to be collinear, and HC_SMOOTH
* forces the tangents to be identical. Setting type type to HC_G1 or
* HC_SMOOTH may adjust the out tangent to match the in tangent.
*/
48
bool HermiteCurve::set_cv_type(int n, int type);
356 12 set_cv_point 0 4 533 26 HermiteCurve::set_cv_point 0 2 94 95 43
/**
* Changes the given CV's position.
*/
151
bool HermiteCurve::set_cv_point(int n, PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
inline bool HermiteCurve::set_cv_point(int n, LVecBase3 const &v);
357 9 set_cv_in 0 4 533 23 HermiteCurve::set_cv_in 0 2 96 97 121
/**
* Changes the given CV's in tangent. Depending on the continuity type, this
* may also adjust the out tangent.
*/
145
bool HermiteCurve::set_cv_in(int n, PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
inline bool HermiteCurve::set_cv_in(int n, LVecBase3 const &v);
358 10 set_cv_out 0 4 533 24 HermiteCurve::set_cv_out 0 2 98 99 121
/**
* Changes the given CV's out tangent. Depending on the continuity type, this
* may also adjust the in tangent.
*/
147
bool HermiteCurve::set_cv_out(int n, PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
inline bool HermiteCurve::set_cv_out(int n, LVecBase3 const &v);
359 13 set_cv_tstart 0 4 533 27 HermiteCurve::set_cv_tstart 0 1 100 103
/**
* Changes the given CV's parametric starting time. This may affect the shape
* of the curve.
*/
60
bool HermiteCurve::set_cv_tstart(int n, PN_stdfloat tstart);
360 11 set_cv_name 0 4 533 25 HermiteCurve::set_cv_name 0 1 101 60
/**
* Changes the name associated with a particular CV.
*/
56
bool HermiteCurve::set_cv_name(int n, char const *name);
361 11 get_cv_type 0 4 533 25 HermiteCurve::get_cv_type 0 1 102 120
/**
* Returns the given CV's continuity type, HC_CUT, HC_FREE, HC_G1, or
* HC_SMOOTH, or 0 if there is no such CV.
*/
43
int HermiteCurve::get_cv_type(int n) const;
362 12 get_cv_point 0 4 533 26 HermiteCurve::get_cv_point 0 2 103 104 48
/**
* Returns the position of the given CV.
*/
117
LVecBase3 const &HermiteCurve::get_cv_point(int n) const;
void HermiteCurve::get_cv_point(int n, LVecBase3 &v) const;
363 9 get_cv_in 0 4 533 23 HermiteCurve::get_cv_in 0 2 105 106 50
/**
* Returns the in tangent of the given CV.
*/
111
LVecBase3 const &HermiteCurve::get_cv_in(int n) const;
void HermiteCurve::get_cv_in(int n, LVecBase3 &v) const;
364 10 get_cv_out 0 4 533 24 HermiteCurve::get_cv_out 0 2 107 108 51
/**
* Returns the out tangent of the given CV.
*/
113
LVecBase3 const &HermiteCurve::get_cv_out(int n) const;
void HermiteCurve::get_cv_out(int n, LVecBase3 &v) const;
365 13 get_cv_tstart 0 4 533 27 HermiteCurve::get_cv_tstart 0 1 109 74
/**
* Returns the starting point in parametric space of the given CV.
*/
53
PN_stdfloat HermiteCurve::get_cv_tstart(int n) const;
366 11 get_cv_name 0 4 533 25 HermiteCurve::get_cv_name 0 1 110 53
/**
* Returns the name of the given CV, or NULL.
*/
51
std::string HermiteCurve::get_cv_name(int n) const;
367 8 write_cv 0 4 533 22 HermiteCurve::write_cv 0 1 111 10
/**
*
*/
60
void HermiteCurve::write_cv(std::ostream &out, int n) const;
368 14 get_class_type 0 4 533 28 HermiteCurve::get_class_type 0 1 112 0
53
static TypeHandle HermiteCurve::get_class_type(void);
369 20 ~NurbsCurveInterface 0 6 534 41 NurbsCurveInterface::~NurbsCurveInterface 0 0 10
/**
*
*/
56
virtual NurbsCurveInterface::~NurbsCurveInterface(void);
370 9 set_order 0 6 534 30 NurbsCurveInterface::set_order 0 1 113 0
59
virtual void NurbsCurveInterface::set_order(int order) = 0;
371 9 get_order 0 6 534 30 NurbsCurveInterface::get_order 0 1 114 0
59
virtual int NurbsCurveInterface::get_order(void) const = 0;
372 11 get_num_cvs 0 6 534 32 NurbsCurveInterface::get_num_cvs 0 1 115 0
61
virtual int NurbsCurveInterface::get_num_cvs(void) const = 0;
373 13 get_num_knots 0 6 534 34 NurbsCurveInterface::get_num_knots 0 1 116 0
63
virtual int NurbsCurveInterface::get_num_knots(void) const = 0;
374 9 insert_cv 0 6 534 30 NurbsCurveInterface::insert_cv 0 1 117 0
63
virtual bool NurbsCurveInterface::insert_cv(PN_stdfloat t) = 0;
375 9 append_cv 0 4 534 30 NurbsCurveInterface::append_cv 0 3 118 119 120 34
/**
*
*/
/**
*
*/
/**
*
*/
213
inline int NurbsCurveInterface::append_cv(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
inline int NurbsCurveInterface::append_cv(LVecBase3 const &v);
inline int NurbsCurveInterface::append_cv(LVecBase4 const &v);
376 9 remove_cv 0 6 534 30 NurbsCurveInterface::remove_cv 0 1 121 0
55
virtual bool NurbsCurveInterface::remove_cv(int n) = 0;
377 14 remove_all_cvs 0 6 534 35 NurbsCurveInterface::remove_all_cvs 0 1 122 0
59
virtual void NurbsCurveInterface::remove_all_cvs(void) = 0;
378 12 set_cv_point 0 4 534 33 NurbsCurveInterface::set_cv_point 0 2 123 124 174
/**
* Repositions the indicated CV. Returns true if successful, false otherwise.
*/
/**
* Repositions the indicated CV. Returns true if successful, false otherwise.
*/
172
inline bool NurbsCurveInterface::set_cv_point(int n, PN_stdfloat x, PN_stdfloat y, PN_stdfloat z);
inline bool NurbsCurveInterface::set_cv_point(int n, LVecBase3 const &v);
379 12 get_cv_point 0 4 534 33 NurbsCurveInterface::get_cv_point 0 1 125 52
/**
* Returns the position of the indicated CV.
*/
64
inline LVecBase3 NurbsCurveInterface::get_cv_point(int n) const;
380 13 set_cv_weight 0 4 534 34 NurbsCurveInterface::set_cv_weight 0 1 126 94
/**
* Sets the weight of the indicated CV without affecting its position in 3-d
* space.
*/
62
bool NurbsCurveInterface::set_cv_weight(int n, PN_stdfloat w);
381 13 get_cv_weight 0 4 534 34 NurbsCurveInterface::get_cv_weight 0 1 127 50
/**
* Returns the weight of the indicated CV.
*/
67
inline PN_stdfloat NurbsCurveInterface::get_cv_weight(int n) const;
382 6 set_cv 0 6 534 27 NurbsCurveInterface::set_cv 0 1 128 0
72
virtual bool NurbsCurveInterface::set_cv(int n, LVecBase4 const &v) = 0;
383 6 get_cv 0 6 534 27 NurbsCurveInterface::get_cv 0 1 129 0
63
virtual LVecBase4 NurbsCurveInterface::get_cv(int n) const = 0;
384 8 set_knot 0 6 534 29 NurbsCurveInterface::set_knot 0 1 130 0
69
virtual bool NurbsCurveInterface::set_knot(int n, PN_stdfloat t) = 0;
385 8 get_knot 0 6 534 29 NurbsCurveInterface::get_knot 0 1 131 0
67
virtual PN_stdfloat NurbsCurveInterface::get_knot(int n) const = 0;
386 8 write_cv 0 4 534 29 NurbsCurveInterface::write_cv 0 1 132 10
/**
*
*/
67
void NurbsCurveInterface::write_cv(std::ostream &out, int n) const;
387 14 get_class_type 0 4 534 35 NurbsCurveInterface::get_class_type 0 1 133 0
60
static TypeHandle NurbsCurveInterface::get_class_type(void);
388 24 upcast_to_PiecewiseCurve 0 12 535 36 NurbsCurve::upcast_to_PiecewiseCurve 0 1 137 40
upcast from NurbsCurve to PiecewiseCurve
59
PiecewiseCurve *NurbsCurve::upcast_to_PiecewiseCurve(void);
389 22 downcast_to_NurbsCurve 0 12 532 38 PiecewiseCurve::downcast_to_NurbsCurve 0 0 42
downcast from PiecewiseCurve to NurbsCurve
57
NurbsCurve *PiecewiseCurve::downcast_to_NurbsCurve(void);
390 29 upcast_to_NurbsCurveInterface 0 12 535 41 NurbsCurve::upcast_to_NurbsCurveInterface 0 1 138 45
upcast from NurbsCurve to NurbsCurveInterface
69
NurbsCurveInterface *NurbsCurve::upcast_to_NurbsCurveInterface(void);
391 22 downcast_to_NurbsCurve 0 12 534 43 NurbsCurveInterface::downcast_to_NurbsCurve 0 0 47
downcast from NurbsCurveInterface to NurbsCurve
62
NurbsCurve *NurbsCurveInterface::downcast_to_NurbsCurve(void);
392 10 NurbsCurve 0 4 535 22 NurbsCurve::NurbsCurve 0 2 134 135 188
/**
*
*/
/**
* Constructs a NURBS curve equivalent to the indicated (possibly non-NURBS)
* curve.
*/
/**
* Constructs a NURBS curve according to the indicated NURBS parameters.
*/
80
NurbsCurve::NurbsCurve(void);
NurbsCurve::NurbsCurve(ParametricCurve const &pc);
393 11 ~NurbsCurve 0 6 535 23 NurbsCurve::~NurbsCurve 0 0 10
/**
*
*/
38
virtual NurbsCurve::~NurbsCurve(void);
394 14 get_class_type 0 4 535 26 NurbsCurve::get_class_type 0 1 136 0
51
static TypeHandle NurbsCurve::get_class_type(void);
395 11 get_start_t 0 4 536 29 NurbsCurveResult::get_start_t 0 1 140 81
/**
* Returns the first legal value of t on the curve. Usually this is 0.0.
*/
61
inline PN_stdfloat NurbsCurveResult::get_start_t(void) const;
396 9 get_end_t 0 4 536 27 NurbsCurveResult::get_end_t 0 1 141 58
/**
* Returns the last legal value of t on the curve.
*/
59
inline PN_stdfloat NurbsCurveResult::get_end_t(void) const;
397 10 eval_point 0 4 536 28 NurbsCurveResult::eval_point 0 1 142 158
/**
* Computes the point on the curve corresponding to the indicated value in
* parametric time. Returns true if the t value is valid, false otherwise.
*/
74
inline bool NurbsCurveResult::eval_point(PN_stdfloat t, LVecBase3 &point);
398 12 eval_tangent 0 4 536 30 NurbsCurveResult::eval_tangent 0 1 143 193
/**
* 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().
*/
78
inline bool NurbsCurveResult::eval_tangent(PN_stdfloat t, LVecBase3 &tangent);
399 19 eval_extended_point 0 4 536 37 NurbsCurveResult::eval_extended_point 0 1 144 145
/**
* Evaluates the curve in n-dimensional space according to the extended
* vertices associated with the curve in the indicated dimension.
*/
79
inline PN_stdfloat NurbsCurveResult::eval_extended_point(PN_stdfloat t, int d);
400 20 eval_extended_points 0 4 536 38 NurbsCurveResult::eval_extended_points 0 1 145 248
/**
* 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.
*/
111
inline bool NurbsCurveResult::eval_extended_points(PN_stdfloat t, int d, PN_stdfloat result[], int num_values);
401 16 get_num_segments 0 4 536 34 NurbsCurveResult::get_num_segments 0 1 146 170
/**
* Returns the number of piecewise continuous segments within the curve. This
* number is usually not important unless you plan to call
* eval_segment_point().
*/
58
inline int NurbsCurveResult::get_num_segments(void) const;
402 18 eval_segment_point 0 4 536 36 NurbsCurveResult::eval_segment_point 0 1 147 637
/**
* 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.
*/
94
void NurbsCurveResult::eval_segment_point(int segment, PN_stdfloat t, LVecBase3 &point) const;
403 20 eval_segment_tangent 0 4 536 38 NurbsCurveResult::eval_segment_tangent 0 1 148 207
/**
* 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.
*/
98
void NurbsCurveResult::eval_segment_tangent(int segment, PN_stdfloat t, LVecBase3 &tangent) const;
404 27 eval_segment_extended_point 0 4 536 45 NurbsCurveResult::eval_segment_extended_point 0 1 149 145
/**
* Evaluates the curve in n-dimensional space according to the extended
* vertices associated with the curve in the indicated dimension.
*/
99
PN_stdfloat NurbsCurveResult::eval_segment_extended_point(int segment, PN_stdfloat t, int d) const;
405 28 eval_segment_extended_points 0 4 536 46 NurbsCurveResult::eval_segment_extended_points 0 1 150 248
/**
* 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.
*/
131
void NurbsCurveResult::eval_segment_extended_points(int segment, PN_stdfloat t, int d, PN_stdfloat result[], int num_values) const;
406 13 get_segment_t 0 4 536 31 NurbsCurveResult::get_segment_t 0 1 151 217
/**
* 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()).
*/
85
inline PN_stdfloat NurbsCurveResult::get_segment_t(int segment, PN_stdfloat t) const;
407 15 adaptive_sample 0 4 536 33 NurbsCurveResult::adaptive_sample 0 1 152 330
/**
* 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().
*/
62
void NurbsCurveResult::adaptive_sample(PN_stdfloat tolerance);
408 15 get_num_samples 0 4 536 33 NurbsCurveResult::get_num_samples 0 1 153 102
/**
* Returns the number of sample points generated by the previous call to
* adaptive_sample().
*/
57
inline int NurbsCurveResult::get_num_samples(void) const;
409 12 get_sample_t 0 4 536 30 NurbsCurveResult::get_sample_t 0 1 154 110
/**
* Returns the t value of the nth sample point generated by the previous call
* to adaptive_sample().
*/
63
inline PN_stdfloat NurbsCurveResult::get_sample_t(int n) const;
410 16 get_sample_point 0 4 536 34 NurbsCurveResult::get_sample_point 0 1 155 252
/**
* 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().
*/
70
inline LPoint3 const &NurbsCurveResult::get_sample_point(int n) const;
411 16 NurbsCurveResult 0 4 536 34 NurbsCurveResult::NurbsCurveResult 0 1 139 174
/**
* The constructor automatically builds up the result as the product of the
* indicated set of basis matrices and the indicated table of control vertex
* positions.
*/
78
inline NurbsCurveResult::NurbsCurveResult(NurbsCurveResult const &) = default;
412 19 NurbsCurveEvaluator 0 4 537 40 NurbsCurveEvaluator::NurbsCurveEvaluator 0 2 156 157 10
/**
*
*/
135
NurbsCurveEvaluator::NurbsCurveEvaluator(void);
inline NurbsCurveEvaluator::NurbsCurveEvaluator(NurbsCurveEvaluator const &) = default;
413 9 set_order 0 4 537 30 NurbsCurveEvaluator::set_order 0 1 158 224
/**
* Sets the order of the curve. This resets the knot vector to the default
* knot vector for the number of vertices.
*
* The order must be 1, 2, 3, or 4, and the value is one more than the degree
* of the curve.
*/
54
inline void NurbsCurveEvaluator::set_order(int order);
414 9 get_order 0 4 537 30 NurbsCurveEvaluator::get_order 0 1 159 83
/**
* Returns the order of the curve as set by a previous call to set_order().
*/
54
inline int NurbsCurveEvaluator::get_order(void) const;
415 5 reset 0 4 537 26 NurbsCurveEvaluator::reset 0 1 160 231
/**
* Resets all the vertices and knots to their default values, and sets the
* curve up with the indicated number of vertices. You must then call
* set_vertex() repeatedly to fill in all of the vertex values appropriately.
*/
50
void NurbsCurveEvaluator::reset(int num_vertices);
416 16 get_num_vertices 0 4 537 37 NurbsCurveEvaluator::get_num_vertices 0 1 161 122
/**
* Returns the number of control vertices in the curve. This is the number
* passed to the last call to reset().
*/
61
inline int NurbsCurveEvaluator::get_num_vertices(void) const;
417 10 set_vertex 0 4 537 31 NurbsCurveEvaluator::set_vertex 0 2 162 163 441
/**
* Sets the nth control vertex of the curve, as a vertex in 4-d homogeneous
* space. In this form, the first three components of the vertex should
* already have been scaled by the fourth component, which is the homogeneous
* weight.
*/
/**
* Sets the nth control vertex of the curve. This flavor sets the vertex as a
* 3-d coordinate and a weight; the 3-d coordinate values are implicitly
* scaled up by the weight factor.
*/
179
inline void NurbsCurveEvaluator::set_vertex(int i, LVecBase4 const &vertex);
inline void NurbsCurveEvaluator::set_vertex(int i, LVecBase3 const &vertex, PN_stdfloat weight = 1.0);
418 10 get_vertex 0 4 537 31 NurbsCurveEvaluator::get_vertex 0 2 164 165 202
/**
* Returns the nth control vertex of the curve, relative to its indicated
* coordinate space.
*/
/**
* Returns the nth control vertex of the curve, relative to the given
* coordinate space.
*/
156
inline LVecBase4 const &NurbsCurveEvaluator::get_vertex(int i) const;
inline LVecBase4 NurbsCurveEvaluator::get_vertex(int i, NodePath const &rel_to) const;
419 16 set_vertex_space 0 4 537 37 NurbsCurveEvaluator::set_vertex_space 0 2 166 167 792
/**
* Sets the coordinate space of the nth control vertex. If this is not
* specified, or is set to an empty NodePath, the nth control vertex is deemed
* to be in the coordinate space passed to evaluate().
*
* This specifies the space as a fixed NodePath, which is always the same
* NodePath. Also see setting the space as a path string, which can specify a
* different NodePath for different instances of the curve.
*/
/**
* Sets the coordinate space of the nth control vertex. If this is not
* specified, or is set to an empty string, the nth control vertex is deemed
* to be in the coordinate space passed to evaluate().
*
* This specifies the space as a string, which describes the path to find the
* node relative to the rel_to NodePath when the curve is evaluated.
*/
164
inline void NurbsCurveEvaluator::set_vertex_space(int i, NodePath const &space);
inline void NurbsCurveEvaluator::set_vertex_space(int i, std::string const &space);
420 16 get_vertex_space 0 4 537 37 NurbsCurveEvaluator::get_vertex_space 0 1 168 107
/**
* Returns the coordinate space of the nth control vertex of the curve,
* expressed as a NodePath.
*/
84
NodePath NurbsCurveEvaluator::get_vertex_space(int i, NodePath const &rel_to) const;
421 19 set_extended_vertex 0 4 537 40 NurbsCurveEvaluator::set_extended_vertex 0 1 169 768
/**
* Sets an n-dimensional vertex value. This allows definition of a NURBS
* surface or curve in a sparse n-dimensional space, typically used for
* associating additional properties (like color or joint membership) with
* each vertex of a surface.
*
* The value d is an arbitrary integer value and specifies the dimension of
* question for this particular vertex. Any number of dimensions may be
* specified, and they need not be consecutive. If a value for a given
* dimension is not specified, is it implicitly 0.0.
*
* The value is implicitly scaled by the homogenous weight value--that is, the
* fourth component of the value passed to set_vertex(). This means the
* ordinary vertex must be set first, before the extended vertices can be set.
*/
86
inline void NurbsCurveEvaluator::set_extended_vertex(int i, int d, PN_stdfloat value);
422 19 get_extended_vertex 0 4 537 40 NurbsCurveEvaluator::get_extended_vertex 0 1 170 172
/**
* Returns an n-dimensional vertex value. See set_extended_vertex(). This
* returns the value set for the indicated dimension, or 0.0 if nothing has
* been set.
*/
80
inline PN_stdfloat NurbsCurveEvaluator::get_extended_vertex(int i, int d) const;
423 21 set_extended_vertices 0 4 537 42 NurbsCurveEvaluator::set_extended_vertices 0 1 171 259
/**
* Simultaneously sets several extended values in the slots d through (d +
* num_values - 1) from the num_values elements of the indicated array. This
* is equivalent to calling set_extended_vertex() num_values times. See
* set_extended_vertex().
*/
106
void NurbsCurveEvaluator::set_extended_vertices(int i, int d, PN_stdfloat const values[], int num_values);
424 13 get_num_knots 0 4 537 34 NurbsCurveEvaluator::get_num_knots 0 1 172 117
/**
* Returns the number of knot values in the curve. This is based on the
* number of vertices and the order.
*/
58
inline int NurbsCurveEvaluator::get_num_knots(void) const;
425 8 set_knot 0 4 537 29 NurbsCurveEvaluator::set_knot 0 1 173 184
/**
* Sets the value of the nth knot. Each knot value should be greater than or
* equal to the preceding value. If no knot values are set, a default knot
* vector is supplied.
*/
60
void NurbsCurveEvaluator::set_knot(int i, PN_stdfloat knot);
426 8 get_knot 0 4 537 29 NurbsCurveEvaluator::get_knot 0 1 174 45
/**
* Returns the value of the nth knot.
*/
55
PN_stdfloat NurbsCurveEvaluator::get_knot(int i) const;
427 15 normalize_knots 0 4 537 36 NurbsCurveEvaluator::normalize_knots 0 1 175 95
/**
* Normalizes the knot sequence so that the parametric range of the curve is 0
* .. 1.
*/
48
void NurbsCurveEvaluator::normalize_knots(void);
428 16 get_num_segments 0 4 537 37 NurbsCurveEvaluator::get_num_segments 0 1 176 114
/**
* Returns the number of piecewise continuous segments in the curve. This is
* based on the knot vector.
*/
61
inline int NurbsCurveEvaluator::get_num_segments(void) const;
429 8 evaluate 0 4 537 29 NurbsCurveEvaluator::evaluate 0 2 177 178 447
/**
* Returns a NurbsCurveResult object that represents the result of applying
* the knots to all of the current values of the vertices, transformed into
* the indicated coordinate space.
*/
/**
* Returns a NurbsCurveResult object that represents the result of applying
* the knots to all of the current values of the vertices, transformed into
* the indicated coordinate space, and then further transformed by the
* indicated matrix.
*/
215
PointerTo< NurbsCurveResult > NurbsCurveEvaluator::evaluate(NodePath const &rel_to = NodePath()) const;
PointerTo< NurbsCurveResult > NurbsCurveEvaluator::evaluate(NodePath const &rel_to, LMatrix4 const &mat) const;
430 6 output 0 4 537 27 NurbsCurveEvaluator::output 0 1 179 10
/**
*
*/
58
void NurbsCurveEvaluator::output(std::ostream &out) const;
431 11 get_start_u 0 4 538 31 NurbsSurfaceResult::get_start_u 0 1 181 83
/**
* Returns the first legal value of u on the surface. Usually this is 0.0.
*/
63
inline PN_stdfloat NurbsSurfaceResult::get_start_u(void) const;
432 9 get_end_u 0 4 538 29 NurbsSurfaceResult::get_end_u 0 1 182 60
/**
* Returns the last legal value of u on the surface.
*/
61
inline PN_stdfloat NurbsSurfaceResult::get_end_u(void) const;
433 11 get_start_v 0 4 538 31 NurbsSurfaceResult::get_start_v 0 1 183 83
/**
* Returns the first legal value of v on the surface. Usually this is 0.0.
*/
63
inline PN_stdfloat NurbsSurfaceResult::get_start_v(void) const;
434 9 get_end_v 0 4 538 29 NurbsSurfaceResult::get_end_v 0 1 184 60
/**
* Returns the last legal value of v on the surface.
*/
61
inline PN_stdfloat NurbsSurfaceResult::get_end_v(void) const;
435 10 eval_point 0 4 538 30 NurbsSurfaceResult::eval_point 0 1 185 168
/**
* Computes the point on the surface corresponding to the indicated value in
* parametric time. Returns true if the u, v values are valid, false
* otherwise.
*/
91
inline bool NurbsSurfaceResult::eval_point(PN_stdfloat u, PN_stdfloat v, LVecBase3 &point);
436 11 eval_normal 0 4 538 31 NurbsSurfaceResult::eval_normal 0 1 186 193
/**
* Computes the normal to the surface at the indicated point in parametric
* time. This normal vector will not necessarily be normalized, and could be
* zero. See also eval_point().
*/
93
inline bool NurbsSurfaceResult::eval_normal(PN_stdfloat u, PN_stdfloat v, LVecBase3 &normal);
437 19 eval_extended_point 0 4 538 39 NurbsSurfaceResult::eval_extended_point 0 1 187 149
/**
* Evaluates the surface in n-dimensional space according to the extended
* vertices associated with the surface in the indicated dimension.
*/
96
inline PN_stdfloat NurbsSurfaceResult::eval_extended_point(PN_stdfloat u, PN_stdfloat v, int d);
438 20 eval_extended_points 0 4 538 40 NurbsSurfaceResult::eval_extended_points 0 1 188 248
/**
* 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.
*/
128
inline bool NurbsSurfaceResult::eval_extended_points(PN_stdfloat u, PN_stdfloat v, int d, PN_stdfloat result[], int num_values);
439 18 get_num_u_segments 0 4 538 38 NurbsSurfaceResult::get_num_u_segments 0 1 189 191
/**
* Returns the number of piecewise continuous segments within the surface in
* the U direction. This number is usually not important unless you plan to
* call eval_segment_point().
*/
62
inline int NurbsSurfaceResult::get_num_u_segments(void) const;
440 18 get_num_v_segments 0 4 538 38 NurbsSurfaceResult::get_num_v_segments 0 1 190 191
/**
* Returns the number of piecewise continuous segments within the surface in
* the V direction. This number is usually not important unless you plan to
* call eval_segment_point().
*/
62
inline int NurbsSurfaceResult::get_num_v_segments(void) const;
441 18 eval_segment_point 0 4 538 38 NurbsSurfaceResult::eval_segment_point 0 1 191 656
/**
* Evaluates the point on the surface corresponding to the indicated value in
* parametric time within the indicated surface segment. u and v should be in
* the range [0, 1].
*
* The surface is internally represented as a number of connected (or possibly
* unconnected) piecewise continuous segments. The exact number of segments
* for a particular surface depends on the knot vector, and is returned by
* get_num_segments(). Normally, eval_point() is used to evaluate a point
* along the continuous surface, but when you care more about local
* continuity, you can use eval_segment_point() to evaluate the points along
* each segment.
*/
114
void NurbsSurfaceResult::eval_segment_point(int ui, int vi, PN_stdfloat u, PN_stdfloat v, LVecBase3 &point) const;
442 19 eval_segment_normal 0 4 538 39 NurbsSurfaceResult::eval_segment_normal 0 1 192 176
/**
* As eval_segment_point, but computes the normal to the surface at the
* indicated point. The normal vector will not necessarily be normalized, and
* could be zero.
*/
116
void NurbsSurfaceResult::eval_segment_normal(int ui, int vi, PN_stdfloat u, PN_stdfloat v, LVecBase3 &normal) const;
443 27 eval_segment_extended_point 0 4 538 47 NurbsSurfaceResult::eval_segment_extended_point 0 1 193 149
/**
* Evaluates the surface in n-dimensional space according to the extended
* vertices associated with the surface in the indicated dimension.
*/
119
PN_stdfloat NurbsSurfaceResult::eval_segment_extended_point(int ui, int vi, PN_stdfloat u, PN_stdfloat v, int d) const;
444 28 eval_segment_extended_points 0 4 538 48 NurbsSurfaceResult::eval_segment_extended_points 0 1 194 248
/**
* 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.
*/
151
void NurbsSurfaceResult::eval_segment_extended_points(int ui, int vi, PN_stdfloat u, PN_stdfloat v, int d, PN_stdfloat result[], int num_values) const;
445 13 get_segment_u 0 4 538 33 NurbsSurfaceResult::get_segment_u 0 1 195 219
/**
* Accepts a u value in the range [0, 1], and assumed to be relative to the
* indicated segment (as in eval_segment_point()), and returns the
* corresponding u value in the entire surface (as in eval_point()).
*/
82
inline PN_stdfloat NurbsSurfaceResult::get_segment_u(int ui, PN_stdfloat u) const;
446 13 get_segment_v 0 4 538 33 NurbsSurfaceResult::get_segment_v 0 1 196 219
/**
* Accepts a v value in the range [0, 1], and assumed to be relative to the
* indicated segment (as in eval_segment_point()), and returns the
* corresponding v value in the entire surface (as in eval_point()).
*/
82
inline PN_stdfloat NurbsSurfaceResult::get_segment_v(int vi, PN_stdfloat v) const;
447 18 NurbsSurfaceResult 0 4 538 38 NurbsSurfaceResult::NurbsSurfaceResult 0 1 180 174
/**
* The constructor automatically builds up the result as the product of the
* indicated set of basis matrices and the indicated table of control vertex
* positions.
*/
84
inline NurbsSurfaceResult::NurbsSurfaceResult(NurbsSurfaceResult const &) = default;
448 21 NurbsSurfaceEvaluator 0 4 539 44 NurbsSurfaceEvaluator::NurbsSurfaceEvaluator 0 2 197 198 10
/**
*
*/
145
NurbsSurfaceEvaluator::NurbsSurfaceEvaluator(void);
inline NurbsSurfaceEvaluator::NurbsSurfaceEvaluator(NurbsSurfaceEvaluator const &) = default;
449 11 set_u_order 0 4 539 34 NurbsSurfaceEvaluator::set_u_order 0 1 199 247
/**
* Sets the order of the surface in the U direction. This resets the knot
* vector to the default knot vector for the number of vertices.
*
* The order must be 1, 2, 3, or 4, and the value is one more than the degree
* of the surface.
*/
60
inline void NurbsSurfaceEvaluator::set_u_order(int u_order);
450 11 get_u_order 0 4 539 34 NurbsSurfaceEvaluator::get_u_order 0 1 200 109
/**
* Returns the order of the surface in the U direction as set by a previous
* call to set_u_order().
*/
58
inline int NurbsSurfaceEvaluator::get_u_order(void) const;
451 11 set_v_order 0 4 539 34 NurbsSurfaceEvaluator::set_v_order 0 1 201 247
/**
* Sets the order of the surface in the V direction. This resets the knot
* vector to the default knot vector for the number of vertices.
*
* The order must be 1, 2, 3, or 4, and the value is one more than the degree
* of the surface.
*/
60
inline void NurbsSurfaceEvaluator::set_v_order(int v_order);
452 11 get_v_order 0 4 539 34 NurbsSurfaceEvaluator::get_v_order 0 1 202 109
/**
* Returns the order of the surface in the V direction as set by a previous
* call to set_v_order().
*/
58
inline int NurbsSurfaceEvaluator::get_v_order(void) const;
453 5 reset 0 4 539 28 NurbsSurfaceEvaluator::reset 0 1 203 233
/**
* Resets all the vertices and knots to their default values, and sets the
* surface up with the indicated number of vertices. You must then call
* set_vertex() repeatedly to fill in all of the vertex values appropriately.
*/
74
void NurbsSurfaceEvaluator::reset(int num_u_vertices, int num_v_vertices);
454 18 get_num_u_vertices 0 4 539 41 NurbsSurfaceEvaluator::get_num_u_vertices 0 1 204 142
/**
* Returns the number of control vertices in the U direction on the surface.
* This is the number passed to the last call to reset().
*/
65
inline int NurbsSurfaceEvaluator::get_num_u_vertices(void) const;
455 18 get_num_v_vertices 0 4 539 41 NurbsSurfaceEvaluator::get_num_v_vertices 0 1 205 142
/**
* Returns the number of control vertices in the V direction on the surface.
* This is the number passed to the last call to reset().
*/
65
inline int NurbsSurfaceEvaluator::get_num_v_vertices(void) const;
456 10 set_vertex 0 4 539 33 NurbsSurfaceEvaluator::set_vertex 0 2 206 207 445
/**
* Sets the nth control vertex of the surface, as a vertex in 4-d homogeneous
* space. In this form, the first three components of the vertex should
* already have been scaled by the fourth component, which is the homogeneous
* weight.
*/
/**
* Sets the nth control vertex of the surface. This flavor sets the vertex as
* a 3-d coordinate and a weight; the 3-d coordinate values are implicitly
* scaled up by the weight factor.
*/
201
inline void NurbsSurfaceEvaluator::set_vertex(int ui, int vi, LVecBase4 const &vertex);
inline void NurbsSurfaceEvaluator::set_vertex(int ui, int vi, LVecBase3 const &vertex, PN_stdfloat weight = 1.0);
457 10 get_vertex 0 4 539 33 NurbsSurfaceEvaluator::get_vertex 0 2 208 209 206
/**
* Returns the nth control vertex of the surface, relative to its indicated
* coordinate space.
*/
/**
* Returns the nth control vertex of the surface, relative to the given
* coordinate space.
*/
178
inline LVecBase4 const &NurbsSurfaceEvaluator::get_vertex(int ui, int vi) const;
inline LVecBase4 NurbsSurfaceEvaluator::get_vertex(int ui, int vi, NodePath const &rel_to) const;
458 16 set_vertex_space 0 4 539 39 NurbsSurfaceEvaluator::set_vertex_space 0 2 210 211 796
/**
* Sets the coordinate space of the nth control vertex. If this is not
* specified, or is set to an empty NodePath, the nth control vertex is deemed
* to be in the coordinate space passed to evaluate().
*
* This specifies the space as a fixed NodePath, which is always the same
* NodePath. Also see setting the space as a path string, which can specify a
* different NodePath for different instances of the surface.
*/
/**
* Sets the coordinate space of the nth control vertex. If this is not
* specified, or is set to an empty string, the nth control vertex is deemed
* to be in the coordinate space passed to evaluate().
*
* This specifies the space as a string, which describes the path to find the
* node relative to the rel_to NodePath when the surface is evaluated.
*/
186
inline void NurbsSurfaceEvaluator::set_vertex_space(int ui, int vi, NodePath const &space);
inline void NurbsSurfaceEvaluator::set_vertex_space(int ui, int vi, std::string const &space);
459 16 get_vertex_space 0 4 539 39 NurbsSurfaceEvaluator::get_vertex_space 0 1 212 109
/**
* Returns the coordinate space of the nth control vertex of the surface,
* expressed as a NodePath.
*/
95
NodePath NurbsSurfaceEvaluator::get_vertex_space(int ui, int vi, NodePath const &rel_to) const;
460 19 set_extended_vertex 0 4 539 42 NurbsSurfaceEvaluator::set_extended_vertex 0 1 213 770
/**
* Sets an n-dimensional vertex value. This allows definition of a NURBS
* surface or surface in a sparse n-dimensional space, typically used for
* associating additional properties (like color or joint membership) with
* each vertex of a surface.
*
* The value d is an arbitrary integer value and specifies the dimension of
* question for this particular vertex. Any number of dimensions may be
* specified, and they need not be consecutive. If a value for a given
* dimension is not specified, is it implicitly 0.0.
*
* The value is implicitly scaled by the homogenous weight value--that is, the
* fourth component of the value passed to set_vertex(). This means the
* ordinary vertex must be set first, before the extended vertices can be set.
*/
97
inline void NurbsSurfaceEvaluator::set_extended_vertex(int ui, int vi, int d, PN_stdfloat value);
461 19 get_extended_vertex 0 4 539 42 NurbsSurfaceEvaluator::get_extended_vertex 0 1 214 172
/**
* Returns an n-dimensional vertex value. See set_extended_vertex(). This
* returns the value set for the indicated dimension, or 0.0 if nothing has
* been set.
*/
91
inline PN_stdfloat NurbsSurfaceEvaluator::get_extended_vertex(int ui, int vi, int d) const;
462 21 set_extended_vertices 0 4 539 44 NurbsSurfaceEvaluator::set_extended_vertices 0 1 215 259
/**
* Simultaneously sets several extended values in the slots d through (d +
* num_values - 1) from the num_values elements of the indicated array. This
* is equivalent to calling set_extended_vertex() num_values times. See
* set_extended_vertex().
*/
117
void NurbsSurfaceEvaluator::set_extended_vertices(int ui, int vi, int d, PN_stdfloat const values[], int num_values);
463 15 get_num_u_knots 0 4 539 38 NurbsSurfaceEvaluator::get_num_u_knots 0 1 216 138
/**
* Returns the number of knot values in the surface in the U direction. This
* is based on the number of vertices and the order.
*/
62
inline int NurbsSurfaceEvaluator::get_num_u_knots(void) const;
464 10 set_u_knot 0 4 539 33 NurbsSurfaceEvaluator::set_u_knot 0 1 217 184
/**
* Sets the value of the nth knot. Each knot value should be greater than or
* equal to the preceding value. If no knot values are set, a default knot
* vector is supplied.
*/
64
void NurbsSurfaceEvaluator::set_u_knot(int i, PN_stdfloat knot);
465 10 get_u_knot 0 4 539 33 NurbsSurfaceEvaluator::get_u_knot 0 1 218 45
/**
* Returns the value of the nth knot.
*/
59
PN_stdfloat NurbsSurfaceEvaluator::get_u_knot(int i) const;
466 17 normalize_u_knots 0 4 539 40 NurbsSurfaceEvaluator::normalize_u_knots 0 1 219 116
/**
* Normalizes the knot sequence so that the parametric range of the surface in
* the U direction is 0 .. 1.
*/
52
void NurbsSurfaceEvaluator::normalize_u_knots(void);
467 15 get_num_v_knots 0 4 539 38 NurbsSurfaceEvaluator::get_num_v_knots 0 1 220 138
/**
* Returns the number of knot values in the surface in the V direction. This
* is based on the number of vertices and the order.
*/
62
inline int NurbsSurfaceEvaluator::get_num_v_knots(void) const;
468 10 set_v_knot 0 4 539 33 NurbsSurfaceEvaluator::set_v_knot 0 1 221 184
/**
* Sets the value of the nth knot. Each knot value should be greater than or
* equal to the preceding value. If no knot values are set, a default knot
* vector is supplied.
*/
64
void NurbsSurfaceEvaluator::set_v_knot(int i, PN_stdfloat knot);
469 10 get_v_knot 0 4 539 33 NurbsSurfaceEvaluator::get_v_knot 0 1 222 45
/**
* Returns the value of the nth knot.
*/
59
PN_stdfloat NurbsSurfaceEvaluator::get_v_knot(int i) const;
470 17 normalize_v_knots 0 4 539 40 NurbsSurfaceEvaluator::normalize_v_knots 0 1 223 116
/**
* Normalizes the knot sequence so that the parametric range of the surface in
* the U direction is 0 .. 1.
*/
52
void NurbsSurfaceEvaluator::normalize_v_knots(void);
471 18 get_num_u_segments 0 4 539 41 NurbsSurfaceEvaluator::get_num_u_segments 0 1 224 135
/**
* Returns the number of piecewise continuous segments in the surface in the U
* direction. This is based on the knot vector.
*/
65
inline int NurbsSurfaceEvaluator::get_num_u_segments(void) const;
472 18 get_num_v_segments 0 4 539 41 NurbsSurfaceEvaluator::get_num_v_segments 0 1 225 135
/**
* Returns the number of piecewise continuous segments in the surface in the V
* direction. This is based on the knot vector.
*/
65
inline int NurbsSurfaceEvaluator::get_num_v_segments(void) const;
473 8 evaluate 0 4 539 31 NurbsSurfaceEvaluator::evaluate 0 1 226 196
/**
* Returns a NurbsSurfaceResult object that represents the result of applying
* the knots to all of the current values of the vertices, transformed into
* the indicated coordinate space.
*/
107
PointerTo< NurbsSurfaceResult > NurbsSurfaceEvaluator::evaluate(NodePath const &rel_to = NodePath()) const;
474 6 output 0 4 539 29 NurbsSurfaceEvaluator::output 0 1 227 10
/**
*
*/
60
void NurbsSurfaceEvaluator::output(std::ostream &out) const;
475 0 0 0 0 0 0 0 0
0
476 0 0 0 0 0 0 0 0
0
477 8 RopeNode 0 4 541 18 RopeNode::RopeNode 0 1 228 22
/**
*
*/
/**
*
*/
53
explicit RopeNode::RopeNode(std::string const &name);
478 9 set_curve 0 4 541 19 RopeNode::set_curve 0 1 229 65
/**
* Sets the particular curve represented by the RopeNode.
*/
60
inline void RopeNode::set_curve(NurbsCurveEvaluator *curve);
479 9 get_curve 0 4 541 19 RopeNode::get_curve 0 1 230 57
/**
* Returns the curve represented by the RopeNode.
*/
60
inline NurbsCurveEvaluator *RopeNode::get_curve(void) const;
480 15 set_render_mode 0 4 541 25 RopeNode::set_render_mode 0 1 231 130
/**
* Specifies the method used to render the rope. The simplest is RM_thread,
* which just draws a one-pixel line segment.
*/
72
inline void RopeNode::set_render_mode(RopeNode::RenderMode render_mode);
481 15 get_render_mode 0 4 541 25 RopeNode::get_render_mode 0 1 232 78
/**
* Returns the method used to render the rope. See set_render_mode().
*/
66
inline RopeNode::RenderMode RopeNode::get_render_mode(void) const;
482 11 set_uv_mode 0 4 541 21 RopeNode::set_uv_mode 0 1 233 72
/**
* Specifies the algorithm to use to generate UV's for the rope.
*/
60
inline void RopeNode::set_uv_mode(RopeNode::UVMode uv_mode);
483 11 get_uv_mode 0 4 541 21 RopeNode::get_uv_mode 0 1 234 70
/**
* Returns the algorithm to use to generate UV's for the rope.
*/
58
inline RopeNode::UVMode RopeNode::get_uv_mode(void) const;
484 16 set_uv_direction 0 4 541 26 RopeNode::set_uv_direction 0 1 235 115
/**
* Specify true to vary the U coordinate down the length of the rope, or false
* to vary the V coordinate.
*/
56
inline void RopeNode::set_uv_direction(bool u_dominant);
485 16 get_uv_direction 0 4 541 26 RopeNode::get_uv_direction 0 1 236 124
/**
* Returns true if the rope runs down the U coordinate of the texture, or
* false if it runs down the V coordinate.
*/
51
inline bool RopeNode::get_uv_direction(void) const;
486 12 set_uv_scale 0 4 541 22 RopeNode::set_uv_scale 0 1 237 206
/**
* Specifies an additional scaling factor to apply to generated UV's along the
* rope. This scale factor is applied in whichever direction is along the
* rope, as specified by set_uv_direction().
*/
54
inline void RopeNode::set_uv_scale(PN_stdfloat scale);
487 12 get_uv_scale 0 4 541 22 RopeNode::get_uv_scale 0 1 238 78
/**
* Returns the scaling factor to apply to generated UV's for the rope.
*/
54
inline PN_stdfloat RopeNode::get_uv_scale(void) const;
488 15 set_normal_mode 0 4 541 25 RopeNode::set_normal_mode 0 1 239 192
/**
* Specifies the kind of normals to generate for the rope. This is only
* applicable when the RenderMode is set to RM_tube; in the other render
* modes, normals are never generated.
*/
72
inline void RopeNode::set_normal_mode(RopeNode::NormalMode normal_mode);
489 15 get_normal_mode 0 4 541 25 RopeNode::get_normal_mode 0 1 240 131
/**
* Returns the kind of normals to generate for the rope. This is only
* applicable when the RenderMode is set to RM_tube.
*/
66
inline RopeNode::NormalMode RopeNode::get_normal_mode(void) const;
490 11 set_tube_up 0 4 541 21 RopeNode::set_tube_up 0 1 241 419
/**
* Specifies a normal vector, generally perpendicular to the main axis of the
* starting point of the curve, that controls the "top" of the curve, when
* RenderMode is RM_tube. This is used to orient the vertices that make up
* the tube. If this vector is too nearly parallel with the starting
* direction of the curve, there may be a tendency for the whole tube to
* gimble-lock around its primary axis.
*/
59
inline void RopeNode::set_tube_up(LVector3 const &tube_up);
491 11 get_tube_up 0 4 541 21 RopeNode::get_tube_up 0 1 242 127
/**
* Returns the normal vector used to control the "top" of the curve, when
* RenderMode is RM_tube. See set_tube_up().
*/
57
inline LVector3 const &RopeNode::get_tube_up(void) const;
492 20 set_use_vertex_color 0 4 541 30 RopeNode::set_use_vertex_color 0 1 243 351
/**
* Sets the "use vertex color" flag. When this is true, the R, G, B, A vertex
* color is assumed to be stored as the dimensions n + 0, n + 1, n + 2, n + 3,
* respectively, of the extended vertex values, where n is the value returned
* by get_vertex_color_dimension(). Use
* NurbsCurveEvaluator::set_extended_vertex() to set these values.
*/
54
inline void RopeNode::set_use_vertex_color(bool flag);
493 20 get_use_vertex_color 0 4 541 30 RopeNode::get_use_vertex_color 0 1 244 76
/**
* Returns the "use vertex color" flag. See set_use_vertex_color().
*/
55
inline bool RopeNode::get_use_vertex_color(void) const;
494 26 get_vertex_color_dimension 0 4 541 36 RopeNode::get_vertex_color_dimension 0 1 245 221
/**
* Returns the numeric extended dimension in which the color components should
* be found. See NurbsCurveEvaluator::set_extended_vertex().
*
* The color components will be expected at (n, n + 1, n + 2, n + 3).
*/
61
static inline int RopeNode::get_vertex_color_dimension(void);
495 14 set_num_subdiv 0 4 541 24 RopeNode::set_num_subdiv 0 1 246 154
/**
* Specifies the number of subdivisions per cubic segment (that is, per unique
* knot value) to draw in a fixed uniform tesselation of the curve.
*/
53
inline void RopeNode::set_num_subdiv(int num_subdiv);
496 14 get_num_subdiv 0 4 541 24 RopeNode::get_num_subdiv 0 1 247 98
/**
* Returns the number of subdivisions per cubic segment to draw. See
* set_num_subdiv().
*/
48
inline int RopeNode::get_num_subdiv(void) const;
497 14 set_num_slices 0 4 541 24 RopeNode::set_num_slices 0 1 248 404
/**
* Specifies the number of radial subdivisions to make if RenderMode is
* RM_tube. It is ignored in the other render modes.
*
* Increasing this number increases the roundness of a cross-section of the
* tube. The minimum value for a dimensional tube is 3; setting it to 2 will
* get you a thin piece of tape (which is similar to RM_billboard, except it
* won't rotate to face the camera).
*/
53
inline void RopeNode::set_num_slices(int num_slices);
498 14 get_num_slices 0 4 541 24 RopeNode::get_num_slices 0 1 249 153
/**
* Returns the number of radial subdivisions to make if RenderMode is RM_tube.
* It is ignored in the other render modes. See set_num_slices().
*/
48
inline int RopeNode::get_num_slices(void) const;
499 24 set_use_vertex_thickness 0 4 541 34 RopeNode::set_use_vertex_thickness 0 1 250 418
/**
* Sets the "use vertex thickness" flag. When this is true, the vertex
* thickness is assumed to be stored as the dimension
* get_vertex_thickness_dimension(), of the extended vertex values. Use
* NurbsCurveEvaluator::set_extended_vertex() to set these values.
*
* In this mode, the overall thickness is also applied as a scale to the
* vertex thickness. Not all render modes support vertex thickness.
*/
58
inline void RopeNode::set_use_vertex_thickness(bool flag);
500 24 get_use_vertex_thickness 0 4 541 34 RopeNode::get_use_vertex_thickness 0 1 251 84
/**
* Returns the "use vertex thickness" flag. See set_use_vertex_thickness().
*/
59
inline bool RopeNode::get_use_vertex_thickness(void) const;
501 30 get_vertex_thickness_dimension 0 4 541 40 RopeNode::get_vertex_thickness_dimension 0 1 252 151
/**
* Returns the numeric extended dimension in which the thickness component
* should be found. See NurbsCurveEvaluator::set_extended_vertex().
*/
65
static inline int RopeNode::get_vertex_thickness_dimension(void);
502 13 set_thickness 0 4 541 23 RopeNode::set_thickness 0 1 253 236
/**
* Specifies the thickness of the rope, in pixels or in spatial units,
* depending on the render mode. See set_render_mode().
*
* The thickness may also be specified on a per-vertex basis. See
* set_use_vertex_thickness().
*/
59
inline void RopeNode::set_thickness(PN_stdfloat thickness);
503 13 get_thickness 0 4 541 23 RopeNode::get_thickness 0 1 254 67
/**
* Returns the thickness of the rope. See set_thickness().
*/
55
inline PN_stdfloat RopeNode::get_thickness(void) const;
504 10 set_matrix 0 4 541 20 RopeNode::set_matrix 0 1 255 207
/**
* Specifies an optional matrix which is used to transform each control vertex
* after it has been transformed into the RopeNode's coordinate space, but
* before the polygon vertices are generated.
*/
57
inline void RopeNode::set_matrix(LMatrix4 const &matrix);
505 12 clear_matrix 0 4 541 22 RopeNode::clear_matrix 0 1 256 67
/**
* Resets the node's matrix to identity. See set_matrix().
*/
41
inline void RopeNode::clear_matrix(void);
506 10 has_matrix 0 4 541 20 RopeNode::has_matrix 0 1 257 92
/**
* Returns true if the node has a matrix set, false otherwise. See
* set_matrix().
*/
45
inline bool RopeNode::has_matrix(void) const;
507 10 get_matrix 0 4 541 20 RopeNode::get_matrix 0 1 258 206
/**
* Returns the optional matrix which is used to transform each control vertex
* after it has been transformed into the RopeNode's coordinate space, but
* before the polygon vertices are generated.
*/
56
inline LMatrix4 const &RopeNode::get_matrix(void) const;
508 11 reset_bound 0 4 541 21 RopeNode::reset_bound 0 1 259 206
/**
* Recomputes the bounding volume. This is normally called automatically, but
* it must occasionally be called explicitly when the curve has changed
* properties outside of this node's knowledge.
*/
51
void RopeNode::reset_bound(NodePath const &rel_to);
509 14 get_class_type 0 4 541 24 RopeNode::get_class_type 0 1 260 0
49
static TypeHandle RopeNode::get_class_type(void);
510 9 ~RopeNode 0 4 541 19 RopeNode::~RopeNode 0 0 0
26
RopeNode::~RopeNode(void);
511 9 SheetNode 0 4 553 20 SheetNode::SheetNode 0 1 261 22
/**
*
*/
/**
*
*/
55
explicit SheetNode::SheetNode(std::string const &name);
512 11 set_surface 0 4 553 22 SheetNode::set_surface 0 1 262 68
/**
* Sets the particular surface represented by the SheetNode.
*/
67
inline void SheetNode::set_surface(NurbsSurfaceEvaluator *surface);
513 11 get_surface 0 4 553 22 SheetNode::get_surface 0 1 263 60
/**
* Returns the surface represented by the SheetNode.
*/
65
inline NurbsSurfaceEvaluator *SheetNode::get_surface(void) const;
514 20 set_use_vertex_color 0 4 553 31 SheetNode::set_use_vertex_color 0 1 264 269
/**
* Sets the "use vertex color" flag. When this is true, the R, G, B, A vertex
* color is assumed to be stored as the dimensions 0, 1, 2, 3, respectively,
* of the extended vertex values. Use
* NurbsCurveEvaluator::set_extended_vertex() to set these values.
*/
55
inline void SheetNode::set_use_vertex_color(bool flag);
515 20 get_use_vertex_color 0 4 553 31 SheetNode::get_use_vertex_color 0 1 265 76
/**
* Returns the "use vertex color" flag. See set_use_vertex_color().
*/
56
inline bool SheetNode::get_use_vertex_color(void) const;
516 16 set_num_u_subdiv 0 4 553 27 SheetNode::set_num_u_subdiv 0 1 266 178
/**
* Specifies the number of subdivisions per cubic segment (that is, per unique
* knot value) to draw in a fixed uniform tesselation of the surface in the U
* direction.
*/
58
inline void SheetNode::set_num_u_subdiv(int num_u_subdiv);
517 16 get_num_u_subdiv 0 4 553 27 SheetNode::get_num_u_subdiv 0 1 267 119
/**
* Returns the number of subdivisions per cubic segment to draw in the U
* direction. See set_num_u_subdiv().
*/
51
inline int SheetNode::get_num_u_subdiv(void) const;
518 16 set_num_v_subdiv 0 4 553 27 SheetNode::set_num_v_subdiv 0 1 268 178
/**
* Specifies the number of subdivisions per cubic segment (that is, per unique
* knot value) to draw in a fixed uniform tesselation of the surface in the V
* direction.
*/
58
inline void SheetNode::set_num_v_subdiv(int num_v_subdiv);
519 16 get_num_v_subdiv 0 4 553 27 SheetNode::get_num_v_subdiv 0 1 269 119
/**
* Returns the number of subdivisions per cubic segment to draw in the V
* direction. See set_num_v_subdiv().
*/
51
inline int SheetNode::get_num_v_subdiv(void) const;
520 11 reset_bound 0 4 553 22 SheetNode::reset_bound 0 1 270 208
/**
* Recomputes the bounding volume. This is normally called automatically, but
* it must occasionally be called explicitly when the surface has changed
* properties outside of this node's knowledge.
*/
52
void SheetNode::reset_bound(NodePath const &rel_to);
521 14 get_class_type 0 4 553 25 SheetNode::get_class_type 0 1 271 0
50
static TypeHandle SheetNode::get_class_type(void);
522 10 ~SheetNode 0 4 553 21 SheetNode::~SheetNode 0 0 0
28
SheetNode::~SheetNode(void);
271
1 0 0 6 3 546 0 0 164 /**
* Returns true if the curve is defined. This base class function always
* returns true; derived classes might override this to sometimes return
* false.
*/ 1 4 this 3 554
2 0 0 6 4 529 0 0 237 /**
* 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.
*/ 1 4 this 3 554
3 0 0 4 5 556 0 0 389 /**
* 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.
*/ 2 4 this 3 528 4 type 1 540
4 0 0 6 6 540 0 0 91 /**
* Returns the flag indicating the use to which the curve is intended to be
* put.
*/ 1 4 this 3 554
5 0 0 4 7 556 0 0 324 /**
* 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.
*/ 2 4 this 3 528 3 num 1 540
6 0 0 6 8 540 0 0 267 /**
* 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.
*/ 1 4 this 3 554
7 0 0 6 9 529 0 0 86 /**
* Approximates the length of the entire curve to within a few decimal places.
*/ 1 4 this 3 554
8 0 0 6 9 529 0 0 100 /**
* Approximates the length of the curve segment from parametric time 'from' to
* time 'to'.
*/ 3 4 this 3 554 4 from 1 529 2 to 1 529
9 0 0 6 10 529 0 0 396 /**
* 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.
*/ 3 4 this 3 554 7 start_t 1 529 13 length_offset 1 529
10 0 0 6 11 546 0 0 0 3 4 this 3 554 1 t 1 529 5 point 1 557
11 0 0 6 12 546 0 0 0 3 4 this 3 554 1 t 1 529 7 tangent 1 557
12 0 0 6 13 546 0 0 0 4 4 this 3 554 1 t 1 529 5 point 1 557 7 tangent 1 557
13 0 0 6 14 546 0 0 0 3 4 this 3 554 1 t 1 529 8 tangent2 1 557
14 0 0 6 15 546 0 0 144 /**
* 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.
*/ 5 4 this 3 528 1 t 1 529 2 px 1 529 2 py 1 529 2 pz 1 529
15 0 0 6 16 546 0 0 129 /**
* Recomputes the curve such that it has the tangent (tx, ty, tz) at time t,
* but keeps the same position at the point.
*/ 5 4 this 3 528 1 t 1 529 2 tx 1 529 2 ty 1 529 2 tz 1 529
16 0 0 6 17 546 0 0 116 /**
* Recomputes the curve such that it passes through the point (px, py, pz)
* with the tangent (tx, ty, tz).
*/ 8 4 this 3 528 1 t 1 529 2 px 1 529 2 py 1 529 2 pz 1 529 2 tx 1 529 2 ty 1 529 2 tz 1 529
17 0 0 6 18 546 0 0 115 /**
* Recalculates the curve, if necessary. Returns true if the resulting curve
* is valid, false otherwise.
*/ 1 4 this 3 528
18 0 0 6 19 546 0 0 259 /**
* 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.
*/ 3 4 this 3 528 1 a 1 554 1 b 1 554
19 0 0 6 20 546 0 0 138 /**
* Writes an egg description of the nurbs curve to the specified output file.
* Returns true if the file is successfully written.
*/ 3 4 this 3 528 8 filename 1 560 2 cs 1 562
20 0 0 6 20 546 0 0 141 /**
* Writes an egg description of the nurbs curve to the specified output
* stream. Returns true if the file is successfully written.
*/ 4 4 this 3 528 3 out 1 563 8 filename 1 565 2 cs 1 562
21 0 0 7 21 568 0 0 0 0
22 0 0 7 23 568 0 0 0 0
23 0 0 7 26 569 0 0 10 /**
*
*/ 0
24 0 0 7 26 569 0 0 0 1 6 param0 0 570
25 0 0 4 27 556 0 0 56 /**
* Adds a new ParametricCurve to the collection.
*/ 2 4 this 3 569 5 curve 1 528
26 0 0 4 27 556 0 0 134 /**
* Adds a new ParametricCurve to the collection at the indicated index.
* @deprecated Use insert_curve(index, curve) instead.
*/ 3 4 this 3 569 5 curve 1 528 5 index 1 540
27 0 0 4 28 556 0 0 79 /**
* Adds a new ParametricCurve to the collection at the indicated index.
*/ 3 4 this 3 569 5 index 1 572 5 curve 1 528
28 0 0 6 29 540 0 0 120 /**
* Adds all the curves found in the scene graph rooted at the given node.
* Returns the number of curves found.
*/ 2 4 this 3 569 4 node 1 574
29 0 0 6 30 546 0 0 160 /**
* Removes the indicated ParametricCurve from the collection. Returns true if
* the curve was removed, false if it was not a member of the collection.
*/ 2 4 this 3 569 5 curve 1 528
30 0 0 4 30 556 0 0 93 /**
* Removes the indicated ParametricCurve from the collection, by its index
* number.
*/ 2 4 this 3 569 5 index 1 572
31 0 0 4 31 556 0 0 94 /**
* Replaces the indicated ParametricCurve from the collection, by its index
* number.
*/ 3 4 this 3 569 5 index 1 572 5 curve 1 528
32 0 0 6 32 546 0 0 104 /**
* Returns true if the indicated ParametricCurve appears in this collection,
* false otherwise.
*/ 2 4 this 3 570 5 curve 1 528
33 0 0 4 33 556 0 0 60 /**
* Removes all ParametricCurves from the collection.
*/ 1 4 this 3 569
34 0 0 4 34 556 0 0 63 /**
* Removes all the timewarp curves from the collection.
*/ 1 4 this 3 569
35 0 0 6 35 540 0 0 68 /**
* Returns the number of ParametricCurves in the collection.
*/ 1 4 this 3 570
36 0 0 7 36 528 0 0 61 /**
* Returns the nth ParametricCurve in the collection.
*/ 2 4 this 3 570 5 index 1 540
37 0 0 7 38 528 0 0 95 /**
* Returns the first XYZ curve in the collection, if any, or NULL if there are
* none.
*/ 1 4 this 3 570
38 0 0 7 39 528 0 0 95 /**
* Returns the first HPR curve in the collection, if any, or NULL if there are
* none.
*/ 1 4 this 3 570
39 0 0 7 40 528 0 0 180 /**
* If there is an XYZ curve in the collection, returns it; otherwise, returns
* the first curve whose type is unspecified. Returns NULL if no curve meets
* the criteria.
*/ 1 4 this 3 570
40 0 0 6 41 540 0 0 67 /**
* Returns the number of timewarp curves in the collection.
*/ 1 4 this 3 570
41 0 0 7 42 528 0 0 60 /**
* Returns the nth timewarp curve in the collection.
*/ 2 4 this 3 570 1 n 1 540
42 0 0 6 44 529 0 0 170 /**
* Returns the maximum T value associated with the *last* curve in the
* collection. Normally, this will be either the XYZ or HPR curve, or a
* timewarp curve.
*/ 1 4 this 3 570
43 0 0 4 56 556 0 0 539 /**
* Discards all existing timewarp curves and recomputes a new timewarp curve
* that maps distance along the curve to parametric time, so that the distance
* between any two points in parametric time is proportional to the
* approximate distance of those same two points along the XYZ curve.
*
* segments_per_unit represents the number of segments to take per each unit
* of parametric time of the original XYZ curve.
*
* The new timewarp curve (and thus, the apparent range of the collection)
* will range from 0 to max_t.
*/ 3 4 this 3 569 5 max_t 1 529 17 segments_per_unit 1 529
44 0 0 4 57 556 0 0 179 /**
* Discards the existing HPR curve and generates a new one that looks in the
* direction of travel along the XYZ curve, based on the XYZ curve's tangent
* at each point.
*/ 2 4 this 3 569 17 segments_per_unit 1 529
45 0 0 4 58 556 0 0 277 /**
* Adjusts the apparent length of the curve by applying a new timewarp that
* maps the range [0..max_t] to the range [0..get_max_t()]. After this call,
* the curve collection will contain one more timewarp curve, and get_max_t()
* will return the given max_t value.
*/ 2 4 this 3 569 5 max_t 1 529
46 0 0 6 59 546 0 0 508 /**
* Computes the transform matrix representing translation to the position
* indicated by the first XYZ curve in the collection and the rotation
* indicated by the first HPR curve in the collection, after t has been
* modified by all the timewarp curves in the collection applied in sequence,
* from back to front.
*
* Returns true if the point is valid (i.e. t is within the bounds indicated
* by all the timewarp curves and within the bounds of the curves themselves),
* or false otherwise.
*/ 4 4 this 3 570 1 t 1 529 6 result 1 575 2 cs 1 562
47 0 0 6 59 546 0 0 433 /**
* Computes the position and rotation represented by the first XYZ and HPR
* curves in the collection at the given point t, after t has been modified by
* all the timewarp curves in the collection applied in sequence, from back to
* front.
*
* Returns true if the point is valid (i.e. t is within the bounds indicated
* by all the timewarp curves and within the bounds of the curves themselves),
* or false otherwise.
*/ 4 4 this 3 570 1 t 1 529 3 xyz 1 557 3 hpr 1 557
48 0 0 6 60 529 0 0 219 /**
* Determines the value of t that should be passed to the XYZ and HPR curves,
* after applying the given value of t to all the timewarps. Return -1.0f if
* the value of t exceeds one of the timewarps' ranges.
*/ 2 4 this 3 570 1 t 1 529
49 0 0 6 61 546 0 0 69 /**
* Computes only the XYZ part of the curves. See evaluate().
*/ 3 4 this 3 570 1 t 1 529 3 xyz 1 557
50 0 0 6 62 546 0 0 69 /**
* Computes only the HPR part of the curves. See evaluate().
*/ 3 4 this 3 570 1 t 1 529 3 hpr 1 557
51 0 0 6 63 546 0 0 208 /**
* Adjust the XYZ curve at the indicated time to the new value. The curve
* shape will change correspondingly. Returns true if successful, false if
* unable to make the adjustment for some reason.
*/ 3 4 this 3 569 1 t 1 529 3 xyz 1 576
52 0 0 6 63 546 0 0 208 /**
* Adjust the XYZ curve at the indicated time to the new value. The curve
* shape will change correspondingly. Returns true if successful, false if
* unable to make the adjustment for some reason.
*/ 5 4 this 3 569 1 t 1 529 1 x 1 529 1 y 1 529 1 z 1 529
53 0 0 6 64 546 0 0 208 /**
* Adjust the HPR curve at the indicated time to the new value. The curve
* shape will change correspondingly. Returns true if successful, false if
* unable to make the adjustment for some reason.
*/ 3 4 this 3 569 1 t 1 529 3 xyz 1 576
54 0 0 6 64 546 0 0 208 /**
* Adjust the HPR curve at the indicated time to the new value. The curve
* shape will change correspondingly. Returns true if successful, false if
* unable to make the adjustment for some reason.
*/ 5 4 this 3 569 1 t 1 529 1 h 1 529 1 p 1 529 1 r 1 529
55 0 0 6 65 546 0 0 153 /**
* Ensures all the curves are freshly computed and up-to-date. Returns true
* if everything is valid, false if at least one curve is incorrect.
*/ 1 4 this 3 569
56 0 0 6 66 546 0 0 262 /**
* 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'. This
* will lose any timewarps on the input curves.
*
* Returns true if successful, false on failure.
*/ 3 4 this 3 569 1 a 1 570 1 b 1 570
57 0 0 4 67 556 0 0 114 /**
* Writes a brief one-line description of the ParametricCurveCollection to the
* indicated output stream.
*/ 2 4 this 3 570 3 out 1 563
58 0 0 4 68 556 0 0 119 /**
* Writes a complete multi-line description of the ParametricCurveCollection
* to the indicated output stream.
*/ 3 4 this 3 570 3 out 1 563 12 indent_level 1 540
59 0 0 6 69 546 0 0 162 /**
* Writes an egg description of all the nurbs curves in the collection to the
* specified output file. Returns true if the file is successfully written.
*/ 3 4 this 3 569 8 filename 1 560 2 cs 1 562
60 0 0 6 69 546 0 0 164 /**
* Writes an egg description of all the nurbs curves in the collection to the
* specified output stream. Returns true if the file is successfully written.
*/ 4 4 this 3 569 3 out 1 563 8 filename 1 565 2 cs 1 562
61 0 0 7 71 578 326 0 10 /**
*
*/ 0
62 0 0 7 71 578 326 0 0 1 6 param0 0 579
63 0 0 4 73 556 0 0 114 /**
* Removes all the data points previously added to the CurveFitter, and
* initializes it for a new curve.
*/ 1 4 this 3 578
64 0 0 4 74 556 0 0 36 /**
* Adds a single sample xyz.
*/ 3 4 this 3 578 1 t 1 529 3 xyz 1 576
65 0 0 4 75 556 0 0 36 /**
* Adds a single sample hpr.
*/ 3 4 this 3 578 1 t 1 529 3 hpr 1 576
66 0 0 4 76 556 0 0 57 /**
* Adds a single sample xyz & hpr simultaneously.
*/ 4 4 this 3 578 1 t 1 529 3 xyz 1 576 3 hpr 1 576
67 0 0 6 77 540 0 0 68 /**
* Returns the number of sample points that have been added.
*/ 1 4 this 3 579
68 0 0 6 78 529 0 0 64 /**
* Returns the parametric value of the nth sample added.
*/ 2 4 this 3 579 1 n 1 540
69 0 0 7 79 557 0 0 62 /**
* Returns the point in space of the nth sample added.
*/ 2 4 this 3 579 1 n 1 540
70 0 0 7 80 557 0 0 59 /**
* Returns the orientation of the nth sample added.
*/ 2 4 this 3 579 1 n 1 540
71 0 0 7 81 557 0 0 143 /**
* Returns the tangent associated with the nth sample added. This is only
* meaningful if compute_tangents() has already been called.
*/ 2 4 this 3 579 1 n 1 540
72 0 0 4 82 556 0 0 108 /**
* Eliminates all samples from index begin, up to but not including index end,
* from the database.
*/ 3 4 this 3 578 5 begin 1 540 3 end 1 540
73 0 0 4 83 556 0 0 223 /**
* Generates a series of data points by sampling the given curve (or xyz/hpr
* curves) the indicated number of times. The sampling is made evenly in
* parametric time, and then the timewarps, if any, are applied.
*/ 3 4 this 3 578 6 curves 1 569 5 count 1 540
74 0 0 4 84 556 0 0 165 /**
* Resets each HPR data point so that the maximum delta between any two
* consecutive points is 180 degrees, which should prevent incorrect HPR
* wrapping.
*/ 1 4 this 3 578
75 0 0 4 85 556 0 0 115 /**
* Sorts all the data points in order by parametric time, in case they were
* added in an incorrect order.
*/ 1 4 this 3 578
76 0 0 4 86 556 0 0 175 /**
* Removes sample points in order to reduce the complexity of a sampled curve.
* Keeps one out of every factor samples. Also keeps the first and the last
* samples.
*/ 2 4 this 3 578 6 factor 1 529
77 0 0 4 87 556 0 0 231 /**
* Once a set of points has been built, and prior to calling MakeHermite() or
* MakeNurbs(), ComputeTangents() must be called to set up the tangents
* correctly (unless the tangents were defined as the points were added).
*/ 2 4 this 3 578 5 scale 1 529
78 0 0 7 88 569 0 0 72 /**
* Converts the current set of data points into a Hermite curve.
*/ 1 4 this 3 579
79 0 0 7 89 569 0 0 134 /**
* Converts the current set of data points into a NURBS curve. This gives a
* smoother curve than produced by MakeHermite().
*/ 1 4 this 3 579
80 0 0 4 90 556 0 0 10 /**
*
*/ 2 4 this 3 579 3 out 1 563
81 0 0 4 91 556 0 0 10 /**
*
*/ 2 4 this 3 579 3 out 1 563
82 0 0 7 92 568 0 0 0 0
83 0 0 7 94 581 0 0 10 /**
*
*/ 0
84 0 0 7 95 568 0 0 0 0
85 0 0 7 97 582 0 0 10 /**
*
*/ 0
86 0 0 7 97 582 0 0 80 /**
* Constructs a Hermite from the indicated (possibly non-hermite) curve.
*/ 1 2 pc 1 554
87 0 0 6 98 540 0 0 51 /**
* Returns the number of CV's in the curve.
*/ 1 4 this 3 583
88 0 0 6 99 540 0 0 547 /**
* Inserts a new CV at the given parametric point along the curve. If this
* parametric point is already on the curve, the CV is assigned an index
* between its two neighbors and the indices of all following CV's are
* incremented by 1; its in and out tangents are chosen to keep the curve
* consistent. If the new parametric point is beyond the end of the existing
* curve, the curve is extended to meet it and the new CV's position, in
* tangent, and out tangent are set to zero.
*
* The index number of the new CV is returned.
*/ 2 4 this 3 582 1 t 1 529
89 0 0 6 100 540 0 0 0 3 4 this 3 582 4 type 1 540 1 v 1 576
90 0 0 6 100 540 0 0 149 /**
* Adds a new CV to the end of the curve. The new CV is given initial in/out
* tangents of 0. The return value is the index of the new CV.
*/ 5 4 this 3 582 4 type 1 540 1 x 1 529 1 y 1 529 1 z 1 529
91 0 0 6 101 546 0 0 100 /**
* Removes the given CV from the curve. Returns true if the CV existed, false
* otherwise.
*/ 2 4 this 3 582 1 n 1 540
92 0 0 4 102 556 0 0 43 /**
* Removes all CV's from the curve.
*/ 1 4 this 3 582
93 0 0 6 103 546 0 0 544 /**
* Changes the given CV's continuity type. Legal values are HC_CUT, HC_FREE,
* HC_G1, or HC_SMOOTH.
*
* Other than HC_CUT, these have no effect on the actual curve; it remains up
* to user software to impose the constraints these imply.
*
* HC_CUT implies a disconnection of the curve; HC_FREE imposes no constraints
* on the tangents; HC_G1 forces the tangents to be collinear, and HC_SMOOTH
* forces the tangents to be identical. Setting type type to HC_G1 or
* HC_SMOOTH may adjust the out tangent to match the in tangent.
*/ 3 4 this 3 582 1 n 1 540 4 type 1 540
94 0 0 6 104 546 0 0 0 3 4 this 3 582 1 n 1 540 1 v 1 576
95 0 0 6 104 546 0 0 43 /**
* Changes the given CV's position.
*/ 5 4 this 3 582 1 n 1 540 1 x 1 529 1 y 1 529 1 z 1 529
96 0 0 6 105 546 0 0 0 3 4 this 3 582 1 n 1 540 1 v 1 576
97 0 0 6 105 546 0 0 121 /**
* Changes the given CV's in tangent. Depending on the continuity type, this
* may also adjust the out tangent.
*/ 5 4 this 3 582 1 n 1 540 1 x 1 529 1 y 1 529 1 z 1 529
98 0 0 6 106 546 0 0 0 3 4 this 3 582 1 n 1 540 1 v 1 576
99 0 0 6 106 546 0 0 121 /**
* Changes the given CV's out tangent. Depending on the continuity type, this
* may also adjust the in tangent.
*/ 5 4 this 3 582 1 n 1 540 1 x 1 529 1 y 1 529 1 z 1 529
100 0 0 6 107 546 0 0 103 /**
* Changes the given CV's parametric starting time. This may affect the shape
* of the curve.
*/ 3 4 this 3 582 1 n 1 540 6 tstart 1 529
101 0 0 6 108 546 0 0 60 /**
* Changes the name associated with a particular CV.
*/ 3 4 this 3 582 1 n 1 540 4 name 1 585
102 0 0 6 109 540 0 0 120 /**
* Returns the given CV's continuity type, HC_CUT, HC_FREE, HC_G1, or
* HC_SMOOTH, or 0 if there is no such CV.
*/ 2 4 this 3 583 1 n 1 540
103 0 0 6 110 576 0 0 48 /**
* Returns the position of the given CV.
*/ 2 4 this 3 583 1 n 1 540
104 0 0 4 110 556 0 0 0 3 4 this 3 583 1 n 1 540 1 v 1 557
105 0 0 6 111 576 0 0 50 /**
* Returns the in tangent of the given CV.
*/ 2 4 this 3 583 1 n 1 540
106 0 0 4 111 556 0 0 0 3 4 this 3 583 1 n 1 540 1 v 1 557
107 0 0 6 112 576 0 0 51 /**
* Returns the out tangent of the given CV.
*/ 2 4 this 3 583 1 n 1 540
108 0 0 4 112 556 0 0 0 3 4 this 3 583 1 n 1 540 1 v 1 557
109 0 0 6 113 529 0 0 74 /**
* Returns the starting point in parametric space of the given CV.
*/ 2 4 this 3 583 1 n 1 540
110 0 0 6 114 585 0 0 53 /**
* Returns the name of the given CV, or NULL.
*/ 2 4 this 3 583 1 n 1 540
111 0 0 4 115 556 0 0 10 /**
*
*/ 3 4 this 3 583 3 out 1 563 1 n 1 540
112 0 0 7 116 568 0 0 0 0
113 0 0 4 119 556 0 0 0 2 4 this 3 586 5 order 1 540
114 0 0 6 120 540 0 0 0 1 4 this 3 587
115 0 0 6 121 540 0 0 0 1 4 this 3 587
116 0 0 6 122 540 0 0 0 1 4 this 3 587
117 0 0 6 123 546 0 0 0 2 4 this 3 586 1 t 1 529
118 0 0 6 124 540 0 0 10 /**
*
*/ 2 4 this 3 586 1 v 1 576
119 0 0 6 124 540 0 0 10 /**
*
*/ 2 4 this 3 586 1 v 1 589
120 0 0 6 124 540 0 0 10 /**
*
*/ 4 4 this 3 586 1 x 1 529 1 y 1 529 1 z 1 529
121 0 0 6 125 546 0 0 0 2 4 this 3 586 1 n 1 540
122 0 0 4 126 556 0 0 0 1 4 this 3 586
123 0 0 6 127 546 0 0 86 /**
* Repositions the indicated CV. Returns true if successful, false otherwise.
*/ 3 4 this 3 586 1 n 1 540 1 v 1 576
124 0 0 6 127 546 0 0 86 /**
* Repositions the indicated CV. Returns true if successful, false otherwise.
*/ 5 4 this 3 586 1 n 1 540 1 x 1 529 1 y 1 529 1 z 1 529
125 0 0 7 128 557 0 0 52 /**
* Returns the position of the indicated CV.
*/ 2 4 this 3 587 1 n 1 540
126 0 0 6 129 546 0 0 94 /**
* Sets the weight of the indicated CV without affecting its position in 3-d
* space.
*/ 3 4 this 3 586 1 n 1 540 1 w 1 529
127 0 0 6 130 529 0 0 50 /**
* Returns the weight of the indicated CV.
*/ 2 4 this 3 587 1 n 1 540
128 0 0 6 131 546 0 0 0 3 4 this 3 586 1 n 1 540 1 v 1 589
129 0 0 7 132 593 0 0 0 2 4 this 3 587 1 n 1 540
130 0 0 6 133 546 0 0 0 3 4 this 3 586 1 n 1 540 1 t 1 529
131 0 0 6 134 529 0 0 0 2 4 this 3 587 1 n 1 540
132 0 0 4 137 556 0 0 10 /**
*
*/ 3 4 this 3 587 3 out 1 563 1 n 1 540
133 0 0 7 138 568 0 0 0 0
134 0 0 7 144 594 393 0 10 /**
*
*/ 0
135 0 0 7 144 594 393 0 94 /**
* Constructs a NURBS curve equivalent to the indicated (possibly non-NURBS)
* curve.
*/ 1 2 pc 1 554
136 0 0 7 146 568 0 0 0 0
137 0 0 7 140 581 0 0 0 1 4 this 3 594
138 0 0 6 142 586 0 0 0 1 4 this 3 594
139 0 0 7 166 597 0 0 0 1 6 param0 0 595
140 0 0 6 148 529 0 0 81 /**
* Returns the first legal value of t on the curve. Usually this is 0.0.
*/ 1 4 this 3 595
141 0 0 6 149 529 0 0 58 /**
* Returns the last legal value of t on the curve.
*/ 1 4 this 3 595
142 0 0 6 150 546 0 0 158 /**
* Computes the point on the curve corresponding to the indicated value in
* parametric time. Returns true if the t value is valid, false otherwise.
*/ 3 4 this 3 597 1 t 1 529 5 point 1 557
143 0 0 6 151 546 0 0 193 /**
* 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().
*/ 3 4 this 3 597 1 t 1 529 7 tangent 1 557
144 0 0 6 152 529 0 0 145 /**
* Evaluates the curve in n-dimensional space according to the extended
* vertices associated with the curve in the indicated dimension.
*/ 3 4 this 3 597 1 t 1 529 1 d 1 540
145 0 0 6 153 546 0 0 248 /**
* 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.
*/ 5 4 this 3 597 1 t 1 529 1 d 1 540 6 result 1 598 10 num_values 1 540
146 0 0 6 154 540 0 0 170 /**
* Returns the number of piecewise continuous segments within the curve. This
* number is usually not important unless you plan to call
* eval_segment_point().
*/ 1 4 this 3 595
147 0 0 4 155 556 0 0 637 /**
* 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.
*/ 4 4 this 3 595 7 segment 1 540 1 t 1 529 5 point 1 557
148 0 0 4 156 556 0 0 207 /**
* 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.
*/ 4 4 this 3 595 7 segment 1 540 1 t 1 529 7 tangent 1 557
149 0 0 6 157 529 0 0 145 /**
* Evaluates the curve in n-dimensional space according to the extended
* vertices associated with the curve in the indicated dimension.
*/ 4 4 this 3 595 7 segment 1 540 1 t 1 529 1 d 1 540
150 0 0 4 158 556 0 0 248 /**
* 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.
*/ 6 4 this 3 595 7 segment 1 540 1 t 1 529 1 d 1 540 6 result 1 598 10 num_values 1 540
151 0 0 6 159 529 0 0 217 /**
* 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()).
*/ 3 4 this 3 595 7 segment 1 540 1 t 1 529
152 0 0 4 160 556 0 0 330 /**
* 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().
*/ 2 4 this 3 597 9 tolerance 1 529
153 0 0 6 161 540 0 0 102 /**
* Returns the number of sample points generated by the previous call to
* adaptive_sample().
*/ 1 4 this 3 595
154 0 0 6 162 529 0 0 110 /**
* Returns the t value of the nth sample point generated by the previous call
* to adaptive_sample().
*/ 2 4 this 3 595 1 n 1 540
155 0 0 6 163 599 0 0 252 /**
* 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().
*/ 2 4 this 3 595 1 n 1 540
156 0 0 7 168 545 0 0 10 /**
*
*/ 0
157 0 0 7 168 545 0 0 0 1 6 param0 0 603
158 0 0 4 169 556 0 0 224 /**
* Sets the order of the curve. This resets the knot vector to the default
* knot vector for the number of vertices.
*
* The order must be 1, 2, 3, or 4, and the value is one more than the degree
* of the curve.
*/ 2 4 this 3 545 5 order 1 540
159 0 0 6 170 540 0 0 83 /**
* Returns the order of the curve as set by a previous call to set_order().
*/ 1 4 this 3 603
160 0 0 4 171 556 0 0 231 /**
* Resets all the vertices and knots to their default values, and sets the
* curve up with the indicated number of vertices. You must then call
* set_vertex() repeatedly to fill in all of the vertex values appropriately.
*/ 2 4 this 3 545 12 num_vertices 1 540
161 0 0 6 172 540 0 0 122 /**
* Returns the number of control vertices in the curve. This is the number
* passed to the last call to reset().
*/ 1 4 this 3 603
162 0 0 4 173 556 0 0 194 /**
* Sets the nth control vertex of the curve. This flavor sets the vertex as a
* 3-d coordinate and a weight; the 3-d coordinate values are implicitly
* scaled up by the weight factor.
*/ 4 4 this 3 545 1 i 1 540 6 vertex 1 576 6 weight 1 529
163 0 0 4 173 556 0 0 245 /**
* Sets the nth control vertex of the curve, as a vertex in 4-d homogeneous
* space. In this form, the first three components of the vertex should
* already have been scaled by the fourth component, which is the homogeneous
* weight.
*/ 3 4 this 3 545 1 i 1 540 6 vertex 1 589
164 0 0 6 174 589 0 0 102 /**
* Returns the nth control vertex of the curve, relative to its indicated
* coordinate space.
*/ 2 4 this 3 603 1 i 1 540
165 0 0 7 174 593 0 0 98 /**
* Returns the nth control vertex of the curve, relative to the given
* coordinate space.
*/ 3 4 this 3 603 1 i 1 540 6 rel_to 1 605
166 0 0 4 176 556 0 0 429 /**
* Sets the coordinate space of the nth control vertex. If this is not
* specified, or is set to an empty NodePath, the nth control vertex is deemed
* to be in the coordinate space passed to evaluate().
*
* This specifies the space as a fixed NodePath, which is always the same
* NodePath. Also see setting the space as a path string, which can specify a
* different NodePath for different instances of the curve.
*/ 3 4 this 3 545 1 i 1 540 5 space 1 605
167 0 0 4 176 556 0 0 361 /**
* Sets the coordinate space of the nth control vertex. If this is not
* specified, or is set to an empty string, the nth control vertex is deemed
* to be in the coordinate space passed to evaluate().
*
* This specifies the space as a string, which describes the path to find the
* node relative to the rel_to NodePath when the curve is evaluated.
*/ 3 4 this 3 545 1 i 1 540 5 space 1 585
168 0 0 7 177 608 0 0 107 /**
* Returns the coordinate space of the nth control vertex of the curve,
* expressed as a NodePath.
*/ 3 4 this 3 603 1 i 1 540 6 rel_to 1 605
169 0 0 4 178 556 0 0 768 /**
* Sets an n-dimensional vertex value. This allows definition of a NURBS
* surface or curve in a sparse n-dimensional space, typically used for
* associating additional properties (like color or joint membership) with
* each vertex of a surface.
*
* The value d is an arbitrary integer value and specifies the dimension of
* question for this particular vertex. Any number of dimensions may be
* specified, and they need not be consecutive. If a value for a given
* dimension is not specified, is it implicitly 0.0.
*
* The value is implicitly scaled by the homogenous weight value--that is, the
* fourth component of the value passed to set_vertex(). This means the
* ordinary vertex must be set first, before the extended vertices can be set.
*/ 4 4 this 3 545 1 i 1 540 1 d 1 540 5 value 1 529
170 0 0 6 179 529 0 0 172 /**
* Returns an n-dimensional vertex value. See set_extended_vertex(). This
* returns the value set for the indicated dimension, or 0.0 if nothing has
* been set.
*/ 3 4 this 3 603 1 i 1 540 1 d 1 540
171 0 0 4 180 556 0 0 259 /**
* Simultaneously sets several extended values in the slots d through (d +
* num_values - 1) from the num_values elements of the indicated array. This
* is equivalent to calling set_extended_vertex() num_values times. See
* set_extended_vertex().
*/ 5 4 this 3 545 1 i 1 540 1 d 1 540 6 values 1 609 10 num_values 1 540
172 0 0 6 181 540 0 0 117 /**
* Returns the number of knot values in the curve. This is based on the
* number of vertices and the order.
*/ 1 4 this 3 603
173 0 0 4 182 556 0 0 184 /**
* Sets the value of the nth knot. Each knot value should be greater than or
* equal to the preceding value. If no knot values are set, a default knot
* vector is supplied.
*/ 3 4 this 3 545 1 i 1 540 4 knot 1 529
174 0 0 6 183 529 0 0 45 /**
* Returns the value of the nth knot.
*/ 2 4 this 3 603 1 i 1 540
175 0 0 4 185 556 0 0 95 /**
* Normalizes the knot sequence so that the parametric range of the curve is 0
* .. 1.
*/ 1 4 this 3 545
176 0 0 6 186 540 0 0 114 /**
* Returns the number of piecewise continuous segments in the curve. This is
* based on the knot vector.
*/ 1 4 this 3 603
177 0 0 7 187 597 0 0 194 /**
* Returns a NurbsCurveResult object that represents the result of applying
* the knots to all of the current values of the vertices, transformed into
* the indicated coordinate space.
*/ 2 4 this 3 603 6 rel_to 1 605
178 0 0 7 187 597 0 0 251 /**
* Returns a NurbsCurveResult object that represents the result of applying
* the knots to all of the current values of the vertices, transformed into
* the indicated coordinate space, and then further transformed by the
* indicated matrix.
*/ 3 4 this 3 603 6 rel_to 1 605 3 mat 1 611
179 0 0 4 188 556 0 0 10 /**
*
*/ 2 4 this 3 603 3 out 1 563
180 0 0 7 206 614 0 0 0 1 6 param0 0 612
181 0 0 6 190 529 0 0 83 /**
* Returns the first legal value of u on the surface. Usually this is 0.0.
*/ 1 4 this 3 612
182 0 0 6 191 529 0 0 60 /**
* Returns the last legal value of u on the surface.
*/ 1 4 this 3 612
183 0 0 6 192 529 0 0 83 /**
* Returns the first legal value of v on the surface. Usually this is 0.0.
*/ 1 4 this 3 612
184 0 0 6 193 529 0 0 60 /**
* Returns the last legal value of v on the surface.
*/ 1 4 this 3 612
185 0 0 6 194 546 0 0 168 /**
* Computes the point on the surface corresponding to the indicated value in
* parametric time. Returns true if the u, v values are valid, false
* otherwise.
*/ 4 4 this 3 614 1 u 1 529 1 v 1 529 5 point 1 557
186 0 0 6 195 546 0 0 193 /**
* Computes the normal to the surface at the indicated point in parametric
* time. This normal vector will not necessarily be normalized, and could be
* zero. See also eval_point().
*/ 4 4 this 3 614 1 u 1 529 1 v 1 529 6 normal 1 557
187 0 0 6 196 529 0 0 149 /**
* Evaluates the surface in n-dimensional space according to the extended
* vertices associated with the surface in the indicated dimension.
*/ 4 4 this 3 614 1 u 1 529 1 v 1 529 1 d 1 540
188 0 0 6 197 546 0 0 248 /**
* 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.
*/ 6 4 this 3 614 1 u 1 529 1 v 1 529 1 d 1 540 6 result 1 598 10 num_values 1 540
189 0 0 6 198 540 0 0 191 /**
* Returns the number of piecewise continuous segments within the surface in
* the U direction. This number is usually not important unless you plan to
* call eval_segment_point().
*/ 1 4 this 3 612
190 0 0 6 199 540 0 0 191 /**
* Returns the number of piecewise continuous segments within the surface in
* the V direction. This number is usually not important unless you plan to
* call eval_segment_point().
*/ 1 4 this 3 612
191 0 0 4 200 556 0 0 656 /**
* Evaluates the point on the surface corresponding to the indicated value in
* parametric time within the indicated surface segment. u and v should be in
* the range [0, 1].
*
* The surface is internally represented as a number of connected (or possibly
* unconnected) piecewise continuous segments. The exact number of segments
* for a particular surface depends on the knot vector, and is returned by
* get_num_segments(). Normally, eval_point() is used to evaluate a point
* along the continuous surface, but when you care more about local
* continuity, you can use eval_segment_point() to evaluate the points along
* each segment.
*/ 6 4 this 3 612 2 ui 1 540 2 vi 1 540 1 u 1 529 1 v 1 529 5 point 1 557
192 0 0 4 201 556 0 0 176 /**
* As eval_segment_point, but computes the normal to the surface at the
* indicated point. The normal vector will not necessarily be normalized, and
* could be zero.
*/ 6 4 this 3 612 2 ui 1 540 2 vi 1 540 1 u 1 529 1 v 1 529 6 normal 1 557
193 0 0 6 202 529 0 0 149 /**
* Evaluates the surface in n-dimensional space according to the extended
* vertices associated with the surface in the indicated dimension.
*/ 6 4 this 3 612 2 ui 1 540 2 vi 1 540 1 u 1 529 1 v 1 529 1 d 1 540
194 0 0 4 203 556 0 0 248 /**
* 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.
*/ 8 4 this 3 612 2 ui 1 540 2 vi 1 540 1 u 1 529 1 v 1 529 1 d 1 540 6 result 1 598 10 num_values 1 540
195 0 0 6 204 529 0 0 219 /**
* Accepts a u value in the range [0, 1], and assumed to be relative to the
* indicated segment (as in eval_segment_point()), and returns the
* corresponding u value in the entire surface (as in eval_point()).
*/ 3 4 this 3 612 2 ui 1 540 1 u 1 529
196 0 0 6 205 529 0 0 219 /**
* Accepts a v value in the range [0, 1], and assumed to be relative to the
* indicated segment (as in eval_segment_point()), and returns the
* corresponding v value in the entire surface (as in eval_point()).
*/ 3 4 this 3 612 2 vi 1 540 1 v 1 529
197 0 0 7 208 615 0 0 10 /**
*
*/ 0
198 0 0 7 208 615 0 0 0 1 6 param0 0 616
199 0 0 4 209 556 0 0 247 /**
* Sets the order of the surface in the U direction. This resets the knot
* vector to the default knot vector for the number of vertices.
*
* The order must be 1, 2, 3, or 4, and the value is one more than the degree
* of the surface.
*/ 2 4 this 3 615 7 u_order 1 540
200 0 0 6 210 540 0 0 109 /**
* Returns the order of the surface in the U direction as set by a previous
* call to set_u_order().
*/ 1 4 this 3 616
201 0 0 4 211 556 0 0 247 /**
* Sets the order of the surface in the V direction. This resets the knot
* vector to the default knot vector for the number of vertices.
*
* The order must be 1, 2, 3, or 4, and the value is one more than the degree
* of the surface.
*/ 2 4 this 3 615 7 v_order 1 540
202 0 0 6 212 540 0 0 109 /**
* Returns the order of the surface in the V direction as set by a previous
* call to set_v_order().
*/ 1 4 this 3 616
203 0 0 4 213 556 0 0 233 /**
* Resets all the vertices and knots to their default values, and sets the
* surface up with the indicated number of vertices. You must then call
* set_vertex() repeatedly to fill in all of the vertex values appropriately.
*/ 3 4 this 3 615 14 num_u_vertices 1 540 14 num_v_vertices 1 540
204 0 0 6 214 540 0 0 142 /**
* Returns the number of control vertices in the U direction on the surface.
* This is the number passed to the last call to reset().
*/ 1 4 this 3 616
205 0 0 6 215 540 0 0 142 /**
* Returns the number of control vertices in the V direction on the surface.
* This is the number passed to the last call to reset().
*/ 1 4 this 3 616
206 0 0 4 216 556 0 0 196 /**
* Sets the nth control vertex of the surface. This flavor sets the vertex as
* a 3-d coordinate and a weight; the 3-d coordinate values are implicitly
* scaled up by the weight factor.
*/ 5 4 this 3 615 2 ui 1 540 2 vi 1 540 6 vertex 1 576 6 weight 1 529
207 0 0 4 216 556 0 0 247 /**
* Sets the nth control vertex of the surface, as a vertex in 4-d homogeneous
* space. In this form, the first three components of the vertex should
* already have been scaled by the fourth component, which is the homogeneous
* weight.
*/ 4 4 this 3 615 2 ui 1 540 2 vi 1 540 6 vertex 1 589
208 0 0 6 217 589 0 0 104 /**
* Returns the nth control vertex of the surface, relative to its indicated
* coordinate space.
*/ 3 4 this 3 616 2 ui 1 540 2 vi 1 540
209 0 0 7 217 593 0 0 100 /**
* Returns the nth control vertex of the surface, relative to the given
* coordinate space.
*/ 4 4 this 3 616 2 ui 1 540 2 vi 1 540 6 rel_to 1 605
210 0 0 4 218 556 0 0 431 /**
* Sets the coordinate space of the nth control vertex. If this is not
* specified, or is set to an empty NodePath, the nth control vertex is deemed
* to be in the coordinate space passed to evaluate().
*
* This specifies the space as a fixed NodePath, which is always the same
* NodePath. Also see setting the space as a path string, which can specify a
* different NodePath for different instances of the surface.
*/ 4 4 this 3 615 2 ui 1 540 2 vi 1 540 5 space 1 605
211 0 0 4 218 556 0 0 363 /**
* Sets the coordinate space of the nth control vertex. If this is not
* specified, or is set to an empty string, the nth control vertex is deemed
* to be in the coordinate space passed to evaluate().
*
* This specifies the space as a string, which describes the path to find the
* node relative to the rel_to NodePath when the surface is evaluated.
*/ 4 4 this 3 615 2 ui 1 540 2 vi 1 540 5 space 1 585
212 0 0 7 219 608 0 0 109 /**
* Returns the coordinate space of the nth control vertex of the surface,
* expressed as a NodePath.
*/ 4 4 this 3 616 2 ui 1 540 2 vi 1 540 6 rel_to 1 605
213 0 0 4 220 556 0 0 770 /**
* Sets an n-dimensional vertex value. This allows definition of a NURBS
* surface or surface in a sparse n-dimensional space, typically used for
* associating additional properties (like color or joint membership) with
* each vertex of a surface.
*
* The value d is an arbitrary integer value and specifies the dimension of
* question for this particular vertex. Any number of dimensions may be
* specified, and they need not be consecutive. If a value for a given
* dimension is not specified, is it implicitly 0.0.
*
* The value is implicitly scaled by the homogenous weight value--that is, the
* fourth component of the value passed to set_vertex(). This means the
* ordinary vertex must be set first, before the extended vertices can be set.
*/ 5 4 this 3 615 2 ui 1 540 2 vi 1 540 1 d 1 540 5 value 1 529
214 0 0 6 221 529 0 0 172 /**
* Returns an n-dimensional vertex value. See set_extended_vertex(). This
* returns the value set for the indicated dimension, or 0.0 if nothing has
* been set.
*/ 4 4 this 3 616 2 ui 1 540 2 vi 1 540 1 d 1 540
215 0 0 4 222 556 0 0 259 /**
* Simultaneously sets several extended values in the slots d through (d +
* num_values - 1) from the num_values elements of the indicated array. This
* is equivalent to calling set_extended_vertex() num_values times. See
* set_extended_vertex().
*/ 6 4 this 3 615 2 ui 1 540 2 vi 1 540 1 d 1 540 6 values 1 609 10 num_values 1 540
216 0 0 6 223 540 0 0 138 /**
* Returns the number of knot values in the surface in the U direction. This
* is based on the number of vertices and the order.
*/ 1 4 this 3 616
217 0 0 4 224 556 0 0 184 /**
* Sets the value of the nth knot. Each knot value should be greater than or
* equal to the preceding value. If no knot values are set, a default knot
* vector is supplied.
*/ 3 4 this 3 615 1 i 1 540 4 knot 1 529
218 0 0 6 225 529 0 0 45 /**
* Returns the value of the nth knot.
*/ 2 4 this 3 616 1 i 1 540
219 0 0 4 227 556 0 0 116 /**
* Normalizes the knot sequence so that the parametric range of the surface in
* the U direction is 0 .. 1.
*/ 1 4 this 3 615
220 0 0 6 228 540 0 0 138 /**
* Returns the number of knot values in the surface in the V direction. This
* is based on the number of vertices and the order.
*/ 1 4 this 3 616
221 0 0 4 229 556 0 0 184 /**
* Sets the value of the nth knot. Each knot value should be greater than or
* equal to the preceding value. If no knot values are set, a default knot
* vector is supplied.
*/ 3 4 this 3 615 1 i 1 540 4 knot 1 529
222 0 0 6 230 529 0 0 45 /**
* Returns the value of the nth knot.
*/ 2 4 this 3 616 1 i 1 540
223 0 0 4 232 556 0 0 116 /**
* Normalizes the knot sequence so that the parametric range of the surface in
* the U direction is 0 .. 1.
*/ 1 4 this 3 615
224 0 0 6 233 540 0 0 135 /**
* Returns the number of piecewise continuous segments in the surface in the U
* direction. This is based on the knot vector.
*/ 1 4 this 3 616
225 0 0 6 234 540 0 0 135 /**
* Returns the number of piecewise continuous segments in the surface in the V
* direction. This is based on the knot vector.
*/ 1 4 this 3 616
226 0 0 7 235 614 0 0 196 /**
* Returns a NurbsSurfaceResult object that represents the result of applying
* the knots to all of the current values of the vertices, transformed into
* the indicated coordinate space.
*/ 2 4 this 3 616 6 rel_to 1 605
227 0 0 4 236 556 0 0 10 /**
*
*/ 2 4 this 3 616 3 out 1 563
228 0 0 7 245 618 510 0 10 /**
*
*/ 1 4 name 1 585
229 0 0 4 249 556 0 0 65 /**
* Sets the particular curve represented by the RopeNode.
*/ 2 4 this 3 618 5 curve 1 545
230 0 0 7 250 545 0 0 57 /**
* Returns the curve represented by the RopeNode.
*/ 1 4 this 3 619
231 0 0 4 251 556 0 0 130 /**
* Specifies the method used to render the rope. The simplest is RM_thread,
* which just draws a one-pixel line segment.
*/ 2 4 this 3 618 11 render_mode 1 542
232 0 0 6 252 542 0 0 78 /**
* Returns the method used to render the rope. See set_render_mode().
*/ 1 4 this 3 619
233 0 0 4 253 556 0 0 72 /**
* Specifies the algorithm to use to generate UV's for the rope.
*/ 2 4 this 3 618 7 uv_mode 1 543
234 0 0 6 254 543 0 0 70 /**
* Returns the algorithm to use to generate UV's for the rope.
*/ 1 4 this 3 619
235 0 0 4 255 556 0 0 115 /**
* Specify true to vary the U coordinate down the length of the rope, or false
* to vary the V coordinate.
*/ 2 4 this 3 618 10 u_dominant 1 546
236 0 0 6 256 546 0 0 124 /**
* Returns true if the rope runs down the U coordinate of the texture, or
* false if it runs down the V coordinate.
*/ 1 4 this 3 619
237 0 0 4 257 556 0 0 206 /**
* Specifies an additional scaling factor to apply to generated UV's along the
* rope. This scale factor is applied in whichever direction is along the
* rope, as specified by set_uv_direction().
*/ 2 4 this 3 618 5 scale 1 529
238 0 0 6 258 529 0 0 78 /**
* Returns the scaling factor to apply to generated UV's for the rope.
*/ 1 4 this 3 619
239 0 0 4 259 556 0 0 192 /**
* Specifies the kind of normals to generate for the rope. This is only
* applicable when the RenderMode is set to RM_tube; in the other render
* modes, normals are never generated.
*/ 2 4 this 3 618 11 normal_mode 1 544
240 0 0 6 260 544 0 0 131 /**
* Returns the kind of normals to generate for the rope. This is only
* applicable when the RenderMode is set to RM_tube.
*/ 1 4 this 3 619
241 0 0 4 261 556 0 0 419 /**
* Specifies a normal vector, generally perpendicular to the main axis of the
* starting point of the curve, that controls the "top" of the curve, when
* RenderMode is RM_tube. This is used to orient the vertices that make up
* the tube. If this vector is too nearly parallel with the starting
* direction of the curve, there may be a tendency for the whole tube to
* gimble-lock around its primary axis.
*/ 2 4 this 3 618 7 tube_up 1 621
242 0 0 6 262 621 0 0 127 /**
* Returns the normal vector used to control the "top" of the curve, when
* RenderMode is RM_tube. See set_tube_up().
*/ 1 4 this 3 619
243 0 0 4 263 556 0 0 351 /**
* Sets the "use vertex color" flag. When this is true, the R, G, B, A vertex
* color is assumed to be stored as the dimensions n + 0, n + 1, n + 2, n + 3,
* respectively, of the extended vertex values, where n is the value returned
* by get_vertex_color_dimension(). Use
* NurbsCurveEvaluator::set_extended_vertex() to set these values.
*/ 2 4 this 3 618 4 flag 1 546
244 0 0 6 264 546 0 0 76 /**
* Returns the "use vertex color" flag. See set_use_vertex_color().
*/ 1 4 this 3 619
245 0 0 6 265 540 0 0 221 /**
* Returns the numeric extended dimension in which the color components should
* be found. See NurbsCurveEvaluator::set_extended_vertex().
*
* The color components will be expected at (n, n + 1, n + 2, n + 3).
*/ 0
246 0 0 4 266 556 0 0 154 /**
* Specifies the number of subdivisions per cubic segment (that is, per unique
* knot value) to draw in a fixed uniform tesselation of the curve.
*/ 2 4 this 3 618 10 num_subdiv 1 540
247 0 0 6 267 540 0 0 98 /**
* Returns the number of subdivisions per cubic segment to draw. See
* set_num_subdiv().
*/ 1 4 this 3 619
248 0 0 4 268 556 0 0 404 /**
* Specifies the number of radial subdivisions to make if RenderMode is
* RM_tube. It is ignored in the other render modes.
*
* Increasing this number increases the roundness of a cross-section of the
* tube. The minimum value for a dimensional tube is 3; setting it to 2 will
* get you a thin piece of tape (which is similar to RM_billboard, except it
* won't rotate to face the camera).
*/ 2 4 this 3 618 10 num_slices 1 540
249 0 0 6 269 540 0 0 153 /**
* Returns the number of radial subdivisions to make if RenderMode is RM_tube.
* It is ignored in the other render modes. See set_num_slices().
*/ 1 4 this 3 619
250 0 0 4 270 556 0 0 418 /**
* Sets the "use vertex thickness" flag. When this is true, the vertex
* thickness is assumed to be stored as the dimension
* get_vertex_thickness_dimension(), of the extended vertex values. Use
* NurbsCurveEvaluator::set_extended_vertex() to set these values.
*
* In this mode, the overall thickness is also applied as a scale to the
* vertex thickness. Not all render modes support vertex thickness.
*/ 2 4 this 3 618 4 flag 1 546
251 0 0 6 271 546 0 0 84 /**
* Returns the "use vertex thickness" flag. See set_use_vertex_thickness().
*/ 1 4 this 3 619
252 0 0 6 272 540 0 0 151 /**
* Returns the numeric extended dimension in which the thickness component
* should be found. See NurbsCurveEvaluator::set_extended_vertex().
*/ 0
253 0 0 4 273 556 0 0 236 /**
* Specifies the thickness of the rope, in pixels or in spatial units,
* depending on the render mode. See set_render_mode().
*
* The thickness may also be specified on a per-vertex basis. See
* set_use_vertex_thickness().
*/ 2 4 this 3 618 9 thickness 1 529
254 0 0 6 274 529 0 0 67 /**
* Returns the thickness of the rope. See set_thickness().
*/ 1 4 this 3 619
255 0 0 4 275 556 0 0 207 /**
* Specifies an optional matrix which is used to transform each control vertex
* after it has been transformed into the RopeNode's coordinate space, but
* before the polygon vertices are generated.
*/ 2 4 this 3 618 6 matrix 1 611
256 0 0 4 276 556 0 0 67 /**
* Resets the node's matrix to identity. See set_matrix().
*/ 1 4 this 3 618
257 0 0 6 277 546 0 0 92 /**
* Returns true if the node has a matrix set, false otherwise. See
* set_matrix().
*/ 1 4 this 3 619
258 0 0 6 278 611 0 0 206 /**
* Returns the optional matrix which is used to transform each control vertex
* after it has been transformed into the RopeNode's coordinate space, but
* before the polygon vertices are generated.
*/ 1 4 this 3 619
259 0 0 4 279 556 0 0 206 /**
* Recomputes the bounding volume. This is normally called automatically, but
* it must occasionally be called explicitly when the curve has changed
* properties outside of this node's knowledge.
*/ 2 4 this 3 618 6 rel_to 1 605
260 0 0 7 303 568 0 0 0 0
261 0 0 7 306 622 522 0 10 /**
*
*/ 1 4 name 1 585
262 0 0 4 307 556 0 0 68 /**
* Sets the particular surface represented by the SheetNode.
*/ 2 4 this 3 622 7 surface 1 615
263 0 0 7 308 615 0 0 60 /**
* Returns the surface represented by the SheetNode.
*/ 1 4 this 3 623
264 0 0 4 309 556 0 0 269 /**
* Sets the "use vertex color" flag. When this is true, the R, G, B, A vertex
* color is assumed to be stored as the dimensions 0, 1, 2, 3, respectively,
* of the extended vertex values. Use
* NurbsCurveEvaluator::set_extended_vertex() to set these values.
*/ 2 4 this 3 622 4 flag 1 546
265 0 0 6 310 546 0 0 76 /**
* Returns the "use vertex color" flag. See set_use_vertex_color().
*/ 1 4 this 3 623
266 0 0 4 311 556 0 0 178 /**
* Specifies the number of subdivisions per cubic segment (that is, per unique
* knot value) to draw in a fixed uniform tesselation of the surface in the U
* direction.
*/ 2 4 this 3 622 12 num_u_subdiv 1 540
267 0 0 6 312 540 0 0 119 /**
* Returns the number of subdivisions per cubic segment to draw in the U
* direction. See set_num_u_subdiv().
*/ 1 4 this 3 623
268 0 0 4 313 556 0 0 178 /**
* Specifies the number of subdivisions per cubic segment (that is, per unique
* knot value) to draw in a fixed uniform tesselation of the surface in the V
* direction.
*/ 2 4 this 3 622 12 num_v_subdiv 1 540
269 0 0 6 314 540 0 0 119 /**
* Returns the number of subdivisions per cubic segment to draw in the V
* direction. See set_num_v_subdiv().
*/ 1 4 this 3 623
270 0 0 4 315 556 0 0 208 /**
* Recomputes the bounding volume. This is normally called automatically, but
* it must occasionally be called explicitly when the surface has changed
* properties outside of this node's knowledge.
*/ 2 4 this 3 622 6 rel_to 1 605
271 0 0 7 316 568 0 0 0 0
102
523 15 ParametricCurve 0 75777 15 ParametricCurve 15 ParametricCurve 0 0 0 0 0 0 19 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 0 0 1 0 524 0 0 0 0 163
/**
* 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()].
*/
524 9 PandaNode 0 2048 9 PandaNode 9 PandaNode 0 0 0 0 0 0 0 0 0 0 0 0 175
/**
* A basic node of the scene graph or data graph. This is the base class of
* all specialized nodes, and also serves as a generic node with no special
* properties.
*/
525 13 CubicCurveseg 0 75777 13 CubicCurveseg 13 CubicCurveseg 0 0 0 0 0 0 1 291 0 0 1 0 523 0 0 0 0 940
/**
* A CubicCurveseg is any curve that can be completely described by four
* 4-valued basis vectors, one for each dimension in three-space, and one for
* the homogeneous coordinate. This includes Beziers, Hermites, and NURBS.
*
* This class encapsulates a single curve segment of the cubic curve.
* Normally, when we think of Bezier and Hermite curves, we think of a
* piecewise collection of such segments.
*
* Although this class includes methods such as hermite_basis() and
* nurbs_basis(), to generate a Hermite and NURBS curve segment, respectively,
* only the final basis vectors are stored: the product of the basis matrix of
* the corresponding curve type, and its geometry vectors. This is the
* minimum information needed to evaluate the curve. However, the individual
* CV's that were used to compute these basis vectors are not retained; this
* might be handled in a subclass (for instance, HermiteCurve).
*/
526 25 ParametricCurveCollection 0 75777 25 ParametricCurveCollection 25 ParametricCurveCollection 0 0 0 1 292 0 6 633 634 635 636 637 638 30 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 311 312 313 314 315 316 317 318 319 320 321 322 323 324 2 658 659 0 1 0 527 0 0 0 0 343
/**
* This is a set of zero or more ParametricCurves, which may or may not be
* related. If they are related, the set should contain no more than one XYZ
* curve, no more than one HPR curve, and zero or more Timewarp curves, which
* can then be evaluated as a unit to return a single transformation matrix
* for a given unit of time.
*/
527 14 ReferenceCount 0 2048 14 ReferenceCount 14 ReferenceCount 0 0 0 0 0 0 0 0 0 0 0 0 203
/**
* A base class for all things that want to be reference-counted.
* ReferenceCount works in conjunction with PointerTo to automatically delete
* objects when the last pointer to them goes away.
*/
528 17 ParametricCurve * 0 8576 17 ParametricCurve * 17 ParametricCurve * 0 0 523 0 0 0 0 0 0 0 0 0 0
529 11 PN_stdfloat 0 2105344 11 PN_stdfloat 11 PN_stdfloat 0 0 530 0 0 0 0 0 0 0 0 0 0
530 5 float 0 8194 5 float 5 float 0 2 0 0 0 0 0 0 0 0 0 0 0
531 11 CurveFitter 0 26625 11 CurveFitter 11 CurveFitter 0 0 0 1 325 326 0 20 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 0 0 0 0 0 10
/**
*
*/
532 14 PiecewiseCurve 0 75777 14 PiecewiseCurve 14 PiecewiseCurve 0 0 0 1 347 0 0 1 348 0 0 1 0 523 0 0 0 0 184
/**
* A PiecewiseCurve is a curve made up of several curve segments, connected in
* a head-to-tail fashion. The length of each curve segment in parametric
* space is definable.
*/
533 12 HermiteCurve 0 75777 12 HermiteCurve 12 HermiteCurve 0 0 0 1 349 0 0 19 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 0 0 1 0 532 0 0 0 0 421
/**
* A parametric curve defined by a sequence of control vertices, each with an
* in and out tangent.
*
* This class is actually implemented as a PiecewiseCurve made up of several
* CubicCurvesegs, each of which is created using the hermite_basis() method.
* The HermiteCurve class itself keeps its own list of the CV's that are used
* to define the curve (since the CubicCurveseg class doesn't retain these).
*/
534 19 NurbsCurveInterface 0 26625 19 NurbsCurveInterface 19 NurbsCurveInterface 0 0 0 0 369 0 18 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 2 660 661 0 0 0 0 211
/**
* This abstract class defines the interface only for a Nurbs-style curve,
* with knots and coordinates in homogeneous space.
*
* The NurbsCurve class inherits both from this and from ParametricCurve.
*/
535 10 NurbsCurve 0 26625 10 NurbsCurve 10 NurbsCurve 0 0 0 1 392 393 0 1 394 0 0 2 3 532 388 389 3 534 390 391 0 0 830
/**
* A Nonuniform Rational B-Spline.
*
* This class is actually implemented as a PiecewiseCurve made up of several
* CubicCurvesegs, each of which is created using the nurbs_basis() method.
* The list of CV's and knots is kept here, within the NurbsCurve class.
*
* This class is the original Panda-native implementation of a NURBS curve.
* It is typedeffed as "NurbsCurve" and performs all NURBS curve functions if
* we do not have the NURBS++ library available.
*
* However, if we *do* have the NURBS++ library, another class exists, the
* NurbsPPCurve, which is a wrapper around that library and provides some
* additional functionality. In that case, the other class is typedeffed to
* "NurbsCurve" instead of this one, and performs most of the NURBS curve
* functions. This class then becomes vestigial.
*/
536 16 NurbsCurveResult 0 75777 16 NurbsCurveResult 16 NurbsCurveResult 0 0 0 1 411 0 0 16 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 2 662 663 0 1 0 527 0 0 0 0 453
/**
* 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.
*/
537 19 NurbsCurveEvaluator 0 75777 19 NurbsCurveEvaluator 19 NurbsCurveEvaluator 0 0 0 1 412 0 0 18 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 2 664 665 0 1 0 527 0 0 0 0 492
/**
* This class is an abstraction for evaluating NURBS curves. It accepts an
* array of vertices, each of which may be in a different coordinate space (as
* defined by a NodePath), as well as an optional knot vector.
*
* 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.
*/
538 18 NurbsSurfaceResult 0 75777 18 NurbsSurfaceResult 18 NurbsSurfaceResult 0 0 0 1 447 0 0 16 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 0 0 1 0 527 0 0 0 0 191
/**
* The result of a NurbsSurfaceEvaluator. This object represents a surface in
* a particular coordinate space. It can return the point and/or normal to
* the surface at any point.
*/
539 21 NurbsSurfaceEvaluator 0 75777 21 NurbsSurfaceEvaluator 21 NurbsSurfaceEvaluator 0 0 0 1 448 0 4 639 640 641 642 26 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 2 666 667 0 1 0 527 0 0 0 0 227
/**
* This class is an abstraction for evaluating NURBS surfaces. It accepts an
* array of vertices, each of which may be in a different coordinate space (as
* defined by a NodePath), as well as an optional knot vector.
*/
540 3 int 0 8194 3 int 3 int 0 1 0 0 0 0 0 0 0 0 0 0 0
541 8 RopeNode 0 141313 8 RopeNode 8 RopeNode 0 0 0 1 477 510 15 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 32 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 0 0 1 0 524 0 0 0 3 542 543 544 428
/**
* This class draws a visible representation of the NURBS curve stored in its
* NurbsCurveEvaluator. It automatically recomputes the curve every frame.
*
* 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.
*/
542 10 RenderMode 0 794624 20 RopeNode::RenderMode 20 RopeNode::RenderMode 541 0 0 0 0 0 0 0 0 0 4 9 RM_thread 19 RopeNode::RM_thread 59
// Render the rope as a one-pixel thread using a linestrip.
0 7 RM_tape 17 RopeNode::RM_tape 93
// Render the rope as a triangle strip oriented to be perpendicular to the
// tube_up vector.
1 12 RM_billboard 22 RopeNode::RM_billboard 90
// Render the rope as a triangle strip oriented to be perpendicular to the
// view vector.
2 7 RM_tube 17 RopeNode::RM_tube 62
// Render the rope as a hollow tube extruded along its length.
3 0 0
543 6 UVMode 0 794624 16 RopeNode::UVMode 16 RopeNode::UVMode 541 0 0 0 0 0 0 0 0 0 4 7 UV_none 17 RopeNode::UV_none 39
// Don't generate UV's along the curve.
0 13 UV_parametric 23 RopeNode::UV_parametric 69
// Generate UV's based on the parametric coordinates along the curve.
1 11 UV_distance 21 RopeNode::UV_distance 140
// Generate UV's in proportion to spatial distance along the curve, by
// using the distance function to compute the length of each segment.
2 12 UV_distance2 22 RopeNode::UV_distance2 310
// As above, but don't bother to take the square root of each segment.
// The distance is then in proportion to the sum-of-squares of the
// segments along the rope. If the segments are similar in length, this
// approximates the proportion of UV_distance while avoiding hundreds of
// square root operations.
3 0 0
544 10 NormalMode 0 794624 20 RopeNode::NormalMode 20 RopeNode::NormalMode 541 0 0 0 0 0 0 0 0 0 2 7 NM_none 17 RopeNode::NM_none 26
// Don't generate normals.
0 9 NM_vertex 19 RopeNode::NM_vertex 43
// Generate vertex (smooth-shaded) normals.
1 0 0
545 21 NurbsCurveEvaluator * 0 8576 21 NurbsCurveEvaluator * 21 NurbsCurveEvaluator * 0 0 537 0 0 0 0 0 0 0 0 0 0
546 4 bool 0 8194 4 bool 4 bool 0 4 0 0 0 0 0 0 0 0 0 0 0
547 14 LVector3 const 0 8832 14 LVector3 const 14 LVector3 const 0 0 548 0 0 0 0 0 0 0 0 0 0
548 8 LVector3 0 2105344 8 LVector3 8 LVector3 0 0 549 0 0 0 0 0 0 0 0 0 0
549 9 LVector3f 0 2048 9 LVector3f 9 LVector3f 0 0 0 0 0 0 0 0 0 0 0 0 338
/**
* This is a three-component vector distance (as opposed to a three-component
* point, which represents a particular point in space). Some of the methods
* are slightly different between LPoint3 and LVector3; in particular,
* subtraction of two points yields a vector, while addition of a vector and a
* point yields a point.
*/
550 14 LMatrix4 const 0 8832 14 LMatrix4 const 14 LMatrix4 const 0 0 551 0 0 0 0 0 0 0 0 0 0
551 8 LMatrix4 0 2105344 8 LMatrix4 8 LMatrix4 0 0 552 0 0 0 0 0 0 0 0 0 0
552 9 LMatrix4f 0 2048 9 LMatrix4f 9 LMatrix4f 0 0 0 0 0 0 0 0 0 0 0 0 45
/**
* This is a 4-by-4 transform matrix.
*/
553 9 SheetNode 0 141313 9 SheetNode 9 SheetNode 0 0 0 1 511 522 0 10 512 513 514 515 516 517 518 519 520 521 0 0 1 0 524 0 0 0 0 447
/**
* This class draws a visible representation of the NURBS surface stored in
* its NurbsSurfaceEvaluator. It automatically recomputes the surface every
* frame.
*
* This is not related to NurbsSurface, CubicSurfaceseg or any of the
* ParametricSurface-derived objects in this module. It is a completely
* parallel implementation of NURBS surfaces, and will probably eventually
* replace the whole ParametricSurface class hierarchy.
*/
554 23 ParametricCurve const * 0 8576 23 ParametricCurve const * 23 ParametricCurve const * 0 0 555 0 0 0 0 0 0 0 0 0 0
555 21 ParametricCurve const 0 8832 21 ParametricCurve const 21 ParametricCurve const 0 0 523 0 0 0 0 0 0 0 0 0 0
556 4 void 0 8194 4 void 4 void 0 6 0 0 0 0 0 0 0 0 0 0 0
557 11 LVecBase3 * 0 8576 11 LVecBase3 * 11 LVecBase3 * 0 0 558 0 0 0 0 0 0 0 0 0 0
558 9 LVecBase3 0 2105344 9 LVecBase3 9 LVecBase3 0 0 559 0 0 0 0 0 0 0 0 0 0
559 10 LVecBase3f 0 2048 10 LVecBase3f 10 LVecBase3f 0 0 0 0 0 0 0 0 0 0 0 0 77
/**
* This is the base class for all three-component vectors and points.
*/
560 10 Filename * 0 8576 10 Filename * 10 Filename * 0 0 561 0 0 0 0 0 0 0 0 0 0
561 8 Filename 0 2048 8 Filename 8 Filename 0 0 0 0 0 0 0 0 0 0 0 0 550
/**
* The name of a file, such as a texture file or an Egg file. Stores the full
* pathname, and includes functions for extracting out the directory prefix
* part and the file extension and stuff.
*
* A Filename is also aware of the mapping between the Unix-like filename
* convention we use internally, and the local OS's specific filename
* convention, and it knows how to perform basic OS-specific I/O, like testing
* for file existence and searching a searchpath, as well as the best way to
* open an fstream for reading or writing.
*/
562 16 CoordinateSystem 0 532480 16 CoordinateSystem 16 CoordinateSystem 0 0 0 0 0 0 0 0 0 0 6 10 CS_default 10 CS_default 210
// The CS_default entry does not refer to a particular coordinate system,
// but rather to the value stored in default_coordinate_system, which in
// turn is loaded from the config variable "coordinate-system".
0 12 CS_zup_right 12 CS_zup_right 21
// Z-Up, Right-handed
1 12 CS_yup_right 12 CS_yup_right 21
// Y-Up, Right-handed
2 11 CS_zup_left 11 CS_zup_left 20
// Z-Up, Left-handed
3 11 CS_yup_left 11 CS_yup_left 20
// Y-Up, Left-handed
4 10 CS_invalid 10 CS_invalid 156
// CS_invalid is not a coordinate system at all. It can be used in user-
// input processing code to indicate a contradictory coordinate system
// request.
5 0 0
563 9 ostream * 0 8576 14 std::ostream * 14 std::ostream * 0 0 564 0 0 0 0 0 0 0 0 0 0
564 7 ostream 0 2048 12 std::ostream 12 std::ostream 0 0 0 0 0 0 0 0 0 0 0 0 0
565 16 Filename const * 0 8576 16 Filename const * 16 Filename const * 0 0 566 0 0 0 0 0 0 0 0 0 0
566 14 Filename const 0 8832 14 Filename const 14 Filename const 0 0 561 0 0 0 0 0 0 0 0 0 0
567 10 TypeHandle 0 16779264 10 TypeHandle 10 TypeHandle 0 0 0 0 0 0 0 0 0 0 0 0 732
/**
* TypeHandle is the identifier used to differentiate C++ class types. Any
* C++ classes that inherit from some base class, and must be differentiated
* at run time, should store a static TypeHandle object that can be queried
* through a static member function named get_class_type(). Most of the time,
* it is also desirable to inherit from TypedObject, which provides some
* virtual functions to return the TypeHandle for a particular instance.
*
* At its essence, a TypeHandle is simply a unique identifier that is assigned
* by the TypeRegistry. The TypeRegistry stores a tree of TypeHandles, so
* that ancestry of a particular type may be queried, and the type name may be
* retrieved for run-time display.
*/
568 12 TypeHandle * 0 8576 12 TypeHandle * 12 TypeHandle * 0 0 567 0 0 0 0 0 0 0 0 0 0
569 27 ParametricCurveCollection * 0 8576 27 ParametricCurveCollection * 27 ParametricCurveCollection * 0 0 526 0 0 0 0 0 0 0 0 0 0
570 33 ParametricCurveCollection const * 0 8576 33 ParametricCurveCollection const * 33 ParametricCurveCollection const * 0 0 571 0 0 0 0 0 0 0 0 0 0
571 31 ParametricCurveCollection const 0 8832 31 ParametricCurveCollection const 31 ParametricCurveCollection const 0 0 526 0 0 0 0 0 0 0 0 0 0
572 6 size_t 0 2105344 11 std::size_t 11 std::size_t 0 0 573 0 0 0 0 0 0 0 0 0 0
573 22 unsigned long long int 0 8230 22 unsigned long long int 22 unsigned long long int 0 8 0 0 0 0 0 0 0 0 0 0 0
574 11 PandaNode * 0 8576 11 PandaNode * 11 PandaNode * 0 0 524 0 0 0 0 0 0 0 0 0 0
575 10 LMatrix4 * 0 8576 10 LMatrix4 * 10 LMatrix4 * 0 0 551 0 0 0 0 0 0 0 0 0 0
576 17 LVecBase3 const * 0 8576 17 LVecBase3 const * 17 LVecBase3 const * 0 0 577 0 0 0 0 0 0 0 0 0 0
577 15 LVecBase3 const 0 8832 15 LVecBase3 const 15 LVecBase3 const 0 0 558 0 0 0 0 0 0 0 0 0 0
578 13 CurveFitter * 0 8576 13 CurveFitter * 13 CurveFitter * 0 0 531 0 0 0 0 0 0 0 0 0 0
579 19 CurveFitter const * 0 8576 19 CurveFitter const * 19 CurveFitter const * 0 0 580 0 0 0 0 0 0 0 0 0 0
580 17 CurveFitter const 0 8832 17 CurveFitter const 17 CurveFitter const 0 0 531 0 0 0 0 0 0 0 0 0 0
581 16 PiecewiseCurve * 0 8576 16 PiecewiseCurve * 16 PiecewiseCurve * 0 0 532 0 0 0 0 0 0 0 0 0 0
582 14 HermiteCurve * 0 8576 14 HermiteCurve * 14 HermiteCurve * 0 0 533 0 0 0 0 0 0 0 0 0 0
583 20 HermiteCurve const * 0 8576 20 HermiteCurve const * 20 HermiteCurve const * 0 0 584 0 0 0 0 0 0 0 0 0 0
584 18 HermiteCurve const 0 8832 18 HermiteCurve const 18 HermiteCurve const 0 0 533 0 0 0 0 0 0 0 0 0 0
585 13 atomic string 0 2 13 atomic string 13 atomic string 0 7 0 0 0 0 0 0 0 0 0 0 0
586 21 NurbsCurveInterface * 0 8576 21 NurbsCurveInterface * 21 NurbsCurveInterface * 0 0 534 0 0 0 0 0 0 0 0 0 0
587 27 NurbsCurveInterface const * 0 8576 27 NurbsCurveInterface const * 27 NurbsCurveInterface const * 0 0 588 0 0 0 0 0 0 0 0 0 0
588 25 NurbsCurveInterface const 0 8832 25 NurbsCurveInterface const 25 NurbsCurveInterface const 0 0 534 0 0 0 0 0 0 0 0 0 0
589 17 LVecBase4 const * 0 8576 17 LVecBase4 const * 17 LVecBase4 const * 0 0 590 0 0 0 0 0 0 0 0 0 0
590 15 LVecBase4 const 0 8832 15 LVecBase4 const 15 LVecBase4 const 0 0 591 0 0 0 0 0 0 0 0 0 0
591 9 LVecBase4 0 2105344 9 LVecBase4 9 LVecBase4 0 0 592 0 0 0 0 0 0 0 0 0 0
592 10 LVecBase4f 0 2048 10 LVecBase4f 10 LVecBase4f 0 0 0 0 0 0 0 0 0 0 0 0 77
/**
* This is the base class for all three-component vectors and points.
*/
593 11 LVecBase4 * 0 8576 11 LVecBase4 * 11 LVecBase4 * 0 0 591 0 0 0 0 0 0 0 0 0 0
594 12 NurbsCurve * 0 8576 12 NurbsCurve * 12 NurbsCurve * 0 0 535 0 0 0 0 0 0 0 0 0 0
595 24 NurbsCurveResult const * 0 8576 24 NurbsCurveResult const * 24 NurbsCurveResult const * 0 0 596 0 0 0 0 0 0 0 0 0 0
596 22 NurbsCurveResult const 0 8832 22 NurbsCurveResult const 22 NurbsCurveResult const 0 0 536 0 0 0 0 0 0 0 0 0 0
597 18 NurbsCurveResult * 0 8576 18 NurbsCurveResult * 18 NurbsCurveResult * 0 0 536 0 0 0 0 0 0 0 0 0 0
598 14 PN_stdfloat [] 0 4202496 14 PN_stdfloat [] 14 PN_stdfloat [] 0 0 529 -1 0 0 0 0 0 0 0 0 0 0
599 15 LPoint3 const * 0 8576 15 LPoint3 const * 15 LPoint3 const * 0 0 600 0 0 0 0 0 0 0 0 0 0
600 13 LPoint3 const 0 8832 13 LPoint3 const 13 LPoint3 const 0 0 601 0 0 0 0 0 0 0 0 0 0
601 7 LPoint3 0 2105344 7 LPoint3 7 LPoint3 0 0 602 0 0 0 0 0 0 0 0 0 0
602 8 LPoint3f 0 2048 8 LPoint3f 8 LPoint3f 0 0 0 0 0 0 0 0 0 0 0 0 337
/**
* This is a three-component point in space (as opposed to a three-component
* vector, which represents a direction and a distance). Some of the methods
* are slightly different between LPoint3 and LVector3; in particular,
* subtraction of two points yields a vector, while addition of a vector and a
* point yields a point.
*/
603 27 NurbsCurveEvaluator const * 0 8576 27 NurbsCurveEvaluator const * 27 NurbsCurveEvaluator const * 0 0 604 0 0 0 0 0 0 0 0 0 0
604 25 NurbsCurveEvaluator const 0 8832 25 NurbsCurveEvaluator const 25 NurbsCurveEvaluator const 0 0 537 0 0 0 0 0 0 0 0 0 0
605 16 NodePath const * 0 8576 16 NodePath const * 16 NodePath const * 0 0 606 0 0 0 0 0 0 0 0 0 0
606 14 NodePath const 0 8832 14 NodePath const 14 NodePath const 0 0 607 0 0 0 0 0 0 0 0 0 0
607 8 NodePath 0 2048 8 NodePath 8 NodePath 0 0 0 0 0 0 0 0 0 0 0 0 762
/**
* NodePath is the fundamental system for disambiguating instances, and also
* provides a higher-level interface for manipulating the scene graph.
*
* A NodePath is a list of connected nodes from the root of the graph to any
* sub-node. Each NodePath therefore uniquely describes one instance of a
* node.
*
* NodePaths themselves are lightweight objects that may easily be copied and
* passed by value. Their data is stored as a series of NodePathComponents
* that are stored on the nodes. Holding a NodePath will keep a reference
* count to all the nodes in the path. However, if any node in the path is
* removed or reparented (perhaps through a different NodePath), the NodePath
* will automatically be updated to reflect the changes.
*/
608 10 NodePath * 0 8576 10 NodePath * 10 NodePath * 0 0 607 0 0 0 0 0 0 0 0 0 0
609 20 PN_stdfloat const [] 0 4202496 20 PN_stdfloat const [] 20 PN_stdfloat const [] 0 0 610 -1 0 0 0 0 0 0 0 0 0 0
610 17 PN_stdfloat const 0 8832 17 PN_stdfloat const 17 PN_stdfloat const 0 0 529 0 0 0 0 0 0 0 0 0 0
611 16 LMatrix4 const * 0 8576 16 LMatrix4 const * 16 LMatrix4 const * 0 0 550 0 0 0 0 0 0 0 0 0 0
612 26 NurbsSurfaceResult const * 0 8576 26 NurbsSurfaceResult const * 26 NurbsSurfaceResult const * 0 0 613 0 0 0 0 0 0 0 0 0 0
613 24 NurbsSurfaceResult const 0 8832 24 NurbsSurfaceResult const 24 NurbsSurfaceResult const 0 0 538 0 0 0 0 0 0 0 0 0 0
614 20 NurbsSurfaceResult * 0 8576 20 NurbsSurfaceResult * 20 NurbsSurfaceResult * 0 0 538 0 0 0 0 0 0 0 0 0 0
615 23 NurbsSurfaceEvaluator * 0 8576 23 NurbsSurfaceEvaluator * 23 NurbsSurfaceEvaluator * 0 0 539 0 0 0 0 0 0 0 0 0 0
616 29 NurbsSurfaceEvaluator const * 0 8576 29 NurbsSurfaceEvaluator const * 29 NurbsSurfaceEvaluator const * 0 0 617 0 0 0 0 0 0 0 0 0 0
617 27 NurbsSurfaceEvaluator const 0 8832 27 NurbsSurfaceEvaluator const 27 NurbsSurfaceEvaluator const 0 0 539 0 0 0 0 0 0 0 0 0 0
618 10 RopeNode * 0 8576 10 RopeNode * 10 RopeNode * 0 0 541 0 0 0 0 0 0 0 0 0 0
619 16 RopeNode const * 0 8576 16 RopeNode const * 16 RopeNode const * 0 0 620 0 0 0 0 0 0 0 0 0 0
620 14 RopeNode const 0 8832 14 RopeNode const 14 RopeNode const 0 0 541 0 0 0 0 0 0 0 0 0 0
621 16 LVector3 const * 0 8576 16 LVector3 const * 16 LVector3 const * 0 0 547 0 0 0 0 0 0 0 0 0 0
622 11 SheetNode * 0 8576 11 SheetNode * 11 SheetNode * 0 0 553 0 0 0 0 0 0 0 0 0 0
623 17 SheetNode const * 0 8576 17 SheetNode const * 17 SheetNode const * 0 0 624 0 0 0 0 0 0 0 0 0 0
624 15 SheetNode const 0 8832 15 SheetNode const 15 SheetNode const 0 0 553 0 0 0 0 0 0 0 0 0 0
8
625 6 HC_CUT 0 5 1 540 0 1 1
626 7 HC_FREE 0 5 2 540 0 1 2
627 5 HC_G1 0 5 3 540 0 1 3
628 9 HC_SMOOTH 0 5 4 540 0 1 4
629 7 PCT_HPR 0 5 2 540 0 1 2
630 8 PCT_NONE 0 5 0 540 0 1 0
631 5 PCT_T 0 5 3 540 0 1 3
632 7 PCT_XYZ 0 5 1 540 0 1 1
25
633 6 curves 0 102 528 309 297 0 0 296 301 0 0 33 ParametricCurveCollection::curves 0
634 9 xyz_curve 0 2 528 303 0 0 0 0 0 0 0 36 ParametricCurveCollection::xyz_curve 0
635 9 hpr_curve 0 2 528 304 0 0 0 0 0 0 0 36 ParametricCurveCollection::hpr_curve 0
636 13 default_curve 0 2 528 305 0 0 0 0 0 0 0 40 ParametricCurveCollection::default_curve 0
637 15 timewarp_curves 0 66 528 310 0 0 0 0 306 0 0 42 ParametricCurveCollection::timewarp_curves 0
638 5 max_t 0 2 529 308 0 0 0 0 0 0 0 32 ParametricCurveCollection::max_t 0
639 7 u_order 0 6 540 450 449 0 0 0 0 0 0 30 NurbsSurfaceEvaluator::u_order 0
640 7 v_order 0 6 540 452 451 0 0 0 0 0 0 30 NurbsSurfaceEvaluator::v_order 0
641 7 u_knots 0 70 529 475 464 0 0 0 463 0 0 30 NurbsSurfaceEvaluator::u_knots 0
642 7 v_knots 0 70 529 476 468 0 0 0 467 0 0 30 NurbsSurfaceEvaluator::v_knots 0
643 5 curve 0 6 545 479 478 0 0 0 0 0 0 15 RopeNode::curve 0
644 11 render_mode 0 6 542 481 480 0 0 0 0 0 0 21 RopeNode::render_mode 0
645 7 uv_mode 0 6 543 483 482 0 0 0 0 0 0 17 RopeNode::uv_mode 0
646 12 uv_direction 0 6 546 485 484 0 0 0 0 0 0 22 RopeNode::uv_direction 0
647 8 uv_scale 0 6 529 487 486 0 0 0 0 0 0 18 RopeNode::uv_scale 0
648 11 normal_mode 0 6 544 489 488 0 0 0 0 0 0 21 RopeNode::normal_mode 0
649 7 tube_up 0 6 547 491 490 0 0 0 0 0 0 17 RopeNode::tube_up 0
650 16 use_vertex_color 0 6 546 493 492 0 0 0 0 0 0 26 RopeNode::use_vertex_color 0
651 22 vertex_color_dimension 0 2 540 494 0 0 0 0 0 0 0 32 RopeNode::vertex_color_dimension 0
652 10 num_subdiv 0 6 540 496 495 0 0 0 0 0 0 20 RopeNode::num_subdiv 0
653 10 num_slices 0 6 540 498 497 0 0 0 0 0 0 20 RopeNode::num_slices 0
654 20 use_vertex_thickness 0 6 546 500 499 0 0 0 0 0 0 30 RopeNode::use_vertex_thickness 0
655 26 vertex_thickness_dimension 0 2 540 501 0 0 0 0 0 0 0 36 RopeNode::vertex_thickness_dimension 0
656 9 thickness 0 6 529 503 502 0 0 0 0 0 0 19 RopeNode::thickness 0
657 6 matrix 0 30 550 507 504 506 505 0 0 0 0 16 RopeNode::matrix 0
10
658 10 get_curves 0 301 302 37 ParametricCurveCollection::get_curves 0
659 19 get_timewarp_curves 0 306 307 46 ParametricCurveCollection::get_timewarp_curves 0
660 7 get_cvs 0 372 383 28 NurbsCurveInterface::get_cvs 0
661 9 get_knots 0 373 385 30 NurbsCurveInterface::get_knots 0
662 13 get_sample_ts 0 408 409 31 NurbsCurveResult::get_sample_ts 0
663 17 get_sample_points 0 408 410 35 NurbsCurveResult::get_sample_points 0
664 12 get_vertices 0 416 418 33 NurbsCurveEvaluator::get_vertices 0
665 9 get_knots 0 424 426 30 NurbsCurveEvaluator::get_knots 0
666 11 get_u_knots 0 463 465 34 NurbsSurfaceEvaluator::get_u_knots 0
667 11 get_v_knots 0 467 469 34 NurbsSurfaceEvaluator::get_v_knots 0