cost 398 ms
如何有效地存储八叉树的不同节点类型 - How to efficiently store different node types of an octree

我正在努力实现稀疏体素八叉树,但我不知道如何有效区分分支节点和叶节点。 我想到的一种方法是将 Node 指针向下转换为子类,但我担心转换数千次会对性能造成很大影响 然后我读到了类型联合,但是我的编译器变得疯狂,在尝试访问联合变量时我遇到了很多奇怪的错误。 现在我正在考虑将数据存储在一个足够大的位掩码 ...

2022-12-16 12:06:07   2   37    c++ / octree  
如何在不分配数组的情况下正确声明指向数组的类成员指针 - How to properly declare a class member pointer to an array without allocating array

我是 C++ 新手,正在尝试创建我的第一个八叉树结构。 存储子节点的常用方法是在每个节点中存储 8 个指针。 像这样: 这意味着每个节点将包含 8 个指针,每个节点是 64 个字节。 每个叶子也将存储 8 个空指针。 为了避免内存浪费,我只想存储一个指向第一个孩子的指针并且仅在细分叶子期间分配 ...

使用 cout 从八叉树打印元素会改变内容吗? - Printing an element from an octree with cout alters the content?

我尝试在 c++ 中创建一个八叉树。似乎工作得很好,但是当我打印树的内容时,它返回访问冲突错误。 在调试中运行它会打印两个不同的数字,尽管内容应该没有改变。 这是打印输出: 从我所做的挖掘来看,cout 语句似乎最终改变了八叉树 object。我不明白为什么会发生这种情况。 如果我的方法有问题,那 ...

如何填补八叉树移动立方体算法中不同细节级别之间的差距? - How to fill gaps between different level of detail in octree-marching cubes algorithm?

我正在尝试在八叉树上实施行进立方体。 这是我想弄清楚的二维图,它会更容易解释: 八叉树的每个节点代表平面中的一个正方形(或空间中的立方体),并存储我运行行进立方体算法的势能值。 现在,八叉树不是建立在数据集(空间中的势能)上,而是在运行时建立以在任何我想要的地方提供细节,并且可以卸载/加载分支以 ...

为什么 glTextureStorage*D 函数消耗这么多内存? opengl 究竟做了什么? - Why glTextureStorage*D functions consume so much memory ? What opengl actually do?

以上是我的源代码,如你所见,砖块向量的数量是600000,纹理是27 texel(3 * 3 * 3)的3d单通道纹理。 因此,数据大小为 600000 * 27 * 4 字节 = 64MB。 但是当我运行代码时,这些纹理的内存使用量超过了3GB,这让我很困惑。 我想知道 opengl 在 gl ...

借用并赋值给后面 & 引用 - Borrow and assign to values behind & reference

所以我试图在 Rust 中制作我自己的八叉树,但是我的set函数有问题。 它应该是递归的,并且有一点我正在匹配子节点。 除了,它有两个错误: 它不能借子作为可变的,因为它在 & 引用后面。 如果确实存在,我不知道如何创建一个新孩子。 由于我的Octree持有对子Octree的引用, ...

CPU 上的并行八叉树构造 - Parallel octree construction on the CPU

我做了一个八叉树的简单实现。 现在我试图在 CPU 上并行构建树。 首先,我尝试将向树的子节点添加点的步骤平行(这是构建中成本最高的步骤),但是由于每次添加点时都必须锁定向量/列表,因此它没有获得任何性能优势。 现在我试图使树中每个节点的构造并行。 这个想法很简单,应该是直截了当的,因为节点之间 ...

如何在下面的代码中返回指向children[poz]的父节点的指针? - How to return a pointer to the parent node of children[poz] in the following code?

我试图在八叉树中找到一个特定的 RGB 点(在我已经插入它之后),我希望这个 function 返回指向该节点的父节点的指针或包含该节点及其兄弟的列表。 我怎样才能改变这个代码来得到它? 此外,当遇到空节点时,我尝试返回 nullptr 或 NULL,但出现编译错误:没有从“nullptr_t”类 ...

2021-03-20 14:55:46   1   32    c++ / octree  
boolean 几何的射线到八叉树交点 - Ray to Octree Intersection for boolean geometry

我正在尝试做 boolean 几何,我有两个网格并想计算它们之间的交点。 所以我从网格 A 构造一个八叉树,并检查网格 B 的顶点与八分圆,如果有交集,检查八分圆三角形是否相交,然后添加三角形,构造一个网格。 现在我只得到如图所示的两张脸,不确定问题出在哪里。 更新: 我遵循了 Spektre 所 ...

带有 3d 阵列接口的八叉树 - Octree with 3d array like interface

我想使用八叉树来节省空间,因为我有一堆 3d arrays 有很多相同的数据(体素块,其中块只是 uint16)。 我已经看到用于光线遍历或空间分区的八叉树实现,但它们都包含八叉树中心和节点大小,我不需要任何这些,我只想要压缩数据存储。 我目前正在研究莫顿代码,但我什至不确定这是否是正确的做法。 ...

python 中的 BFS 到 DFS 八叉树转换 - BFS to DFS octree conversion in python

我正在使用由第三方软件构建的八叉树。 这个软件报告了如何以广度优先的方式遍历树,但我想以深度优先的方式遍历树。 对于我的应用程序(为天体物理学应用程序从粒子数据构建网格),我倾向于根据它们的“精炼”列表来考虑八叉树,即对于不精炼的单元格,我们将有: 而对于细化为 Oct 的单个单元格,我们将有: 我 ...

蟒蛇3。 八叉树实现涉及很多 memory。 如何优化? - Python3. Octree implementation engages a lot of memory. How to optimize?

我开发游戏服务器并希望在地图上保留实时对象位置。 为此,我使用八叉树算法。 但是现在我的实现占用了很多内存,为了测试我试图填充几个地图,即使没有对象,八叉树也为每个 map 占用大约 1 GB + 大约 1 GB 的对象(我将所有对象存储在 dict 中并单独存储 guid 列表每个八叉树节点根据 ...

网格中最近点搜索的高效算法 - Efficient algorithm for nearest point search in a grid

我正在寻找一种可以在网格中进行有效搜索的算法。 我有一个大数组,其中包括所有质心点(x,y,z) 现在对于给定位置(xp,yp,zp),我想找到最接近该p位置的质心。 目前,我正在进行蛮力搜索,基本上,我要针对每个点p遍历所有点,计算到位置p的距离,然后找出哪个质心。 我 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM