问题标签 [quadtree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
592 浏览

algorithm - 检查四叉树水平对称性的算法?

给出上述定义,编写一个谓词来检查给定图像(编码为四叉树)是否关于垂直轴对称(水平对称)。尽可能使用匿名函数。

问题您将如何对给定的四叉树实施水平对称检查?

好吧,我在想这样的事情:当四叉树只是一片叶子时,在这种情况下我们有水平对称性。基本情况是当四叉树只有一层(四片叶子)对称性时,只需检查颜色即可(c1 == c2 && c3 == c4)

在任何其他情况下,我可能会检查此条件是否满足递归: nw equals (fliphorizontal(ne)) && sw equals (fliphorizontal(se)),其中fliphorizontal水平翻转四叉树并equals检查两个四叉树是否相等。但是,我想尽可能避免使用外部函数,如果可能的话只使用匿名函数。

编辑:翻转示例:

编辑:最终的单功能解决方案(使用四叉树的广义折叠函数):

0 投票
1 回答
423 浏览

haskell - 使用四叉树表示 2^nx 2^n 矩阵时

我刚刚在教科书上找到了定义,无法想象nexp应该做什么/意味着什么:

目的是nexp :: Int什么?

0 投票
2 回答
1520 浏览

haskell - 发生检查:不能构造无限类型?

我正在尝试编写一个函数,给定两个表示图像的四叉树,将输出另一个布尔四叉树“掩码”,True如果两个四叉树在相应位置具有相同的颜色,则具有像素值,False否则。

我收到此错误:

并且无法理解为什么。功能是:

0 投票
3 回答
946 浏览

algorithm - 帮助计算(四叉树)矩阵的列总和的算法?

给定这个定义和一个测试矩阵:

我正在尝试编写一个函数,该函数将输出列 sum的列表,例如:[13, 11, 18, 18]。基本思想是对每个子四叉树求和:

  • 如果四叉树是(C c),则输出 a 重复2 ^ (n - 1)次数的值c * 2 ^ (n - 1)示例:第一个四叉树是(C 5)所以我们重复5 * 2^(2 - 1) = 10,2 ^ (n - 1) = 2次,获得 [5, 5]。
  • 否则,给定(Q a b c d),我们zipWith是 a 和 c(以及 b 和 d)的 colsum。

当然这是行不通的(甚至不能编译),因为经过一些递归我们有:

因为我是从 Haskell 开始的,所以我觉得我错过了一些东西,需要一些关于我可以使用的功能的建议。不工作colsum 定义是:

任何想法都会很棒,非常感谢......

0 投票
3 回答
35495 浏览

data-structures - 用于二维碰撞检测的四叉树

我正在尝试使用四叉树进行 2D 碰撞检测,但我对如何实现它有点困惑。首先,我有一个四叉树,它包含四个子树(一个代表每个象限),以及一组不适合单个子树的对象。

当在树中检查对象的碰撞时,我会做这样的事情(感谢QuadTree 的 2D 碰撞检测):

  1. 检查对象是否与当前节点中的任何对象发生冲突。
  2. 对于空间与对象重叠的任何子树,递归。

要查找四叉树中的所有碰撞:

  1. 检查当前节点中的每个对象与当前节点中的其他对象。
  2. 针对每个子树检查当前节点中的每个对象。

插入四叉树:

  1. 如果对象适合多个子树,则将其添加到当前节点,然后返回。
  2. 否则,递归到包含它的任何子树。

更新四叉树:

  1. 递归到每个子树。
  2. 如果当前节点中的任何元素不再完全适合当前树,则将其移至父节点。
  3. 如果当前节点中的任何元素适合子树,则将其插入子树。

这可以吗?可以改进吗?

0 投票
3 回答
1734 浏览

java - QuadTree 如何适用于非方形区域?

我了解四叉树如何在方形图像上工作(通过分割图像直到该部分是单色,存储在叶节点中)。

如果图像的一个维度比另一个维度长,会发生什么情况,您最终可能会得到一个 2x1 像素区域作为最小的子单元,这使得使用四叉树划分方法来存储单一颜色变得困难。你会如何解决这个问题?

0 投票
1 回答
679 浏览

tree - 非正方形图像上的四叉树分解

有谁知道在非方形图像上执行四叉树分解的最佳方法?我一直在使用四叉树绘制的图像上出现线条。

0 投票
2 回答
432 浏览

java - 四叉树问题 - 存储冗余信息

我有一个不是正方形的图像(mxn 尺寸)。此外,它的尺寸不是以 2 为底的(即 m not = 2^k & n not = 2^k)。我已经通过使用以下方法将图像放置在一个更大的正方形(二的下一个幂)中来解决这个问题:

根据哪个产生最大尺寸,我将要绘制的正方形设置为最大尺寸,即:

问题:

四叉树现在看起来完全不同,因为它在树中存储了所有非图像节点。这显然会影响假定的图像数据(即最小/最大深度)和整个树形本身。我的问题是,我是否以有效的方式执行此操作,如果是,我如何不存储不属于图像的数据?如果这不是绘制非方形图像的最佳方法,有人可以指出我正确的方向吗?对我而言,谷歌上的所有文章似乎都太深入了。

0 投票
1 回答
1706 浏览

graph - 带四叉树的连通图(寻路)

我读了一些关于四叉树的文章,并试图利用它们进行寻路。为此,我尝试使用四叉树来创建一个连通图,其中每个“最小矩形”(无子节点)都直接连接到其相邻的最小矩形。为了说明......如果你看一下http://en.wikipedia.org/wiki/File:Point_quadtree.svg的右下角矩形,那个矩形是树中的一个无子节点,它应该是直接的连接到它周围的三个矩形,它们也是无子节点。

创建四叉树非常简单,但我不确定如何检测与它的连接。谁能给我一些见解?

提前致谢!

0 投票
4 回答
2134 浏览

algorithm - 试图理解四叉树的概念并将其应用于存储图像的着色信息

我已经阅读了很多文章,但似乎没有人回答这个问题。或者,也许我只是不明白。我正在尝试构建一个四叉树,以便它可以表示图像。叶节点将保存像素,非叶节点将保存其子节点的平均值。

我的问题是:

叶节点只保存像素是如何工作的?为什么其他节点不保存像素?我们怎么知道将原始根节点细分多少次来表示给定的图像?我们是否只是细分n时间,n高度和宽度在哪里(对于正方形)?

编辑:那么我如何跟踪叶节点,以便我知道何时在该位置添加像素?现在我有一个辅助函数,可以为我划分区域,跟踪宽度和高度。