XNode

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