14 #ifndef NURBSSURFACEEVALUATOR_H
15 #define NURBSSURFACEEVALUATOR_H
39 INLINE
void set_u_order(
int u_order);
40 INLINE
int get_u_order()
const;
42 INLINE
void set_v_order(
int v_order);
43 INLINE
int get_v_order()
const;
45 void reset(
int num_u_vertices,
int num_v_vertices);
47 INLINE
int get_num_u_vertices()
const;
48 INLINE
int get_num_v_vertices()
const;
49 INLINE
void set_vertex(
int ui,
int vi,
const LVecBase4 &vertex);
50 INLINE
void set_vertex(
int ui,
int vi,
const LVecBase3 &vertex, PN_stdfloat weight = 1.0);
51 INLINE
const LVecBase4 &get_vertex(
int ui,
int vi)
const;
52 INLINE LVecBase4 get_vertex(
int ui,
int vi,
const NodePath &rel_to)
const;
54 INLINE
void set_vertex_space(
int ui,
int vi,
const NodePath &space);
55 INLINE
void set_vertex_space(
int ui,
int vi,
const std::string &space);
58 INLINE
void set_extended_vertex(
int ui,
int vi,
int d, PN_stdfloat value);
59 INLINE PN_stdfloat get_extended_vertex(
int ui,
int vi,
int d)
const;
60 void set_extended_vertices(
int ui,
int vi,
int d,
61 const PN_stdfloat values[],
int num_values);
63 INLINE
int get_num_u_knots()
const;
64 void set_u_knot(
int i, PN_stdfloat knot);
65 PN_stdfloat get_u_knot(
int i)
const;
66 MAKE_SEQ(get_u_knots, get_num_u_knots, get_u_knot);
67 void normalize_u_knots();
69 INLINE
int get_num_v_knots()
const;
70 void set_v_knot(
int i, PN_stdfloat knot);
71 PN_stdfloat get_v_knot(
int i)
const;
72 MAKE_SEQ(get_v_knots, get_num_v_knots, get_v_knot);
73 void normalize_v_knots();
75 INLINE
int get_num_u_segments()
const;
76 INLINE
int get_num_v_segments()
const;
80 void output(std::ostream &out)
const;
82 MAKE_PROPERTY(u_order, get_u_order, set_u_order);
83 MAKE_PROPERTY(v_order, get_v_order, set_v_order);
84 MAKE_SEQ_PROPERTY(u_knots, get_num_u_knots, get_u_knot, set_u_knot);
85 MAKE_SEQ_PROPERTY(v_knots, get_num_v_knots, get_v_knot, set_v_knot);
88 typedef epvector<LVecBase4> Vert4Array;
90 void get_vertices(Vert4Array &verts,
const NodePath &rel_to)
const;
95 INLINE
const NurbsVertex &vert(
int ui,
int vi)
const;
97 void recompute_u_knots();
98 void recompute_v_knots();
99 void recompute_u_basis();
100 void recompute_v_basis();
105 typedef epvector<NurbsVertex> Vertices;
112 typedef vector_stdfloat Knots;