Get Adobe Flash player

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 ){

    //あたり判定の処理

}

となります。

Leave a Reply

*