NURBSCurve Class Reference

#include <nurbs.h>

Class Description

Definition at line 17 of file nurbs.h.

+ Inheritance diagram for NURBSCurve:

Classes

struct  ChordLength
 

Public Member Functions

 NURBSCurve (int iDegree=2, bool bFalloff=false)
 
 ~NURBSCurve (void)
 
bool operator== (const NURBSCurve &) const throw ()
 
bool operator!= (const NURBSCurve &v) const throw ()
 
void SetVisible (bool bVisible)
 Sets the node visibility Should be overridden in derived classes. More...
 
bool Visible (void)
 
bool AddCP (const Vector &v, int iIndex=-1)
 
void RemoveCP (unsigned int iIndex)
 
void MoveCP (unsigned int iIndex, const Vector &v)
 
void Interpolate (const QList< CurvePoint > &points)
 
void RecalcKnots (void)
 
int GetDegree (void)
 
void SetDegree (int iDegree)
 
Matrix GetMatrix (void)
 
void Display (bool bScreen=true)
 
virtual void Render ()
 Virtual render method. More...
 
void Recalculate ()
 
void ProjectPoint (const Vector &vOrig, float fGuess, float &u, Vector &vProjected, float fMin=0.001f, float fMax=0.001f, int iMaxTry=100) const
 
void BasisFunction (float u, int i, Store< float > &N) const
 
void DeriveBasisFunction (int n, float u, int span, Store< Store< float > > &aDerF) const
 
int FindSpan (float u) const
 
void DeriveAt (float u, int iDeg, Store< Vector > &aDerivs) const
 
float GetMaxParam (void) const
 
Vector operator() (float u) const
 
void Serialize (Stream &s)
 Serialize the node. More...
 
Vector TransformToWorld (const Vector &v)
 
Vector TransformToLocal (const Vector &v)
 
NURBSCurveoperator= (const NURBSCurve &c)
 
void PrecalculateValues (void)
 
virtual void CalculateChordLengths (void)
 
float GetChordPos (float fLength)
 
void Close (void)
 
- Public Member Functions inherited from CurveBase
 CurveBase ()
 Constructor, initializes internal variables. More...
 
virtual ~CurveBase ()
 Virtual destructor. More...
 
void SetSelected (bool bTOrF)
 Set and get selection state. More...
 
bool Selected () const
 
virtual void SetClosed (bool bTOrF)
 Creates a loop. More...
 
bool Closed () const
 
virtual mudbox::Color Color (void) const
 Control the color of the curve, default is green. Note that selected curves always rendered with yellow color. More...
 
virtual void SetColor (const mudbox::Color &cColor)
 
virtual void ResetColor (void)
 
virtual void SetGeometry (mudbox::Geometry *pGeom)
 Set the mesh that this curve is associated with. More...
 
mudbox::GeometryGeometry () const
 
virtual const AxisAlignedBoundingBoxBoundingBox ()
 Return world space bounding box. More...
 
virtual void CopyTo (Node *pNode) const
 Copies this nodes data into passed in node. More...
 
virtual float Length () const
 Returns length of curve in curve's coordinate system. More...
 
- Public Member Functions inherited from GroupNode
virtual class TransformationTransformation (void) const
 This method returns the Transformation node attached to this node (i.e., its Parent in the scene hierarchy). More...
 
- Public Member Functions inherited from TreeNode
 TreeNode (void)
 
 ~TreeNode (void)
 
virtual void AddChild (TreeNode *pChild, bool bFirst=false) const
 Adds a node/subtree to the list of children. The added node will be removed from the current parent if it has one. More...
 
virtual void RemoveChild (TreeNode *pChild) const
 Removes a node/subtree from the list of children. More...
 
virtual TreeNodeFirstChild (void) const
 Returns the first node from the child list. More...
 
virtual TreeNodeParent (void) const
 Returns the parent node. More...
 
