14 #ifndef __GEO_PrimNURBSurf_h__
15 #define __GEO_PrimNURBSurf_h__
47 float vbmatx[][GA_MAXORDER],
48 int &rowoffset,
int &coloffset,
49 unsigned du=0,
unsigned dv=0,
50 int uoffset=-1,
int voffset=-1)
const override;
58 float *ubvals,
float *vbvals,
59 int &rowoffset,
int &coloffset,
60 unsigned du=0,
unsigned dv=0,
61 int uoffset=-1,
int voffset=-1)
const override;
63 float u,
float *ubvals,
int &coloffset,
64 unsigned du=0,
int uoffset=-1)
const override;
66 float v,
float *vbvals,
int &rowoffset,
67 unsigned dv=0,
int voffset=-1)
const override;
72 int du=0,
int dv=0)
const override;
78 int &minvk,
int &maxvk)
const override;
86 int &maxbkpu,
int &minbkpv,
87 int &maxbkpv)
const override;
103 int refineU(
float k,
int r=1)
override;
107 int refineV(
float k,
int r=1)
override;
119 float sharpness = 0.0
f,
120 float bias = -1.0
f)
override;
123 float sharpness = 0.0
f,
124 float bias = -1.0
f)
override;
127 float usharpness = 0.
f,
float vsharpness = 0.
f,
128 float ubias = -1.0
f,
float vbias = -1.0
f)
override;
132 void wrapU(
int rounded = 1,
int preserveShape = 0)
override;
133 void openU(
int preserveShape = 0,
int = 0)
override;
134 void wrapV(
int rounded = 1,
int preserveShape = 0)
override;
135 void openV(
int preserveShape = 0,
int = 0)
override;
137 int unrollU(
int append_pts = 1)
override;
138 int unrollV(
int append_pts = 1)
override;
141 bool interpolatesEndsU()
const;
142 void toggleEndConditionU();
143 bool interpolatesEndsV()
const;
144 void toggleEndConditionV();
149 bool appendPts=
true)
override;
151 bool appendPts=
true)
override;
152 int deleteRow(
unsigned int which)
override;
153 int deleteCol(
unsigned int which)
override;
171 int loftU(
int newcount,
int start=-1,
int stop=-1)
override;
172 int loftV(
int newcount,
int start=-1,
int stop=-1)
override;
184 int cycleU(
int amount,
int keepSpan = 1)
override;
185 int cycleV(
int amount,
int keepSpan = 1)
override;
197 int unrefine(
int udir,
int kidx,
199 int mult=0,
float tol=1e-4F,
201 int unrefine (
int udir,
int kidx,
int mult=0,
205 float getKnotRemovalBound(
int uDir,
int curveIdx,
206 int knotIdx,
int mult=0)
const;
251 float bias = 0.5
f,
float tolerance = 1.0
f,
255 float bias = 0.5
f,
float tolerance = 1.0
f,
263 float vstart,
float vstop)
const override;
292 float distTol=1e-10F,
float angTol=1e-2F,
293 int maxIter=50)
const;
297 virtual int translateBkptsFixed(
const UT_IntArray &uindices,
302 virtual int transformBkptsFixed(
const UT_IntArray &uindices,
310 virtual int translateBkptsNonFixed(
const UT_IntArray &uindices,
315 virtual int transformBkptsNonFixed(
const UT_IntArray &uindices,
335 int mult=0,
float tol=1e-4F,
342 int mult=0,
float tol=1e-4F,
377 int alignKnotU(
float k,
int &kidx,
378 int &cycFix,
int &interpFix);
379 int alignKnotV(
float k,
int &kidx,
380 int &cycFix,
int &interpFix);
382 void unAlignKnotU(
int &kidx,
int cycFix,
int interpFix);
383 void unAlignKnotV(
int &kidx,
int cycFix,
int interpFix);
virtual int loftV(int newcount, int start=-1, int stop=-1)=0
static GA_PrimitiveFamilyMask buildFamilyMask()
virtual int insertRow(unsigned int beforeWhich, bool appendPts=true)
virtual int refineU(float k, GA_AttributeRefMap &hlist, int i=1)
virtual GA_Basis * newBasis() const =0
virtual int unrollU(int append_pts=1)
virtual int raiseOrderVInt(int neworder)=0
virtual void openU(int preserveShape=0, int safe=0)
virtual int evaluateBreakpoint(int uidx, int vidx, UT_Vector4 &pos, int du=0, int dv=0) const =0
GEO_PrimNURBSurf(GA_Detail *d, GA_Offset offset=GA_INVALID_OFFSET)
virtual int evaluateBasisDerivs(float u, float v, float ubmatx[][GA_MAXORDER], float vbmatx[][GA_MAXORDER], int &rowoffset, int &coloffset, unsigned du=0, unsigned dv=0, int uoffset=-1, int voffset=-1) const =0
virtual int warp(float u, float v, const UT_Vector3 &delta, GA_AttributeRefMap &map, float usharpness=0.0f, float vsharpness=0.f, float ubias=-1.0f, float vbias=-1.0f)=0
virtual int deleteCol(unsigned int which)
virtual int warpU(float u, const UT_Vector3 &delta, GA_AttributeRefMap &map, float sharpness=0.0f, float bias=-1.0f)=0
virtual void wrapU(int rounded=1, int preserveShape=0)
virtual int unrefineUFloat(int kidx, int mult=0, float tol=1e-4F, GA_PointGroup *delgroup=0)
virtual int subdivideVRefMap(float u, GA_AttributeRefMap &map)
virtual int raiseOrderUInt(int neworder)=0
virtual int refineV(float k, GA_AttributeRefMap &hlist, int i=1)
virtual int subdivideURefMap(float u, GA_AttributeRefMap &map)
virtual int cycleV(int amount, int=1)
virtual int domainRangeOfCV(int i, int j, int &minuk, int &maxuk, int &minvk, int &maxvk) const =0
#define GA_INVALID_OFFSET
virtual bool isClampedU() const
virtual int insertCol(unsigned int beforeWhich, bool appendPts=true)
virtual int warpV(float v, const UT_Vector3 &delta, GA_AttributeRefMap &map, float sharpness=0.0f, float bias=-1.0f)=0
virtual int vMaxValidIndex() const
static GA_IntrinsicManager::Registrar registerIntrinsics(GA_PrimitiveDefinition &defn)
vint4 blend(const vint4 &a, const vint4 &b, const vbool4 &mask)
virtual int unrefineVRefMap(int kidx, GA_AttributeRefMap &h, int mult=0, float tol=1e-4f, GA_PointGroup *delgroup=0)
virtual int breakpointRangeOfCV(int i, int j, int &minbkpu, int &maxbkpu, int &minbkpv, int &maxbkpv) const =0
int attachV(const GEO_Hull &hull, int blend=1, float bias=0.5f, float tolerance=1.0f, int unrefine=1, GA_PointGroup *ptgroup=0) override
GA_API const UT_StringHolder trans
virtual int cycleU(int amount, int=1)
virtual int evaluateUBasis(float u, float *ubvals, int &coloffset, unsigned du=0, int uoffset=-1) const =0
virtual const GA_PrimitiveJSON * getJSON() const =0
virtual void openV(int preserveShape=0, int safe=0)
Provide a JSON interface to a primitive.
Bezier or NURBS basis classes which maintain knot vectors.
NURBS basis classes which maintain knot vectors.
virtual void reparameterizeV(GA_ParameterizationType ptype)=0
A handle to simplify manipulation of multiple attributes.
~GEO_PrimNURBSurf() override
virtual int evaluateBasis(float u, float v, float *ubvals, float *vbvals, int &rowoffset, int &coloffset, unsigned du=0, unsigned dv=0, int uoffset=-1, int voffset=-1) const =0
virtual int subdivideVFloat(float u)
virtual void reparameterizeU(GA_ParameterizationType ptype)=0
virtual int subdivideUFloat(float u)
virtual GEO_TPSurf * extract(float ustart, float ustop, float vstart, float vstop) const =0
GLfloat GLfloat GLfloat GLfloat h
virtual void wrapV(int rounded=1, int preserveShape=0)
virtual int translateBreakpoints(const UT_IntArray &uindices, const UT_IntArray &vindices, const UT_Vector3 &delta, int fixbkpts=1, GA_PointGroup *ptgroup=NULL, GEO_Delta *geodelta=0)=0
virtual int vMinValidIndex() const
int attachU(const GEO_Hull &hull, int blend=1, float bias=0.5f, float tolerance=1.0f, int unrefine=1, GA_PointGroup *ptgroup=0) override
virtual int unrefineVFloat(int kidx, int mult=0, float tol=1e-4F, GA_PointGroup *delgroup=0)
virtual int loftU(int newcount, int start=-1, int stop=-1)=0
virtual int uMaxValidIndex() const
virtual int uMinValidIndex() const
virtual int evaluateVBasis(float v, float *vbvals, int &rowoffset, unsigned dv=0, int voffset=-1) const =0
Container class for all geometry.
Definition of a geometric primitive.
virtual int unrefineURefMap(int kidx, GA_AttributeRefMap &h, int mult=0, float tol=1e-4f, GA_PointGroup *delgroup=0)
virtual int deleteRow(unsigned int which)
virtual bool isClampedV() const
static GA_IntrinsicManager::Registrar registerIntrinsics(GA_PrimitiveDefinition &defn)
static GA_PrimitiveFamilyMask buildFamilyMask()
virtual int raiseOrderVRefMap(int neworder, GA_AttributeRefMap &map)=0
virtual int raiseOrderURefMap(int neworder, GA_AttributeRefMap &map)=0
virtual int transformBreakpoints(const UT_IntArray &uindices, const UT_IntArray &vindices, const UT_Matrix4 &matx, int fixbkpts=1, GA_PointGroup *ptgroup=NULL, GEO_Delta *geodelta=0)=0
virtual int unrollV(int append_pts=1)