NURBSPointSurface Class Reference

#include <surf_api.h>

Class Description

See also
Class NURBSSurface, Class NURBSIndependentPoint.

Description:
This class defines a surface that uses points to describe its shape. This class has methods to close the surface in U and V, set the number of points in U and V, and get/set the points in U and V. There is also a method to add additional points to the surface. The point surface has a transformation matrix used to set the relative position of the surface in a NURBSSet.

All methods of this class are implemented by the system.
+ Inheritance diagram for NURBSPointSurface:

Public Member Functions

DllExport NURBSPointSurface (void)
 
virtual DllExport ~NURBSPointSurface (void)
 
DllExport NURBSPointSurface & operator= (const NURBSPointSurface &surf)
 
DllExport void CloseInU (void)
 
DllExport void CloseInV (void)
 
DllExport void SetNumPts (int u, int v)
 
DllExport int GetNumUPts (void)
 
DllExport int GetNumVPts (void)
 
DllExport void GetNumPts (int &u, int &v)
 
DllExport NURBSIndependentPoint * GetPoint (int u, int v)
 
DllExport void SetPoint (int u, int v, NURBSIndependentPoint &pt)
 
DllExport void SetTransformMatrix (TimeValue t, SetXFormPacket &mat)
 
DllExport Matrix3 GetTransformMatrix (TimeValue t)
 
DllExport void Refine (TimeValue t, double u, double v, int U_V_Both)
 
- Public Member Functions inherited from NURBSSurface
void * GetSurfCache ()
 
void SetSurfCache (void *pCache)
 
DllExport NURBSSurface (void)
 
virtual DllExport ~NURBSSurface (void)
 
DllExport NURBSSurface & operator= (const NURBSSurface &surf)
 
DllExport BOOL Renderable ()
 
DllExport void Renderable (BOOL state)
 
DllExport BOOL FlipNormals ()
 
DllExport void FlipNormals (BOOL state)
 
DllExport BOOL GenerateUVs (int channel=0)
 
DllExport void SetGenerateUVs (BOOL state, int channel=0)
 
DllExport int MatID ()
 
DllExport void MatID (int id)
 
DllExport Point2 GetTextureUVs (TimeValue t, int i, int channel=0)
 
DllExport void SetTextureUVs (TimeValue t, int i, Point2 pt, int channel=0)
 
DllExport void GetTileOffset (TimeValue t, float &ut, float &vt, float &uo, float &vo, float &a, int channel=0)
 
DllExport void SetTileOffset (TimeValue t, float ut, float vt, float uo, float vo, float a, int channel=0)
 
DllExport NURBSTextureSurface & GetTextureSurface (int channel)
 
DllExport void SetTextureSurface (int channel, NURBSTextureSurface &texSurf)
 
DllExport int NumChannels ()
 
DllExport int GetChannelFromIndex (int index)
 
DllExport BOOL IsClosedInU (void)
 
DllExport BOOL IsClosedInV (void)
 
DllExport BOOL Evaluate (TimeValue t, double u, double v, Point3 &pt, Point3 &dPdU, Point3 &dPdV)
 
DllExport BOOL Evaluate (TimeValue t, double u, double v, Point3 &pt, Point3 &dPdU, Point3 &dPdV, Point3 &d2PdU2, Point3 &d2PdV2, Point3 &d2PdUdV)
 
DllExport void GetParameterRange (TimeValue t, double &uMin, double &uMax, double &vMin, double &vMax)
 
DllExport BOOL GetNURBSData (TimeValue t, int &degreeInU, int &degreeInV, int &numInU, int &numInV, NURBSCVTab &cvs, int &numKnotsInU, int &numKnotsInV, NURBSKnotTab &uKnots, NURBSKnotTab &vKnots)
 
DllExport BOOL GetCLPTextureSurfaceData (TimeValue t, int channel, int &degreeInU, int &degreeInV, int &numInU, int &numInV, NURBSCVTab &cvs, int &numKnotsInU, int &numKnotsInV, NURBSKnotTab &uKnots, NURBSKnotTab &vKnots)
 
DllExport int NumTrimLoops (TimeValue t)
 
DllExport int NumCurvesInLoop (TimeValue t, int loop)
 