virtual TreeNodeNextSibling (void) const
 Returns the next linked node with the same parent. More...
 
virtual TreeNodePrevSibling (void) const
 Returns the previous linked node with the same parent. More...
 
virtual void MoveChild (TreeNode *pChild, TreeNode *pAfter)
 Moves the child after the given node in order. More...
 
virtual TreeNodeChildByClass (const ClassDesc *pClass, bool bAutoCreate=true) const
 Returns the first child with the specified type. When the bAutoCreate parameter is true and such a child does not exists, it creates it with the preferred descedant type. More...
 
template<typename type >
typeChildByClass (bool bAutoCreate=true) const
 Same as above, a most confortable version. More...
 
virtual TreeNodeChildByClass (const ClassDesc *pClass, unsigned int iIndex=0) const
 Returns the first child with the specified type, or returns zero if no child found. More...
 
template<typename type >
typeChildByClass (unsigned int iIndex=0) const
 Same as above, a most confortable version. More...
 
virtual void DeleteChildByClass (const ClassDesc *pClass)
 Deletes all child which is derived from a specific class. More...
 
virtual QString Info (void) const
 Returns descriptive information about the node. More...
 
virtual bool Visible (void) const
 Returns if the node is visible. Should be overridden in derived classes. More...
 
virtual bool Locked (void) const
 Returns if the node is locked. Should be overridden in derived classes. More...
 
virtual void SetLocked (bool b)
 Sets the locking of the node. Should be overridden in derived classes. More...
 
virtual bool HiddenFromUI (void) const
 Returns true if the node cannot be seen from UI. More...
 
virtual void SetHiddenFromUI (bool b)
 Sets visibility in UI. More...
 
virtual void OnLinked (const TreeNode *pOldParent)
 This function is called then the node is linked to a new parent. More...
 
virtual void CheckValidity (Node::DiagnosticLevel iLevel=dgnLevel2) const
 See the documentation for Node::CheckValidity. More...
 
QString UniqueChildName (const TreeNode *pChild, const QString &sPrefix="") const
 Finds a node name that is unique among the children of this node. More...
 
virtual void SetStringID (const QString &sName)
 This method does the same thing as Node::SetStringID, except it ensures the name is unique among this node's siblings. More...
 
- Public Member Functions inherited from Node
 Node (const QString &sStringID="", const QString &sDisplayName="")
 Standard constructor. More...
 
virtual ~Node (void)
 
virtual void Initialize (void)
 
void LoadTemplate (const QString &sFileName="", bool bStartEvent=false)
 Use an external XML file to initialize the attributes. More...
 
void SaveTemplate (const QString &sFileName="", bool bSaveOnlyVisible=false)
 Save current attributes as an XML template. More...
 
unsigned int Version (void) const
 Returns the current version of the node. This number increases when the content of the node changed (when ContentChanged() called). More...
 
void SetVersion (unsigned int iVersion)
 Sets the current version number for the node. More...
 
unsigned int ReferenceCount (void) const
 Returns the number of pointers referencing this node. More...
 
AttributeReferencePointer (unsigned int iIndex) const
 Returns the address of an attribute which refers to this node. The type of the attribute is always aptr. More...
 
NodeReferenceNode (unsigned int iIndex) const
 Returns the address of a node referencing this node. More...
 
virtual QString Name (const ClassDesc *pClass=0) const
 Deprecated. More...
 
virtual void SetName (const QString &sName)
 Deprecated. More...
 
virtual QString StringID (const ClassDesc *pClass=0) const
 Returns the string id of the node. More...
 
virtual QString DisplayName (void) const
 Returns the display name of the node. More...
 
virtual void SetDisplayName (const QString &sDisplayName)
 Sets the display name of the node. More...
 
virtual QString HelpID (void) const
 Returns the help entry id of the node. Can be overwritten in derived classes. More...
 
virtual void SetHelpID (const QString &sHelpID)
 Sets the help entry id of the node. More...
 
