1
0

Quadtree(四分木)を p5.js で扱うための情報源を探してみる

Last updated at Posted at 2024-08-22

Quadtree(四分木)を p5.js で扱ってみたいと思い、そのために役立つ情報源を探してみたという話です。

情報源

動画

ざっくり調べたところ、有名どころの The Coding Train を見るのが、自分には一番良さそうな選択肢でした。

●Coding Challenge #98.1: Quadtree - Part 1 - YouTube
https://www.youtube.com/watch?v=OJxEcs0w_kE

動画は、上記と他に以下の 2つがあるようです。

●Coding Challenge #98.2: Quadtree - Part 2 - YouTube
 https://www.youtube.com/watch?v=QQx_NmCIuCY

●Coding Challenge #98.3: Quadtree Collisions - Part 3 - YouTube
 https://www.youtube.com/watch?v=z0YFFg_nBjw

このあたりの情報は、動画のコメント欄に書かれています。

image.png

動画の英語字幕を機械翻訳で日本語にしたものをつけて、動画を見ていくか、またはサンプルコードを見ていくか、どちらにしようかと思ったのですが、サンプルコードを見てみることにしました。

コード

動画に関係するコードのサンプルは、p5.js Web Editor上に用意されています。具体的には、以下の 2つがありました。

●p5.js Web Editor | Quadtree - Part 1
 https://editor.p5js.org/codingtrain/sketches/g7LnWQ42x

●p5.js Web Editor | Quadtree Collisions - Part 3
 https://editor.p5js.org/codingtrain/sketches/CDMjU0GIK

これらを軽く見ていきます。

Quadtree - Part 1

サンプルの 1つは、自分がマウスを操作して利用する形のものです。

具体的な動作は、以下の通りです。

  1. 画面内に白い区切り線と、白い点が描画されている
  2. マウスカーソルを動かすと、それに追従する緑の矩形が動く
  3. 緑の矩形の中に白い点が入ったら、点の色が緑になる

矩形と点の衝突判定の処理という感じのようです。

image.png

image.png

これを実現する JavaScript のプログラムは、以下のように 2つに分かれているようです。

image.png

それぞれの規模感は、30行ほどのものと、130行ほどのものという感じでした。

Quadtree Collisions - Part 3

もう 1つの残りのサンプルは、以下の動作になるようです。

  1. 黒い背景のキャンバスに、たくさんのグレーの円が動いている
  2. グレーの円同士が衝突した時は、円の色が白くなる

image.png

これを実現する JavaScript のプログラムは、以下のように 3つに分かれているようです。

image.png

それら全体は、230行くらいの規模のようでした。

おわりに

p5.js で Quadtree(四分木)を試すのに、まずは上記のサンプルを見てみるのが自分には良さそうでした。

これから、コードを見ていきながら、動画も見て内容を把握していければと思います。

その他

今回、メインの内容として The Coding Train の動画・サンプルコードを掲載しましたが、他に調査をしていた中で気になった情報をメモしておきます。

気になった JavaScript ライブラリ

Quadtree について検索していた時、JavaScriptライブラリの情報が出てきたのですが、その中で自分が気になったものを以下に掲載してみます。

ライブラリのリポジトリ

●timohausmann/quadtree-js: A lightweight quadtree implementation for javascript
 https://github.com/timohausmann/quadtree-js?tab=readme-ov-file

●timohausmann/quadtree-ts: Quadtree Typescript Implementation
 https://github.com/timohausmann/quadtree-ts/

ライブラリの公式デモ

●quadtree-js Simple Demo
 https://timohausmann.github.io/quadtree-js/simple.html

image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0