13 #ifndef __GU_PrimNURBSurf_h__ 
   14 #define __GU_PrimNURBSurf_h__ 
   60         return *theDefinition;
 
   83                                 float tmax = 1E17F, 
float tol = 1E-12F,
 
   86                                 float *u = 0, 
float *
v = 0,
 
   87                                 int ignoretrim = 1) 
const override;
 
   91                                float worldtol = 1e-4F,
 
   92                                float domaintol = 1e-2F,
 
   94                                bool docompact = 
true) 
override;
 
   96                                float worldtol = 1e-4F,
 
   97                                int nontrivial = 0) 
const override;
 
  103                                      bool openu, 
bool openv,
 
  104                                      bool endsu, 
bool endsv) 
const override;
 
  113                               int &ind1, 
int &ind2, 
int keep) 
override;
 
  116                               int &ind1, 
int &ind2, 
int keep) 
override;
 
  120     void                 openAtU(
float u) 
override;
 
  134                                        int orderu = 4, 
int orderv = 4,
 
  135                                        int wrapu = 0, 
int wrapv = 0,
 
  136                                        int interpEndsU= 1, 
int interpEndsV= 1,
 
  138                                        int appendPoints = 1);
 
  159     int                  removeKnot(
int uDir, 
int knotIdx, 
int mult=0,
 
  162                                     int uniqueInteriorCvs=0);
 
  178                                      int uNum=0, 
int vNum=0,
 
  184                                             int du=0, 
int dv=0) 
const override;
 
  193                           int uOrder=4, 
int vOrder=4,
 
  194                           bool uWrapped=
false, 
bool vWrapped=
false,
 
  205     int                  interpBreakpoints(
 
  207                           int uOrder=4, 
int vOrder=4,
 
  208                           bool uWrapped=
false, 
bool vWrapped=
false,
 
  226                               int uOrder, 
int vOrder, 
 
  227                               int uWrapped, 
int vWrapped,
 
  229                               float tol, 
float smooth=0.0F,
 
  230                               int uNoMultipleKnots=1, 
int vNoMultipleKnots=1);
 
  261                              int prevUEnd, 
int cvUEnd, 
 
  262                              int prevVEnd, 
int cvVEnd, 
 
  267     void                 makeSafeDegreeEvaluateNoMult(
int uDir, 
int m, 
int n, 
 
  271                              int &cvUEnd, 
int &cvVEnd);
 
  273     void                 makeSafeDegreeEvaluateWMult(
int uDir, 
int m, 
int n, 
 
  277                              int &cvUEnd, 
int &cvVEnd, 
int &breakCount);
 
  290     int                  create(
int rows, 
int cols, 
int orderu=4, 
int orderv=4,
 
  291                                 int wrapu = 0, 
int wrapv = 0,
 
  292                                 int interpEndsU = 1, 
int interpEndsV = 1,
 
  294                                 int appendPoints = 1);
 
  297     friend class                         GU_PrimitiveFactory;
 
virtual GEO_Hull * reconfigure(unsigned type, int orderu, int orderv, bool openu, bool openv, bool endsu, bool endsv) const =0
 
virtual void openAtU(float u)=0
Open the primitive at the given domain value. 
 
const GA_PrimitiveDefinition & getTypeDef() const override
 
GLfloat GLfloat GLfloat v2
 
virtual int64 getMemoryUsage() const 
 
virtual int intersectSurf(GEO_TPSurf &surf2, GU_IsectCurveSet &curveset, float worldtol=1e-4F, float domaintol=1e-2F, int steps=100, bool docompact=true)=0
 
virtual int doesIntersect(const GEO_Primitive &prim, float worldtol=1e-4F, int nontrivial=0) const =0
 
virtual void openAtV(float v)=0
 
#define GA_INVALID_OFFSET
 
int evaluateBreakpoint(int uidx, int vidx, UT_Vector4 &pos, int du=0, int dv=0) const override
 
virtual bool fit(GA_AttributeOperand &d, GA_AttributeOperand &a, GA_AttributeOperand &omin, GA_AttributeOperand &omax, GA_AttributeOperand &nmin, GA_AttributeOperand &nmax) const 
d = SYSfit(a, omin, omax, nmin, nmax); 
 
GLint GLint GLsizei GLint GLenum GLenum type
 
virtual void getRangeBBox(const UT_Interval &u, const UT_Interval &v, UT_BoundingBox &bbox, const GA_PwHandleRO &h) const =0
 
virtual void countMemory(UT_MemoryCounter &counter) const 
 
virtual GEO_Curve * buildRowCurve(bool appendPoints, GEO_Detail *parent) const =0
 
NURBS basis classes which maintain knot vectors. 
 
virtual GEO_TPSurf * cutV(float v1, float v2, int &ind1, int &ind2, int keep)=0
 
virtual GEO_TPSurf * cutU(float u1, float u2, int &ind1, int &ind2, int keep)=0
 
GLfloat GLfloat GLfloat GLfloat h
 
GA_API const UT_StringHolder parms
 
virtual bool smooth(GA_AttributeOperand &d, GA_AttributeOperand &min, GA_AttributeOperand &max, GA_AttributeOperand &t) const 
d = SYSsmooth(min, max, t); 
 
virtual int intersectRay(const UT_Vector3 &o, const UT_Vector3 &d, float tmax=1E17F, float tol=1E-12F, float *distance=0, UT_Vector3 *pos=0, UT_Vector3 *nml=0, int accurate=0, float *u=0, float *v=0, int ignoretrim=1) const 
 
virtual int translateBkptsFixed(const UT_IntArray &uindices, const UT_IntArray &vindices, const UT_Vector3 &delta, GA_PointGroup *ptgroup=NULL, GEO_Delta *geodelta=0)
 
virtual GEO_Hull * getSubHull(int top, int left, int bottom, int right, GEO_SubHullFlags break_flags)=0
 
GLdouble GLdouble GLdouble top
 
Container class for all geometry. 
 
virtual GEO_Primitive * convert(GEO_ConvertParms &parms, GA_PointGroup *usedpts=0)=0
 
Definition of a geometric primitive. 
 
SIM_API const UT_StringHolder distance
 
GU_PrimNURBSurf(GA_Detail *gdp, GA_Offset offset=GA_INVALID_OFFSET)
NOTE: This constructor should only be called via GU_PrimitiveFactory. 
 
virtual GEO_Curve * buildColCurve(bool appendPoints, GEO_Detail *parent) const =0
 
~GU_PrimNURBSurf() override
 
virtual GEO_Primitive * convertNew(GEO_ConvertParms &parms)=0
 
GA_PwHandle< true > GA_PwHandleRO
 
virtual int transformBkptsFixed(const UT_IntArray &uindices, const UT_IntArray &vindices, const UT_Matrix4 &matx, GA_PointGroup *ptgroup=NULL, GEO_Delta *geodelta=0)