14 #ifndef __GD_Curve_h__
15 #define __GD_Curve_h__
77 unsigned du=0,
int uOffset=-1)
const override;
90 virtual int evaluateBasisDerivs(
fpreal u,
92 int &cvoffset,
unsigned du = 0,
93 int uoffset = -1)
const = 0;
102 int &cvoffset,
unsigned du=0,
103 int uoffset=-1)
const = 0;
107 fpreal computeBValue(
float u,
int i)
const;
110 int curvature(
float u,
UT_Vector2 &curv)
const;
121 unsigned du=0)
const override;
126 virtual int domainRangeOfCV(
int cvidx,
int &mink,
127 int &maxk)
const = 0;
137 void weights(
unsigned short onOff)
override;
142 void normalizeWeights();
148 myBasis->normalize(len, neworigin);
155 if (ub && ub->
checkValid((
int)getVertexCount(),
169 {
return myBasis->getOrder(); }
171 {
return myBasis->getDimension(); }
192 bool binary)
const override;
196 virtual GA_Basis *newBasis()
const = 0;
208 int create(
GD_Curve *crv,
int nelems,
int closed,
209 int appendPoints = 1);
bool saveH9(std::ostream &os, bool binary, const UT_Array< GA_AttribSaveDataH9 > &prim_attribs, const UT_Array< GA_AttribSaveDataH9 > &vtx_attribs) const override
virtual int evaluate(float u, UT_Vector3 &pos, unsigned du=0, int uOffset=-1) const =0
virtual bool jsonSaveBasis(UT_JSONWriter &w) const
virtual bool loadPrivateH9(UT_IStream &is)=0
virtual void copySubclassData(const GA_Primitive *source)
const GLuint GLenum const void * binary
GA_Basis * myBasis
Curve's basis.
virtual bool savePrivateH9(std::ostream &os, bool binary) const =0
GLboolean GLboolean GLboolean GLboolean a
JSON reader class which handles parsing of JSON or bJSON files.
Class which writes ASCII or binary JSON streams.
virtual int64 getMemoryUsage() const
void normalizeDomain(fpreal len=0, fpreal *neworigin=0)
#define GA_INVALID_OFFSET
GD_Primitive * copy(int preserve_shared_pts=0) const override
const GA_Basis * getBasis() const
virtual bool jsonLoadBasis(UT_JSONParser &p)
static const UT_Array< GA_AttribSaveDataH9 > & theEmptySaveAttribs
Convience objects to pass as arguments to saveH9()/loadH9().
int setBasis(GA_Basis *ub)
virtual bool checkValid(int cvLen, int bLen, bool doesWrap) const =0
static GA_IntrinsicManager::Registrar registerIntrinsics(GA_PrimitiveDefinition &definition)
virtual void countMemory(UT_MemoryCounter &counter) const
virtual const GA_PrimitiveJSON * getJSON() const =0
GLsizei GLsizei GLchar * source
Provide a JSON interface to a primitive.
Bezier or NURBS basis classes which maintain knot vectors.
A handle to simplify manipulation of multiple attributes.
friend std::ostream & operator<<(std::ostream &os, const GD_Curve &d)
virtual void weights(unsigned short)
GLboolean GLboolean GLboolean b
unsigned getOrder() const override
bool isDegenerate() const override
Is the primitive degenerate.
GLfloat GLfloat GLfloat GLfloat h
virtual int breakCount() const =0
void setOrder(unsigned ord)
Class to store JSON objects as C++ objects.
virtual void validInterval(int &a, int &b) const
GLubyte GLubyte GLubyte GLubyte w
Definition of a geometric primitive.
virtual bool validate() const
virtual GA_Basis * getFaceBasis()
static GA_IntrinsicManager::Registrar registerIntrinsics(GA_PrimitiveDefinition &definition)
SYS_FORCE_INLINE bool isClosed() const
virtual bool evaluateBreakSegm(int ustartidx, int ustopidx, int lod, UT_Vector3Array &pos, unsigned du=0) const