= 衝突判定
* ((<衝突判定システムの概要>))
* ((<SDL::CollisionMap>))

* ((<衝突判定関連メソッド>))
  * ((<SDL::Surface#make_collision_map>)) -- 衝突判定のためのCollisionMapを生成する。
  * ((<SDL::CollisionMap#collision_check>)) -- 衝突判定をします。
  * ((<SDL::CollisionMap.bounding_box_check>)) -- 2つの長方形が重なっているかどうかを判定します。
  * ((<SDL::CollisionMap#bounding_box_check>)) -- 2つの長方形が重なっているかどうかを判定します。
  * ((<SDL::CollisionMap#clear>)) -- 指定した範囲を衝突なしの状態にします。
  * ((<SDL::CollisionMap#set>)) -- 指定した範囲を衝突ありの状態にします。
  * ((<SDL::CollisionMap#w>)) -- 衝突判定用画像の幅を返します。
  * ((<SDL::CollisionMap#h>)) -- 衝突判定用画像の高さを返します。

== 衝突判定システムの概要
Ruby/SDL には ((<SGE|URL:http://www.etek.chalmers.se/~e8cal1/sge/index.html>))
由来の衝突判定システムがあります。
基本的な仕組みは、判定のある部分と無い部分の2値の長方形画像を生成し、
それを2つ持ってきて、重なっている部分を1ピクセルずつ見ていくことで
その2つが衝突しているか、つまり重なっているかどうかを判定します。

sample/collision.rb も参考にしてください。

== SDL::CollisionMap
衝突判定のための2値画像を表わすクラスです。
((<SDL::Surface#make_collision_map>)) によってのみインスタンスが作れます。

* ((<SDL::CollisionMap#collision_check>)) -- 衝突判定をします。
* ((<SDL::CollisionMap.bounding_box_check>)) -- 2つの長方形が重なっているかどうかを判定します。
* ((<SDL::CollisionMap#bounding_box_check>)) -- 2つの長方形が重なっているかどうかを判定します。
* ((<SDL::CollisionMap#clear>)) -- 指定した範囲を衝突なしの状態にします。
* ((<SDL::CollisionMap#set>)) -- 指定した範囲を衝突ありの状態にします。
* ((<SDL::CollisionMap#w>)) -- 衝突判定用画像の幅を返します。
* ((<SDL::CollisionMap#h>)) -- 衝突判定用画像の高さを返します。

== 衝突判定関連メソッド

--- SDL::Surface#make_collision_map
--- SDL::Surface#makeCollisionMap

    ((<SDL::Surface>)) のインスタンスから ((<SDL::CollisionMap>)) を生成します。
    ((|self|)) のピクセルのうちカラーキーで透明ピクセルになっている
    所が衝突しない所、そうでないピクセルが衝突するピクセルになります。

    失敗したときには例外((<SDL::Error>))を発生させます。


    このメソッドを使うには SGE が必要です。
    * See Also
      
      ((<SDL::Surface#set_color_key>)), ((<SDL::CollisionMap#collision_check>)), ((<SDL::CollisionMap#clear>)), ((<SDL::CollisionMap#set>))

--- SDL::CollisionMap#collision_check(x1, y1, cmap, x2, y2)

    ((|self|)) の左上が 座標 (((|x1|)), ((|y1|)))、もうひとつの
    ((<SDL::CollisionMap>)) のインスタンス ((|cmap|)) の左上が (((|x2|)), ((|y2|)))に
    ある場合に、この2つが重なっているかどうかを判定し、重なっている
    なら true を、いないなら false を返します。
    
    このメソッドは内部で ((<SDL::CollisionMap#bounding_box_check>)) を
    呼んでいます。


    このメソッドを使うには SGE が必要です。
    * See Also
      
      ((<SDL::CollisionMap#bounding_box_check>))

--- SDL::CollisionMap.bounding_box_check(x1,y1,w1,h1,x2,y2,w2,h2)
--- SDL::CollisionMap.boundingBoxCheck(x1,y1,w1,h1,x2,y2,w2,h2)

    左上が(((|x1|)),((|y1|)))、幅((|w1|))高さ((|h1|))の長方形と
    左上が(((|x2|)),((|y2|)))、幅((|w2|))高さ((|h2|))の長方形が
    重なっているかどうかを判定します。

    長方形が重なっていれば true を、いなければ false を返します。


    このメソッドを使うには SGE が必要です。
    * See Also
      
      ((<SDL::CollisionMap#bounding_box_check>))

--- SDL::CollisionMap#bounding_box_check(x1, y1, cmap, x2, y2)
--- SDL::CollisionMap#boundingBoxCheck(x1, y1, cmap, x2, y2)

    ((<SDL::CollisionMap>)) のインスタンスを長方形と見なし、
    ((|self|)) の左上が (((|x1|)), ((|y1|)))、((|cmap|)) の左上の点が (((|x2|)), ((|y2|)))に
    あるとして2つの長方形が重なっているかどうかを判定します。

    長方形が重なっていれば true を、いなければ false を返します。


    このメソッドを使うには SGE が必要です。
    * See Also
      
      ((<SDL::CollisionMap.bounding_box_check>)), ((<SDL::CollisionMap#collision_check>)), ((<SDL::CollisionMap#w>)), ((<SDL::CollisionMap#h>))

--- SDL::CollisionMap#clear(x, y, w, h)

    引数で指定した長方形を衝突なしの状態にします。


    このメソッドを使うには SGE が必要です。
    * See Also
      
      ((<SDL::CollisionMap#set>))

--- SDL::CollisionMap#set(x, y, w, h)

    引数で指定した長方形を衝突ありの状態にします。


    このメソッドを使うには SGE が必要です。
    * See Also
      
      ((<SDL::CollisionMap#set>))

--- SDL::CollisionMap#w

    衝突判定用画像の幅を返します。


    このメソッドを使うには SGE が必要です。
    * See Also
      
      ((<SDL::CollisionMap#h>))

--- SDL::CollisionMap#h

    衝突判定用画像の高さを返します。


    このメソッドを使うには SGE が必要です。
    * See Also
      
      ((<SDL::CollisionMap#w>))