void Annex (Node *pSource, const QString &sCategory="")
 Relink all the attributes of the source node to this one. More...
 
bool IsKindOf (const ClassDesc *pClass) const
 Returns true if this node is derived from the pClass class. More...
 
void ContentChanged (void) const
 This function must be called if the content of the node is changed. More...
 
virtual NodeDuplicate (void) const
 
virtual void OnNodeEvent (const Attribute &cAttribute, NodeEventType cType)
 This function is called if an event occurs with any of the attributes of the node. More...
 
virtual void OnEvent (const EventGate &cEvent)
 This function is called when a generic event occurs. See EventGate class. More...
 
void RequestDeferredEvent (Attribute &cAttribute)
 Request for a deferred event, which will occur only in the main loop. More...
 
unsigned int AttributeCount (void) const
 Returns the number of attributes owned by the node. More...
 
AttributeAttributeByIndex (int iIndex) const
 Returns a specified attribute (or 0 if iIndex is greater than the number of attributes). More...
 
AttributeAttributeByName (const QString &sName) const
 Returns a specified attribute by its name. Returns 0 if the attribute not found. More...
 
AttributeAttributeByID (const QString &sID) const
 Returns a specified attribute by its ID. Returns 0 if the attribute not found. More...
 
void SetAttributeValue (const QString &sAttributeID, const QString &sNewValue)
 Set the value of an attribute from a string. More...
 
QString AttributeValue (const QString &sAttributeID) const
 Returns the current value of an attribute as a string. More...
 
void LogAttributes (void) const
 Write all attributes into the log file. More...
 
virtual QWidgetCreatePropertiesWindow (QWidget *pParent)
 Create a window which displays the attributes of the node. Can be overriden to provide a custom interface. More...
 
AttributeAddAttribute (Attribute::AttributeType type, const QString &id)
 Allows SDK users to add attributes at runtime. More...
 
NodeNext (void) const
 Returns the next node in the chain. Used to enumerate the current nodes. See also First(). More...
 
int ID (void) const
 Returns an ID for the node. The ID is unique in the whole application life. More...
 
bool SetID (int iID)
 Set ID for the node. More...
 

Public Attributes

 DECLARE_CLASS
 
int m_iCPs
 
int m_iSelectedCP
 
bool m_bEdited
 
bool m_bVisible
 
bool m_bClosed
 
bool m_bPrecalculated
 
float m_fTotalLength
 
float m_fPosX
 
float m_fPosY
 
float m_fAngle
 
float m_fScale
 
QString m_sName
 
Store< Vectorm_aCPs
 
Store< float > m_aKnots
 
Store< float > m_aPrecalc
 
NURBSCurvem_pFalloff
 
int m_iDegree
 
- Public Attributes inherited from TreeNode
 DECLARE_CLASS
 
- Public Attributes inherited from Node
AttributeThisPointer m_pThis
 
 DECLARE_CLASS
 

Protected Member Functions

virtual void CalculateChordLength (float fStart, float fEnd)
 

Protected Attributes

Store< ChordLengthm_aChordLengths
 
- Protected Attributes inherited from CurveBase
abool m_bSelected
 
abool m_bClosed
 
float m_aColor [4]
 
aptr< mudbox::Geometrym_pGeometry
 Mesh that this curve is associated with. Can be NULL. More...
 
AxisAlignedBoundingBox m_AABB
 3D world space bounding box const AxisAlignedBoundingBox &, More...
 
bool m_bRefreshBoundingBox
 

Additional Inherited Members

- Public Types inherited from Node
enum  DiagnosticLevel { dgnLevel1, dgnLevel2, dgnLevel3 }
 Indicates the level of validity checking that is performed in CheckValidity() More...
 
- Static Public Member Functions inherited from Node
static void StartHashing ()
 This is called once in main once static ctors are done. More...
 
static NodeFirst (void)
 This function will return the first node in the memory. Used to enumerate all the current nodes. See also Next(). More...
 
