我一直在使用jQuery,我在javascript中获得了这个代码用于四叉树:
map = array(
array(array(1,2,3,4), array(1,2,3,4), array(1,2,3,4), array(1,2,3,4)),
array(array(1,2,3,4), array(1,2,3,4), array(1,2,3,4), array(1,2,3,4)),
array(array(1,2,3,4), array(1,2,3,4), array(1,2,3,4), array(1,2,3,4)),
array(array(1,2,3,4), array(1,2,3,4), array(1,2,3,4), array(1,2,3,4))
);
map[0][3][3] = "END OF ARRAY 1";
map[1][3][3] = "END OF ARRAY 2";
Run Code Online (Sandbox Code Playgroud)
不过这对我来说就像一个3d数组,我是傻吗?^.^
我正在为四叉树编写一个删除方法.
现在,当您删除节点中的项目时,您需要检查其兄弟节点以查看是否需要折叠节点并将它们合并为一个节点.
为了检查兄弟姐妹,我应该存储指向父节点的指针,还是有办法以递归和更好的方式做到这一点?
谢谢
我很难掌握如何迭代八叉树或四叉树。这可能是因为我没有经历过不同的迭代神话。但是让 \xe2\x80\x99s 假设我生成了一个包含 float x,y,z 的四叉树;双字颜色。现在,让\xe2\x80\x99s也说这个节点一次只能产生4个子节点(并且这些子节点都可以产生4个子节点,等等),直到:达到7个级别(这样子节点可以\xe2 \x80\x99 不再创建子节点,但其兄弟/姐妹可以),创建的所有 4 个子节点具有相同的双字颜色(同样,如果发生这种情况,其兄弟/姐妹仍然可以生成),或者创建的节点总数等于 87380。当发生上述情况时,将其放入容器中。这个过程还在继续。
\n\n现在,这个保存节点的容器(例如)有 7 层深,子级的子级的子级的所有子级都有不同的 x、y、z 和颜色。我遇到的问题是如何迭代这个容器,如何遍历所有的孩子,姐妹?由于根导致 4 个子节点,而这 4 个子节点又有 4 个子节点,依此类推:4^1+4^2....+4^7。如何找到我想要的节点,而不编写复杂的 if 语句,并迭代整个节点(从根开始)?容器(生成节点的容器)是否需要额外的代码来简化这一过程?
\n\n抱歉,如果问题很笼统。
\n我有一组经纬度用于各种位置,也知道我当前位置的纬度和经度.我必须从当前位置找出最近的地方.哪种算法最好来自Kdtree和四叉树来找出纬度和经度集中的邻居位置?一个优于其他的优势是什么?你能否对此有所了解?另外,为了上述目的,我们如何在c#中实现这些算法呢?提前谢谢你的答案.
任何人都知道我在哪里可以找到一些文档,或者知道插入和查询在四叉树中有多少操作?
维基说O(logn),但我发现另一个来源说O(nlogn),我需要知道哪个是真的.
我正在使用点四叉树
http://www.codeproject.com/Articles/30535/A-Simple-QuadTree-Implementation-in-C http://en.wikipedia.org/wiki/Quadtree
我有一个包含我的节点的ArrayList.节点具有源,目标和成本.现在我必须迭代整个ArrayList.这持续一段时间超过1000个节点.因此,我尝试按来源对列表进行排序.但是要在列表中找到相应的对,我尝试了二进制搜索.不幸的是,只有当我想要比较源或目标时才有效.但我必须比较两者以获得正确的一对.还有另一种搜索ArrayList的可能性吗?
这是参考使用四叉树的地图平铺。
客户将给出(最高缩放级别、行、列)
你能告诉我如何找到下一个较低的 5 级瓷砖坐标吗?
(缩放级别,行,列)??
假设您有一个 32x32 的网格,可以使用以下任何块大小随机细分:
32x32、16x16、8x8、4x4
网格被细分多少次以及以何种方式进行细分是随机确定的。
从视觉上看,它可能看起来像这样:
这种类型的数据可以使用四叉树来表示。
我的问题是:
如果我尝试使用尽可能少的字节来表示上图,线性四叉树是否是最有效的方法?
我能想到的唯一其他选择是制作图表的所有可能组合,并使用单个数字来表示每个组合。
因此,对于该图,有 4 个分支级别(32x32、16x16、8x8、4x4),这将为我们提供 4^0 + 4^1 + 4^2 + 4^3 种可能的组合,等于 85 种组合。
因此,我能想到的存储图形的最小方法是使用 7 位(1010101 是二进制数 85)来表示可能的组合。
线性四叉树在存储效率方面会与此相同,还是会占用更多或更少的空间?
我正在学习 C++,并开始用 java 做一些我喜欢的事情。使用四叉树进行粒子模拟和聚集,以廉价地查找区域中的粒子。一切正常,但是当我使用四叉树从某个区域获取粒子时,速度非常慢(5000 次调用大约需要 1 秒)。
我尝试用数组替换向量并测量函数各个部分的执行时间。我是否犯了一些低级错误,例如不必要地复制对象等?我使用的是 5000 个粒子,我无法想象 1fps 是它能达到的最快速度。
根据请求的最小可重现示例的完整代码:
主程序
#include <string>
#include <iostream>
#include <random>
#include <chrono>
#include <thread>
#include <cmath>
#include "Particle.h"
#include "Quadtree.h"
// Clock
using namespace std::chrono;
using namespace std::this_thread;
// Global constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int desiredFPS = 30;
const int frameTimeMS = int(1000 / (double)desiredFPS);
const int numberOfParticles = 5000;
// Random number generation
std::random_device dev;
std::mt19937 …Run Code Online (Sandbox Code Playgroud) 我正在寻找一段合适的代码在我的应用程序中使用,在其中一个算法中。我找到了这个例子: http: //rosettacode.org/wiki/K-d_tree#C 但是当我将代码放入 xcode 中时,我收到错误,例如:
“使用未声明的标识符”,“预期为‘;’ 声明末尾”。我猜是缺少头文件吗?
quadtree ×10
java ×3
c++ ×2
kdtree ×2
android ×1
bing-maps ×1
c ×1
c# ×1
compression ×1
containers ×1
geolocation ×1
google-maps ×1
javascript ×1
objective-c ×1
octree ×1
performance ×1
search ×1
simulation ×1