在八叉树节点中存储数据

时间:2019-02-26 18:22:58

标签: c# inheritance recursion struct octree

作为实现双重轮廓(https://www.cse.wustl.edu/~taoju/research/dualContour.pdf)的一部分,我试图在C#中以递归方式构造一个八叉树。 该算法建议使用三种类型的八叉树节点,因为某些数据仅与特定节点有关。这三种节点类型共享几个属性,例如位置,大小和顶点缓冲区索引,但是它们每个都还需要存储一些唯一的数据。下面显示了其中一种节点类型的示例,以及属于该节点类型的唯一字段。

异类节点:OctreeNode

-int位域

-浮动qefResult

-Vector3 []点

-Vector3 []法线

我计划有一个基类OctreeNode和一个OctreeNode数组,我将在其中存储所有节点。但是,除非将其向下转换为一个OctreeNode,否则我无法以这种方式访问​​HeterogeneousNode的唯一属性,我相信设计不好。

我也尝试过仅使用OctreeNode类并将唯一数据放置在结构中。这似乎是错误的,因为这意味着将struct字段保留为不需要存储多余数据的节点的默认值。

是否有更好的方法来解决此问题?谢谢

0 个答案:

没有答案