13 #ifndef __GU_PrimNURBCurve_h__
14 #define __GU_PrimNURBCurve_h__
65 return *theDefinition;
71 float tmax = 1E17F,
float tol = 1E-12F,
74 float *u = 0,
float *
v = 0,
75 int ignoretrim = 1)
const override;
79 float tol = 0.01F,
int ignoretrim=1)
const override;
88 int order = 4,
int closed = 0,
89 int interpEnds = 1,
int appendPoints= 1);
104 int &ind1,
int &ind2,
int keep)
override;
107 void openAt(
float u)
override;
109 virtual void rotateTo(
float u);
116 bool nonrational)
const override;
124 const UT_Vector &dest,
float tol = 1e-2F);
128 int du=0)
const override;
151 int removeKnot(
int knotIdx,
int num,
int mult=0,
153 int uniqueInteriorCvs=0);
165 float tol=1e-1F,
int num=0,
172 int interpGlobal(
const GA_Range &point_range,
173 int order=4,
int wrapped=0,
177 const bool elevate_order_if_required =
true);
179 int order=4,
int wrapped=0,
183 const bool elevate_order_if_required =
true);
190 const bool elevate_order_if_required =
true);
198 const bool elevate_order_if_required =
true);
201 int order=4,
int wrapped=0,
int corner=0);
203 int order=4,
int wrapped=0,
int corner=0);
206 int interpBreakpoints(
208 int order=4,
int wrapped=0,
211 const bool elevate_order_if_required =
true);
212 int interpBreakpoints(
214 int order=4,
int wrapped=0,
217 const bool elevate_order_if_required =
true);
224 int order=4,
int wrapped=0,
225 float tol=1e-1
f,
float smooth=0.0F,
226 int noMultipleKnots=1);
236 static int interpGlobal(
const UT_MatrixF &dataPts,
244 static int interpGlobal(
const UT_MatrixF &dataPts,
251 static int interpGlobal(
const UT_MatrixF &dataPts,
258 static int interpGlobal(
const UT_MatrixF &dataPts,
284 int create(
int nelems,
int order=4,
int closed = 0,
285 int interpEnds = 1,
int appendPoints = 1);
294 friend class GU_PrimitiveFactory;
virtual GEO_Curve * cut(float u1, float u2, int &ind1, int &ind2, int keep)=0
virtual int64 getMemoryUsage() const
#define GA_INVALID_OFFSET
int evaluateBreakpoint(int uidx, UT_Vector4 &pos, int du=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);
A range of elements in an index-map.
virtual void countMemory(UT_MemoryCounter &counter) const
~GU_PrimNURBCurve() override
GLsizei GLsizei GLchar * source
NURBS basis classes which maintain knot vectors.
virtual int translateBkptsFixed(const UT_IntArray &uindices, const UT_Vector3 &delta, GA_PointGroup *ptgroup=NULL, GEO_Delta *geodelta=0)
GLdouble GLdouble GLint GLint order
virtual GEO_Face * reconfigure(unsigned type, int order, bool open, bool interpends, bool nonrational) const =0
virtual int transformBkptsFixed(const UT_IntArray &uindices, const UT_Matrix4 &matx, GA_PointGroup *ptgroup=NULL, GEO_Delta *geodelta=0)
virtual void openAt(float u)=0
Open the primitive at the given domain value.
virtual void getRangeBBox(const UT_Interval &u, UT_BoundingBox &bbox, const GA_PwHandleRO &h) const =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);
GA_PwHandle< true > GA_PwHandleRO
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
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
const GA_PrimitiveDefinition & getTypeDef() const override
GU_PrimNURBCurve(GA_Detail *gdp, GA_Offset offset=GA_INVALID_OFFSET)
NOTE: This constructor should only be called via GU_PrimitiveFactory.
virtual int intersect(const GEO_Primitive &prim, UT_Array< GU_RayInfoHit > &hit_list, float tol=0.01F, int ignoretrim=1) const =0
virtual GEO_Primitive * convertNew(GEO_ConvertParms &parms)=0