問題タブ [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 - 四分木水平対称性をチェックするアルゴリズム?

上記のように定義を与えて、与えられた画像(四分木としてコード化されている)が垂直軸に関して対称であるかどうかをチェックするための述語を書きます(水平対称)。可能な場合は無名関数を使用してください。

質問特定の四分木に対して水平対称性チェックをどのように実装しますか?

さて、私はこのようなことを考えていました。四分木が単なるである場合、その場合、水平対称になります。基本的なケースは、四分木が1つのレベル(4つのリーフ)しかない場合です。対称性は、色をチェックするだけの問題です(c1 == c2 && c3 == c4)

それ以外の場合は、この条件が再帰的に満たされているかどうかを確認できます nw equals (fliphorizontal(ne)) && sw equals (fliphorizontal(se))。ここでfliphorizontal、四分木を水平方向に反転し、equals2つの四分木が等しいかどうかを確認します。ただし、外部機能の使用はできるだけ避け、可能であれば匿名の機能のみを使用したいと思います。

編集:fliphの例:

編集:最終的な1関数ソリューション(四分木に一般化されたフォールド関数を使用):

0 投票する
1 に答える
423 参照

haskell - 四分木を使用して2^nx 2^n行列を表す場合

nexp教科書で定義を見つけたばかりで、何をするのか/意味するのか想像できません。

目的はnexp :: Int何ですか?

0 投票する
2 に答える
1520 参照

haskell - 発生チェック:無限型を構築できませんか?

True画像を表す2つの四分木が与えられた場合、両方の四分木が同じ色で対応する位置にある場合はピクセルの値を使用して、別のブール四分木「マスク」を出力する関数を作成しようとしていFalseます。

このエラーが発生します:

理由がわかりません。関数は次のとおりです。

0 投票する
3 に答える
946 参照

algorithm - (四分木) 行列の列の合計を計算するためのアルゴリズムに役立ちますか?

この定義とテスト マトリックスを考えると、次のようになります。

のように、列 sumのリストを出力する関数を作成しようとしています[13, 11, 18, 18]。基本的な考え方は、各サブ四分木を合計することです。

  • quadtree が(C c)の場合、値 の繰り返し2 ^ (n - 1)回数を出力しますc * 2 ^ (n - 1): 最初の四分木は、[5, 5] を取得(C 5)して を繰り返します。5 * 2^(2 - 1) = 102 ^ (n - 1) = 2
  • そうでなければ、与えられた(Q a b c d)zipWitha と c (および b と d) の colsum です。

もちろん、これは機能していません(コンパイルすらしていません)。

私は Haskell を使い始めているので、何かが足りないと感じています。使用できる機能についてアドバイスが必要です。コルサムの定義が機能しない:

どんなアイデアも素晴らしく、大歓迎です...

0 投票する
3 に答える
35495 参照

data-structures - 2D 衝突検出のための四分木

2D 衝突検出に四分木を使用しようとしていますが、実装方法に少し困惑しています。まず、4 つのサブツリー (各象限を表す 1 つ) と、1 つのサブツリーに収まらないオブジェクトのコレクションを含む 4 つ木があります。

ツリー内のオブジェクトの衝突をチェックするときは、次のようにします ( 2D 衝突検出のための QuadTree のおかげです)。

  1. 現在のノード内のオブジェクトとの衝突についてオブジェクトをチェックします。
  2. スペースがオブジェクトと重なっているサブツリーについては、再帰します。

四分木ツリー内のすべての衝突を見つけるには:

  1. 現在のノード内の各オブジェクトを、現在のノード内の他の各オブジェクトに対してチェックします。
  2. 各サブツリーに対して現在のノードの各オブジェクトをチェックします。

四分木に挿入するには:

  1. オブジェクトが複数のサブツリーに収まる場合は、現在のノードに追加して戻ります。
  2. それ以外の場合は、それを含むサブツリーに再帰します。

四分木を更新するには:

  1. 各サブツリーに再帰します。
  2. 現在のノードのいずれかの要素が現在のツリーに完全に収まらなくなった場合は、それを親に移動します。
  3. 現在のノードのいずれかの要素がサブツリーに収まる場合は、それをサブツリーに挿入します。

これでいいですか?改善できますか?

0 投票する
3 に答える
1734 参照

java - QuadTree は正方形ではない領域でどのように機能しますか?

クアッドツリーが正方形の画像でどのように機能するかを理解しています(セクションがリーフノードに保存される単一の色になるまで画像を分割することにより)。

画像の 1 つの次元がもう 1 つの次元よりも長い場合、最小サブユニットとして 2x1 ピクセル領域になる可能性があり、四分木分割法を使用して単一の色を保存することが難しくなります。この問題をどのように解決しますか?

0 投票する
1 に答える
679 参照

tree - 非正方形画像の四分木分解

非正方形の画像で四分木分解を実行する最良の方法を知っている人はいますか? クアッドツリーを使用して描画された画像に線が表示され続けます。

0 投票する
2 に答える
432 参照

java - 四分木の問題 - 冗長な情報を保存する

正方形 (mxn 次元) ではない画像があります。また、その次元は底が 2 ではありません (つまり、m not = 2^k & n not = 2^k)。以下を使用して、画像をより大きな正方形 (2 の次の累乗) に配置することで、これに対処しました。

どちらが最大の次元になるかに応じて、正方形を最大次元で描画するように設定します。つまり、次のようになります。

問題:

四分木は、すべての非画像ノードをツリーに格納しているため、完全に異なって見えます。これは明らかに想定される画像データ (最小/最大深度) とツリー全体の形状そのものに影響を与えます。私の質問は、これを効率的な方法で行っていますか?もしそうなら、画像に属さないデータを保存しないようにするにはどうすればよいですか? 正方形ではない画像を描画するのが最善の方法ではない場合、誰かが私を正しい方向に向けることができますか? Google のすべての記事は、私の目的には深すぎるようです。

0 投票する
1 に答える
1706 参照

graph - 四分木を使用した接続グラフ (パスファインディング)

四分木についていくつか読んだことがありますが、それらを経路探索に利用しようとしています。この目的のために、四分木を使用して接続グラフを作成しようとしています。このグラフでは、各「最小四角形」(子のないノード) が隣接する最小四角形に直接接続されています。説明すると... http://en.wikipedia.org/wiki/File:Point_quadtree.svgの右下の四角形を見ると、その四角形はツリー内の子のないノードであり、直接子のないノードでもある、それを囲む 3 つの四角形に接続されています。

四分木を作成するのは非常に簡単ですが、それとの接続を検出する方法がわかりません。誰かが私に洞察を提供できますか?

前もって感謝します!

0 投票する
4 に答える
2134 参照

algorithm - Trying to understand Quadtree concept and apply it to storing coloring info of an image

I've read so many articles, but none seem to answer this question. Or maybe I'm just not understanding. I'm attempting to build a quadtree so that it can represent an image. The leaf nodes are to hold pixels, and non-leaf nodes will hold the average value pixel of its children.

My question is:

How does it work that the leaf nodes only hold pixels? Why don't the other nodes hold pixels? And how do we know how many times to subdivide our original root node to represent that given image? Do we just subdivide it n times, where n is the height and width (for a square)?

Edit: So how do I keep track of leaf nodes, so I know when to add pixels at that location? Right now I have a helper function that divides the regions for me, keeping track of width and height.