14#ifndef NURBSSURFACERESULT_H
15#define NURBSSURFACERESULT_H
34 int num_u_vertices,
int num_v_vertices);
45 INLINE
bool eval_point(PN_stdfloat u, PN_stdfloat v, LVecBase3 &point);
46 INLINE
bool eval_normal(PN_stdfloat u, PN_stdfloat v, LVecBase3 &normal);
49 PN_stdfloat result[],
int num_values);
53 void eval_segment_point(
int ui,
int vi, PN_stdfloat u, PN_stdfloat v, LVecBase3 &point)
const;
54 void eval_segment_normal(
int ui,
int vi, PN_stdfloat u, PN_stdfloat v, LVecBase3 &normal)
const;
57 PN_stdfloat result[],
int num_values)
const;
58 INLINE PN_stdfloat
get_segment_u(
int ui, PN_stdfloat u)
const;
59 INLINE PN_stdfloat
get_segment_v(
int vi, PN_stdfloat v)
const;
62 INLINE
int verti(
int ui,
int vi)
const;
63 INLINE
int segi(
int ui,
int vi)
const;
65 int find_u_segment(PN_stdfloat u);
66 int r_find_u_segment(PN_stdfloat u,
int top,
int bot)
const;
67 int find_v_segment(PN_stdfloat v);
68 int r_find_v_segment(PN_stdfloat v,
int top,
int bot)
const;
81 LMatrix4 _x, _y, _z, _w;
83 typedef epvector<ComposedMats> ComposedGeom;
84 ComposedGeom _composed;
88 PN_stdfloat _last_u_from;
89 PN_stdfloat _last_u_to;
91 PN_stdfloat _last_v_from;
92 PN_stdfloat _last_v_to;
This encapsulates a series of matrices that are used to represent the sequential segments of a NurbsC...
void eval_segment_point(int ui, int vi, PN_stdfloat u, PN_stdfloat v, LVecBase3 &point) const
Evaluates the point on the surface corresponding to the indicated value in parametric time within the...
bool eval_extended_points(PN_stdfloat u, PN_stdfloat v, int d, PN_stdfloat result[], int num_values)
Simultaneously performs eval_extended_point on a contiguous sequence of dimensions.
bool eval_normal(PN_stdfloat u, PN_stdfloat v, LVecBase3 &normal)
Computes the normal to the surface at the indicated point in parametric time.
PN_stdfloat get_start_u() const
Returns the first legal value of u on the surface.
int get_num_u_segments() const
Returns the number of piecewise continuous segments within the surface in the U direction.
PN_stdfloat get_segment_u(int ui, PN_stdfloat u) const
Accepts a u value in the range [0, 1], and assumed to be relative to the indicated segment (as in eva...
PN_stdfloat eval_extended_point(PN_stdfloat u, PN_stdfloat v, int d)
Evaluates the surface in n-dimensional space according to the extended vertices associated with the s...
PN_stdfloat eval_segment_extended_point(int ui, int vi, PN_stdfloat u, PN_stdfloat v, int d) const
Evaluates the surface in n-dimensional space according to the extended vertices associated with the s...
PN_stdfloat get_segment_v(int vi, PN_stdfloat v) const
Accepts a v value in the range [0, 1], and assumed to be relative to the indicated segment (as in eva...
PN_stdfloat get_start_v() const
Returns the first legal value of v on the surface.
bool eval_point(PN_stdfloat u, PN_stdfloat v, LVecBase3 &point)
Computes the point on the surface corresponding to the indicated value in parametric time.
void eval_segment_normal(int ui, int vi, PN_stdfloat u, PN_stdfloat v, LVecBase3 &normal) const
As eval_segment_point, but computes the normal to the surface at the indicated point.
PN_stdfloat get_end_u() const
Returns the last legal value of u on the surface.
PN_stdfloat get_end_v() const
Returns the last legal value of v on the surface.
NurbsSurfaceResult(const NurbsBasisVector &u_basis, const NurbsBasisVector &v_basis, const LVecBase4 vecs[], const NurbsVertex *verts, int num_u_vertices, int num_v_vertices)
The constructor automatically builds up the result as the product of the indicated set of basis matri...
void eval_segment_extended_points(int ui, int vi, PN_stdfloat u, PN_stdfloat v, int d, PN_stdfloat result[], int num_values) const
Simultaneously performs eval_extended_point on a contiguous sequence of dimensions.
int get_num_v_segments() const
Returns the number of piecewise continuous segments within the surface in the V direction.
This represents a single control vertex in a NurbsEvaluator.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.