ややプログラム紀行

博士2年のプログラムに関する日記

4分木空間

カテゴリ「雑記」が続いていましたが、

今回はC++です

・・・という訳で「4分木空間分割」です

何日か前に「マルペケつくろー」というサイトを読むだけ読んで終わりましたが、

今日はその考え方に踏み込んでみます

と言っても、本来ならマルペケつくろーの説明を読むので十分理解出来るはずですが

僕は少しひっかかってしまったので(^_^;

そこを見ていきたいと思います

なのでここでは重要なことはとくに書きませんが是非見てみてください

①4分木空間分割ってなんでぇ

シューティングゲームなど、特に弾幕のようなものを作ると

弾、敵などの数が多くなります(そういうものなんで・・・)

そんな時、もし総当たりで『当たり判定』をした場合、どうしても処理速度が遅くなってしまい

パソコンによってはプレイできないほどになってしまうかもしれません

そこで考えつくのが『空間分割』です

空間分割とは柔らかく言うと、弾などのオブジェクトを位置によってグループ分けし、

自機と同じグループのオブジェクトとだけ当たり判定をする、ということなんです

まぁそこらへんは当たり判定の処理速度に悩んだ時にパッと思い浮かぶと思います

やったね!ってことで仕組みを考えてみます

すぐに思いつくのは空間を二次元配列にでも置き換えて(仮想空間って言うんでしたっけ?なんでしたっけ?わかりませんね (;´д`)トホホ ・・・ )自分の配列番号と照らし合わせ

もし同じならば当たり判定をする、という方法です

これなら実装も簡単そうだし決定・・・といきたいですが

これまた少し考えると問題が・・・(皆さんはすぐにわかると思いますが(^_^; )

そう、この方法では、オブジェクトが配列をまたいでたときに、どうにも出来ません

という訳でこの方法はボツに

では他にどんな方法を・・・

やっとここで出てきます

他の方法が『4分木空間分割』です!!

・・・『4分木空間分割』の説明をしたいところですけど

マルペケつくろーのほうが全然詳しいので、そちらを見てください(~_~

多分、次の記事は4分木空間分割②になると思いますが、そこでは4分木空間分割が何か、ということを分かった上で書くと思うのであしからず