DllExport BOOL Get2dTrimCurveData (TimeValue t, int loop, int curve, int &degree, int &numCVs, NURBSCVTab &cvs, int &numKnots, NURBSKnotTab &knots)
 
DllExport BOOL Get3dTrimCurveData (TimeValue t, int loop, int curve, int &degree, int &numCVs, NURBSCVTab &cvs, int &numKnots, NURBSKnotTab &knots)
 
DllExport TessApprox * GetProdTess (NURBSTessType type=kNTessSurface)
 
DllExport TessApprox * GetViewTess (NURBSTessType type=kNTessSurface)
 
DllExport void SetProdTess (TessApprox &tess, NURBSTessType type=kNTessSurface)
 
DllExport void SetViewTess (TessApprox &tess, NURBSTessType type=kNTessSurface)
 
DllExport void ClearViewTess (NURBSTessType type=kNTessSurface)
 
DllExport void ClearProdTess (NURBSTessType type=kNTessSurface)
 
- Public Member Functions inherited from NURBSObject
DllExport NURBSObject (void)
 
virtual DllExport ~NURBSObject (void)
 
DllExport NURBSObject & operator= (const NURBSObject &pt)
 
DllExport void SetName (const MCHAR *name)
 
DllExport const MCHAR * GetName (void)
 
DllExport NURBSType GetType ()
 
DllExport NURBSKind GetKind ()
 
DllExport NURBSId GetId ()
 
DllExport void SetId (NURBSId id)
 
DllExport void SetNSet (NURBSSet *nset)
 
DllExport void SetObject (Object *object)
 
DllExport Object * GetMAXObject ()
 
DllExport NURBSSet * GetNSet ()
 
DllExport int GetIndex ()
 
DllExport BOOL IsSelected ()
 
DllExport void SetSelected (BOOL set)
 

Friends

class NURBSSet
 

Additional Inherited Members

- Static Public Member Functions inherited from MaxHeapOperators
static UtilExport void * operator new (size_t size)
 Standard new operator used to allocate objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport void * operator new (size_t size, const std::nothrow_t &e)
 Standard new operator used to allocate objects if there is insufficient memory, NULL will be returned. More...
 
