我正在努力实现稀疏体素八叉树,但我不知道如何有效区分分支节点和叶节点。 我想到的一种方法是将 Node 指针向下转换为子类,但我担心转换数千次会对性能造成很大影响 然后我读到了类型联合,但是我的编译器变得疯狂,在尝试访问联合变量时我遇到了很多奇怪的错误。 现在我正在考虑将数据存储在一个足够大的位掩码 ...
我正在努力实现稀疏体素八叉树,但我不知道如何有效区分分支节点和叶节点。 我想到的一种方法是将 Node 指针向下转换为子类,但我担心转换数千次会对性能造成很大影响 然后我读到了类型联合,但是我的编译器变得疯狂,在尝试访问联合变量时我遇到了很多奇怪的错误。 现在我正在考虑将数据存储在一个足够大的位掩码 ...
有一个更好的方法吗? 不一定更漂亮,虽然它会很好。 或者换句话说,有没有办法复合条件,例如, 我假设循环不会比这更好……不确定。 提前致谢。 ...
我是 C++ 新手,正在尝试创建我的第一个八叉树结构。 存储子节点的常用方法是在每个节点中存储 8 个指针。 像这样: 这意味着每个节点将包含 8 个指针,每个节点是 64 个字节。 每个叶子也将存储 8 个空指针。 为了避免内存浪费,我只想存储一个指向第一个孩子的指针并且仅在细分叶子期间分配 ...
我尝试在 c++ 中创建一个八叉树。似乎工作得很好,但是当我打印树的内容时,它返回访问冲突错误。 在调试中运行它会打印两个不同的数字,尽管内容应该没有改变。 这是打印输出: 从我所做的挖掘来看,cout 语句似乎最终改变了八叉树 object。我不明白为什么会发生这种情况。 如果我的方法有问题,那 ...
假设Octree()是一个具有 double 类型元素的容器。 我可以使用sizeof(Octree)来确定我的八叉树占用了多少字节 memory 吗? 如果我更改八叉树的分辨率/深度, Sizeof()应该会更改 - 当我测试它时似乎并非如此。 有没有办法确定我的八叉树动态分配的 memory 大 ...
只需将 header 文件包含到我的代码中,我就会收到此错误。 我正在使用 Visual Studio 2019 和 c++17,我已经包含了 linker 文件,但它不想工作。 会是什么呢? 错误 C4996 'std::iterator<std::forward_iterator_tag, ...
我正在实现八叉树数据结构。 在八分圆中,我存储三角形。 所以问题:什么时候我需要停止在八叉树中划分八分圆? 我考虑八分圆中的最大深度或最大三角形数,但是我如何计算这些值? ...
我正在尝试在八叉树上实施行进立方体。 这是我想弄清楚的二维图,它会更容易解释: 八叉树的每个节点代表平面中的一个正方形(或空间中的立方体),并存储我运行行进立方体算法的势能值。 现在,八叉树不是建立在数据集(空间中的势能)上,而是在运行时建立以在任何我想要的地方提供细节,并且可以卸载/加载分支以 ...
以上是我的源代码,如你所见,砖块向量的数量是600000,纹理是27 texel(3 * 3 * 3)的3d单通道纹理。 因此,数据大小为 600000 * 27 * 4 字节 = 64MB。 但是当我运行代码时,这些纹理的内存使用量超过了3GB,这让我很困惑。 我想知道 opengl 在 gl ...
我必须在 Pyspark dataframe 上并行创建八叉树。我必须使用自下而上的方法创建八叉树。 我无法清楚地理解自下而上的方法。 有人可以写简短的方向吗? 我需要开始什么。 首先,我将所有点分成 8 个块。 帮我 ...
所以我试图在 Rust 中制作我自己的八叉树,但是我的set函数有问题。 它应该是递归的,并且有一点我正在匹配子节点。 除了,它有两个错误: 它不能借子作为可变的,因为它在 & 引用后面。 如果确实存在,我不知道如何创建一个新孩子。 由于我的Octree持有对子Octree的引用, ...
我做了一个八叉树的简单实现。 现在我试图在 CPU 上并行构建树。 首先,我尝试将向树的子节点添加点的步骤平行(这是构建中成本最高的步骤),但是由于每次添加点时都必须锁定向量/列表,因此它没有获得任何性能优势。 现在我试图使树中每个节点的构造并行。 这个想法很简单,应该是直截了当的,因为节点之间 ...
我试图在八叉树中找到一个特定的 RGB 点(在我已经插入它之后),我希望这个 function 返回指向该节点的父节点的指针或包含该节点及其兄弟的列表。 我怎样才能改变这个代码来得到它? 此外,当遇到空节点时,我尝试返回 nullptr 或 NULL,但出现编译错误:没有从“nullptr_t”类 ...
我正在尝试做 boolean 几何,我有两个网格并想计算它们之间的交点。 所以我从网格 A 构造一个八叉树,并检查网格 B 的顶点与八分圆,如果有交集,检查八分圆三角形是否相交,然后添加三角形,构造一个网格。 现在我只得到如图所示的两张脸,不确定问题出在哪里。 更新: 我遵循了 Spektre 所 ...
我想使用八叉树来节省空间,因为我有一堆 3d arrays 有很多相同的数据(体素块,其中块只是 uint16)。 我已经看到用于光线遍历或空间分区的八叉树实现,但它们都包含八叉树中心和节点大小,我不需要任何这些,我只想要压缩数据存储。 我目前正在研究莫顿代码,但我什至不确定这是否是正确的做法。 ...
我正在使用由第三方软件构建的八叉树。 这个软件报告了如何以广度优先的方式遍历树,但我想以深度优先的方式遍历树。 对于我的应用程序(为天体物理学应用程序从粒子数据构建网格),我倾向于根据它们的“精炼”列表来考虑八叉树,即对于不精炼的单元格,我们将有: 而对于细化为 Oct 的单个单元格,我们将有: 我 ...
我开发游戏服务器并希望在地图上保留实时对象位置。 为此,我使用八叉树算法。 但是现在我的实现占用了很多内存,为了测试我试图填充几个地图,即使没有对象,八叉树也为每个 map 占用大约 1 GB + 大约 1 GB 的对象(我将所有对象存储在 dict 中并单独存储 guid 列表每个八叉树节点根据 ...
如果八叉树级别为 0,那么我有 8 个节点。 现在,如果八叉树级别为 1,那么我有 72 个节点。 但是如果我有(例如)500 个节点,我如何计算级别是多少? ...
Octree用于保持体素水平,单个Octant具有16x16x16体素。 需要在所有6个面上获得Octant的邻居体素(邻居必须没有孩子)才能为无缝网格创建正确的网格边框。 面可以有几个邻居或邻居的一部分。 例如: Octant具有比例64,一个邻居具有比例32 ...
我正在寻找一种可以在网格中进行有效搜索的算法。 我有一个大数组,其中包括所有质心点(x,y,z) 现在对于给定位置(xp,yp,zp),我想找到最接近该p位置的质心。 目前,我正在进行蛮力搜索,基本上,我要针对每个点p遍历所有点,计算到位置p的距离,然后找出哪个质心。 我 ...