static NodeByID (int iID)
 Returns the node with the specified ID, or zero if such a node does not exists. More...
 
static NodeByName (const QString &sClass, const QString &sName)
 Search for a node with the name sName. More...
 

Constructor & Destructor Documentation

NURBSCurve ( int  iDegree = 2,
bool  bFalloff = false 
)
~NURBSCurve ( void  )

Member Function Documentation

bool operator== ( const NURBSCurve ) const
throw (
)
inline

Definition at line 25 of file nurbs.h.

25 { return false; };
bool operator!= ( const NURBSCurve v) const
throw (
)
inline

Definition at line 26 of file nurbs.h.

26 { return !operator ==( v ); };
bool operator==(const NURBSCurve &) const
Definition: nurbs.h:25
const GLdouble * v
Definition: GLee.h:1174
void SetVisible ( bool  b)
inlinevirtual

Sets the node visibility Should be overridden in derived classes.

Reimplemented from TreeNode.

Definition at line 28 of file nurbs.h.

28 { m_bVisible = bVisible; };
bool Visible ( void  )
inline

Definition at line 29 of file nurbs.h.

29 { return m_bVisible; };
bool AddCP ( const Vector v,
int  iIndex = -1 
)
void RemoveCP ( unsigned int  iIndex)
void MoveCP ( unsigned int  iIndex,
const Vector v 
)
void Interpolate ( const QList< CurvePoint > &  points)
void RecalcKnots ( void  )
int GetDegree ( void  )
inline

Definition at line 35 of file nurbs.h.

35 { return m_iDegree; };
void SetDegree ( int  iDegree)
Matrix GetMatrix ( void  )
void Display ( bool  bScreen = true)
virtual void Render ( )
virtual

Virtual render method.

Reimplemented from CurveBase.

void Recalculate ( )
void ProjectPoint ( const Vector vOrig,
float  fGuess,
float &  u,
Vector vProjected,
float  fMin = 0.001f,
float  fMax = 0.001f,
int  iMaxTry = 100 
) const
void BasisFunction ( float  u,
int  i,
Store< float > &  N 
) const
void DeriveBasisFunction ( int  n,
float  u,
int  span,
Store< Store< float > > &  aDerF 
) const
int FindSpan ( float  u) const
void DeriveAt ( float  u,
int  iDeg,
Store< Vector > &  aDerivs 
) const
float GetMaxParam ( void  ) const
inline

Definition at line 46 of file nurbs.h.

47  {
48  if( m_aKnots.ItemCount() == 0 )
49  return 0.0f;
50  return m_aKnots[m_aKnots.ItemCount()-1];
51  };
Store< float > m_aKnots
Definition: nurbs.h:115
unsigned int ItemCount(void) const
Returns the number of items in the array.
Definition: array.h:645
GLclampf f
Definition: GLee.h:9303
Vector operator() ( float  u) const
inline

Definition at line 52 of file nurbs.h.

53  {
54  Vector v;
55  if( m_iCPs <= m_iDegree )
56  return v;
57 
58  Store<float> aN( "NURBSCurve temp" );
59  int iSpan = FindSpan(u);
60  BasisFunction( u, iSpan, aN );
61 
62  for( int i = m_iDegree; i >= 0; --i )
63  {
64  v += aN[i] * m_aCPs[iSpan-m_iDegree+i];
65  };
66  return v;
67  };
void BasisFunction(float u, int i, Store< float > &N) const
const GLdouble * v
Definition: GLee.h:1174
int FindSpan(float u) const
Store< Vector > m_aCPs
Definition: nurbs.h:114
void Serialize ( Stream s)
virtual

Serialize the node.

Reimplemented from CurveBase.

Vector TransformToWorld ( const Vector v)
inline

Definition at line 69 of file nurbs.h.

70  {
71  Matrix m = GetMatrix();
72  return m.Transform( v );
73  };
Matrix GetMatrix(void)
const GLdouble * v
Definition: GLee.h:1174
Vector TransformToLocal ( const Vector v)
inline

