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);
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
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)