Inherited from XItem,
Inherited by NULL
Friend class NodeManager,
Description
XNode从XItem继承,是对物理模型中的节点的数据抽象,它包含节点坐标信息,是单元必不可少的组成数据,也是XT框架中模型数据的重要组成部分,在模型内节点ID不可重复,它由NodeManager创建和销毁。
为了更方便的进行网格操作(编辑、修改或优化等等),XNode缓存了所有用到这个节点的单元指针信息并以数组的形式保存下来(XItemArray<ElemPtr,8>),综合考虑几何与实体网格的数据规模以及单元节点的数量关系,该数组以固定8个单元指针的大小增加或缩减容量,数组所使用的内存空间均从内存池中分配,这样可有效避免内存碎片化。单元的创建、修改以及销毁都将及时更新到该缓存数组中,XNode提供了接口访问这些单元,它在搜索构建节点领域信息时非常高效和有用(但也需要在创建单元时更新该数组)。在某些场合,一些节点没有任何单元与之关联,称之为浮动节点(Float Node)。
为了满足实际应用开发的需要,Node还提供了标志位和扩展数据接口,以保持或关联某些临时数据,比如setFlag函数常常用于设置一个时间戳,用来判断该节点是否已经被访问或者被处理,这比使用std::set类似的数据结构更高效也更省资源(需要注意的时,这种应用不适用于多线程)。
Members
Public interface
Vector3r m_dCoord
节点坐标
ulong m_ulFlag
节点标志位
int m_ulRId
在后处理中的结果索引
void * m_pExtData
XItemArray<ElemPtr,8> m_pElems
XNode(ulong id = 0)
void setFlag(int i)
int getFlag() const
void setExtData(const void * pData)
void * getExtData() const
void increaseFlag()
void increaseElementCount()
void decreaseElementCount()
int getRId() const
void setRId(int id)
void setCoord(const real * coord)
const real * getCoord() const
int getElementCount() const
int find(ElemPtr el) const
void read(XBinaryIO * io)
void write(XBinaryIO * io)
ElemPtr getElement(int index) const
void copyElementToArray(XArray<ElemPtr> & elArr) const