static UtilExport void * operator new (size_t size, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport void * operator new (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate objects that takes the type of memory, filename and line number where the new was called If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport void * operator new (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate objects that takes the filename and line number where the new was called If there is insufficient memory, NULL will be returned. More...
 
static UtilExport void * operator new (size_t size, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport void * operator new (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate objects that takes extra flags to specify special operations If there is insufficient memory, NULL will be returned. More...
 
static UtilExport void * operator new[] (size_t size)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport void * operator new[] (size_t size, const std::nothrow_t &e)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport void * operator new[] (size_t size, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport void * operator new[] (size_t size, int block_type, const char *filename, int line)
 New operator used to allocate arrays of objects. More...
 
static UtilExport void * operator new[] (size_t size, const std::nothrow_t &e, const char *filename, int line)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport void * operator new[] (size_t size, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, an exception will be thrown. More...
 
static UtilExport void * operator new[] (size_t size, const std::nothrow_t &e, unsigned long flags)
 New operator used to allocate arrays of objects If there is insufficient memory, NULL will be returned. More...
 
static UtilExport void operator delete (void *ptr)
 Standard delete operator used to deallocate an object If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an object If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an object that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an object that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete (void *ptr, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an object that takes extra flags to specify special operations If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e)
 Standard delete operator used to deallocate an array of objects If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, int block_type, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the type of memory, filename and line number where the delete was called If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, const char *filename, int line)
 Delete operator used to deallocate an array of objects that takes the filename and line number where the delete was called If the pointer is invalid, nothing will happen. More...
 
static UtilExport void operator delete[] (void *ptr, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void operator delete[] (void *ptr, const std::nothrow_t &e, unsigned long flags)
 Delete operator used to deallocate an array of objects that takes extra flags to specify special operations If the pointer is invalid, an exception will be thrown. More...
 
static UtilExport void * operator new (size_t size, void *placement_ptr)
 Placement new operator. More...
 
static UtilExport void operator delete (void *ptr, void *placement_ptr)
 Placement delete operator. More...
 
- Protected Member Functions inherited from NURBSObject
DllExport void Clean (NURBSIdTab ids)
 
- Protected Attributes inherited from NURBSSurface
NURBSTextureChannelSet mTextureChannelSet
 
BOOL mFlipNormals
 
BOOL mRenderable
 
int mMatID
 
BOOL mClosedInU
 
BOOL mClosedInV
 
TessApprox * mpVTess
 
TessApprox * mpRTess
 
TessApprox * mpRTessDisp
 
TessApprox * mpVTessCurve
 
TessApprox * mpRTessCurve
 
void * mpSurfCache
 
- Protected Attributes inherited from NURBSObject
MCHAR mName [NURBS_NAME_SIZE]
 
NURBSType mType
 
NURBSKind mKind
 
NURBSId mId
 
Object * mpObject
 
NURBSSet * mpNSet
 
BOOL mSelected
 

Constructor & Destructor Documentation

Remarks
Constructor. The data members are initialized as follows:

mType = kNPointSurface;

mClosedInU = FALSE;

mClosedInV = FALSE;

mpPts = NULL;
virtual DllExport ~NURBSPointSurface ( void  )
virtual
Remarks
Destructor. Any allocated points are deleted.

Member Function Documentation

DllExport NURBSPointSurface& operator= ( const NURBSPointSurface &  surf)
Remarks
Assignment operator.
Parameters:
const NURBSPointSurface& surf

The surface to assign.
DllExport void CloseInU ( void  )
Remarks
This method closes the surface in the U direction.
DllExport void CloseInV ( void  )
Remarks
This method closes the surface in the V direction.
DllExport void SetNumPts ( int  u,
int  v 
)
Remarks
Sets the number of points in the surface in the U and V directions. Any previously allocated points are not maintained when the new number is set. Note, if any of the u and v parameters are 1 or less, the method will return and do nothing.
Parameters
uThe number of points in U. Valid values are 2 and higher.
vThe number of points in V. Valid values are 2 and higher.
DllExport int GetNumUPts ( void  )
Remarks
Returns the number of points in the U direction.
DllExport int GetNumVPts ( void  )
Remarks
Returns the number of points in the V direction.
DllExport void GetNumPts ( int &  u,
int &  v 
)
Remarks
Retrieves the number of points in both the U and V directions.
Parameters:
int &u

The number in U is stored here.

int &v

The number in V is stored here.
DllExport NURBSIndependentPoint* GetPoint ( int  u,
int  v 
)
Remarks
Returns a pointer to the specified point in the surface.
Parameters:
int u

The zero based index of the point in the U direction.

int v

The zero based index of the point in the V direction.
DllExport void SetPoint ( int  u,
int  v,
NURBSIndependentPoint &  pt 
)
Remarks
Sets the specified point in the surface to the point passed.
Parameters:
int u

The zero based index of the point in the U direction.

int v

The zero based index of the point in the V direction.

NURBSIndependentPoint& pt

The point to set.
DllExport void SetTransformMatrix ( TimeValue  t,
SetXFormPacket &  mat 
)
Remarks
Sets the transformation matrix for the NURBSPointSurface. This controls the relative position of the surface within a NURBSSet.
Parameters:
TimeValue t

The time at which to set the matrix.

SetXFormPacket& xPack

An instance of the XFormPacket class that describes the properties of the transformation. See Class SetXFormPacket.
DllExport Matrix3 GetTransformMatrix ( TimeValue  t)
Remarks
Returns the transformation matrix of the NURBSPointSurface at the specified time.
Parameters:
TimeValue t

The time at which to retrieve the matrix.
DllExport void Refine ( TimeValue  t,
double  u,
double  v,
int  U_V_Both 
)
Remarks
This method adds a new point at the specified location on the surface without changing the shape of the surface. The location may be specified as a U value or a V value, or both.

If you refine in U (U_V_Both = 0) you must specify v

If you refine in V (U_V_Both = 1) you must specify u

If you refine in U and V (U_V_Both = -1) you must specify u and v
Parameters:
TimeValue t

The time at which to refine the surface.

double u

The location for the point in U space (range 0.0 to 1.0).

double v

The location for the point in V space (range 0.0 to 1.0).

int U_V_Both

This value must be 0, 1 or -1.

If 0 the refinement is done in u (and v is specified).

If 1 the refinement is done in v (and u is specified).

If -1 the refinement is done in both u and v (and both u and v must be specified).
Operators:

Friends And Related Function Documentation

friend class NURBSSet
friend