15 #ifndef EGGNURBSSURFACE_H 16 #define EGGNURBSSURFACE_H 18 #include "pandabase.h" 20 #include "eggSurface.h" 21 #include "eggNurbsCurve.h" 22 #include "vector_double.h" 38 INLINE EggNurbsSurface(
const EggNurbsSurface ©);
39 INLINE EggNurbsSurface &operator = (
const EggNurbsSurface ©);
41 void setup(
int u_order,
int v_order,
42 int num_u_knots,
int num_v_knots);
44 INLINE
void set_u_order(
int u_order);
45 INLINE
void set_v_order(
int v_order);
46 void set_num_u_knots(
int num);
47 void set_num_v_knots(
int num);
49 INLINE
void set_u_knot(
int k,
double value);
50 INLINE
void set_v_knot(
int k,
double value);
51 INLINE
void set_cv(
int ui,
int vi,
EggVertex *vertex);
53 bool is_valid()
const;
55 INLINE
int get_u_order()
const;
56 INLINE
int get_v_order()
const;
57 INLINE
int get_u_degree()
const;
58 INLINE
int get_v_degree()
const;
59 INLINE
int get_num_u_knots()
const;
60 INLINE
int get_num_v_knots()
const;
61 INLINE
int get_num_u_cvs()
const;
62 INLINE
int get_num_v_cvs()
const;
63 INLINE
int get_num_cvs()
const;
65 INLINE
int get_u_index(
int vertex_index)
const;
66 INLINE
int get_v_index(
int vertex_index)
const;
67 INLINE
int get_vertex_index(
int ui,
int vi)
const;
69 bool is_closed_u()
const;
70 bool is_closed_v()
const;
72 INLINE
double get_u_knot(
int k)
const;
73 MAKE_SEQ(get_u_knots, get_num_u_knots, get_u_knot);
74 INLINE
double get_v_knot(
int k)
const;
75 MAKE_SEQ(get_v_knots, get_num_v_knots, get_v_knot);
76 INLINE
EggVertex *get_cv(
int ui,
int vi)
const;
78 virtual void write(ostream &out,
int indent_level)
const;
81 Curves _curves_on_surface;
88 typedef vector_double Knots;
99 static void init_type() {
100 EggSurface::init_type();
101 register_type(_type_handle,
"EggNurbsSurface",
102 EggSurface::get_class_type());
105 return get_class_type();
107 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
114 #include "eggNurbsSurface.I" This is a collection of textures by TRef name.
Any one-, two-, three-, or four-component vertex, possibly with attributes such as a normal...
A parametric NURBS surface.
A parametric surface of some kind.
TypeHandle is the identifier used to differentiate C++ class types.