Definition at line 74 of file nurbs.h.

75  {
76  Matrix m = GetMatrix();
77  m.Invert();
78  return m.Transform( v );
79  };
Matrix GetMatrix(void)
const GLdouble * v
Definition: GLee.h:1174
NURBSCurve& operator= ( const NURBSCurve c)
inline

Definition at line 80 of file nurbs.h.

81  {
82  m_iDegree = c.m_iDegree;
83  m_iCPs = c.m_iCPs;
84  m_iSelectedCP = c.m_iSelectedCP;
85  m_bEdited = c.m_bEdited;
86  m_bVisible = c.m_bVisible;
87  m_bClosed = c.m_bClosed;
88  m_bPrecalculated = c.m_bPrecalculated;
89  m_fTotalLength = c.m_fTotalLength;
90  m_fPosX = c.m_fPosX;
91  m_fPosY = c.m_fPosY;
92  m_fAngle = c.m_fAngle;
93  m_fScale = c.m_fScale;
94  m_sName = c.m_sName;
95  if( !m_pFalloff && c.m_pFalloff )
96  m_pFalloff = new NURBSCurve( 3, false );
97  if( c.m_pFalloff )
98  *m_pFalloff = *(c.m_pFalloff);
99  c.m_aCPs.Clone( m_aCPs );
100  c.m_aKnots.Clone( m_aKnots );
101  c.m_aPrecalc.Clone( m_aPrecalc );
102  return *this;
103  };
Store< float > m_aPrecalc
Definition: nurbs.h:116
float m_fAngle
Definition: nurbs.h:112
float m_fTotalLength
Definition: nurbs.h:111
bool m_bPrecalculated
Definition: nurbs.h:110
NURBSCurve(int iDegree=2, bool bFalloff=false)
QString m_sName
Definition: nurbs.h:113
NURBSCurve * m_pFalloff
Definition: nurbs.h:117
Store< float > m_aKnots
Definition: nurbs.h:115
float m_fScale
Definition: nurbs.h:112
const GLubyte * c
Definition: GLee.h:5419
Store< Vector > m_aCPs
Definition: nurbs.h:114
void PrecalculateValues ( void  )
virtual void CalculateChordLengths ( void  )
virtual
float GetChordPos ( float  fLength)
void Close ( void  )
virtual void CalculateChordLength ( float  fStart,
float  fEnd 
)
protectedvirtual

Member Data Documentation

DECLARE_CLASS

Definition at line 20 of file nurbs.h.

int m_iCPs

Definition at line 109 of file nurbs.h.

int m_iSelectedCP

Definition at line 109 of file nurbs.h.

bool m_bEdited

Definition at line 110 of file nurbs.h.

bool m_bVisible

Definition at line 110 of file nurbs.h.

bool m_bClosed

Definition at line 110 of file nurbs.h.

bool m_bPrecalculated

Definition at line 110 of file nurbs.h.

float m_fTotalLength

Definition at line 111 of file nurbs.h.

float m_fPosX

Definition at line 112 of file nurbs.h.

float m_fPosY

Definition at line 112 of file nurbs.h.

float m_fAngle

Definition at line 112 of file nurbs.h.

float m_fScale

Definition at line 112 of file nurbs.h.

QString m_sName

Definition at line 113 of file nurbs.h.

Store<Vector> m_aCPs

Definition at line 114 of file nurbs.h.

Store<float> m_aKnots

Definition at line 115 of file nurbs.h.

Store<float> m_aPrecalc

Definition at line 116 of file nurbs.h.

NURBSCurve* m_pFalloff

Definition at line 117 of file nurbs.h.

int m_iDegree

Definition at line 118 of file nurbs.h.

Store<ChordLength> m_aChordLengths
protected

Definition at line 128 of file nurbs.h.


The documentation for this class was generated from the following file: