Get Adobe Flash player
Categories

You are currently browsing the 昔の記憶を掘り返す blog archives for 3月, 2010.

Archive for 3月, 2010

postheadericon あたり判定

書くネタがないので、昔習ったアルゴリズムを記憶を掘り返しながら書こうと思います。

今回は矩形同士のあたり判定について。

2つの矩形、AとBがあったとして、この2つのどこか1部分でも重なり合っていることを示すためには、

・矩形Aの左端が、矩形Bの右端より左

・矩形Aの右端が、矩形Bの左端より右

・矩形Aの上端が、矩形Bの下端より上

・矩形Aの下端が、矩形Bの上端より下

この4つ全てに当てはまった場合、矩形AとBのどこか1部分は重なり合っていると言えます。

C言語で書いてみると、

//wは幅、hは高さを表す。

//矩形は左上の頂点を軸に考えるので、xとyには矩形の左上の座標が入っているものとする。

int ax,ay,aw,ah;

int bx,by,bw,bh;

if( ax < bx + bw &&

     ax + aw > bx &&

     ay < by + bh &&

     ay + ah > by ){

    //あたり判定の処理

}

となります。