2016-06-16 11 views
-1

私はこの分野では新しく、質問があります -
私は画像とオブジェクトを持っています。オブジェクトを"ボール"と呼ぶことにしましょう。
ボールは動いており、ある時点で画像に到達しています。そしてここに私の問題があります -
ボールがイメージに触れたことをどうやって検出できますか?
ありがとうございます。画像に届く物体を検出する

答えて

0

オブジェクトをいくつかの数学的方法でモデル化する必要があります(閉じたポリゴンなど)。次に、2つのポリゴン交差のアルゴリズムを検索することができます。

+0

ありがとうございました :) – Max

0

2Dで作業している場合、単純なRectanlge Collision検出を使用できます。 基本的に、矩形が他の矩形と衝突しているかどうかを確認するには、XとYの位置を幅と高さで確認する必要があります。

私は、HTML5のタグキャンバスを使用してjsfiddle例を持って下

jsfiddle:https://jsfiddle.net/e2dmef7q/

衝突をチェックするコードがRectToRectCollisionダウンだけで簡単に実行がxを使って

function Mathematics() 
{ 

} 

Mathematics.prototype.PointInRect = function(pnt_x, pnt_y, rect_x, rect_y, rect_w, rect_h) 
{ 
    if ((pnt_x >= rect_x) && (pnt_x <= rect_x + rect_w - 1)) 
    { 
     if ((pnt_y >= rect_y) && (pnt_y <= rect_y + rect_h - 1)) 
     {return true;} 
    } 
    return false; 
} 

Mathematics.prototype.RectToRectCollision = function(rect1_x, rect1_y, rect1_w, rect1_h, 
          rect2_x, rect2_y, rect2_w, rect2_h) 
{ 
    // top-left corner 
    if (this.PointInRect(rect1_x, rect1_y, rect2_x, rect2_y, rect2_w, rect2_h)){return true;} 
    // top-right corner 
    if (this.PointInRect(rect1_x + rect1_w - 1, rect1_y, rect2_x, rect2_y, rect2_w, rect2_h)){return true;} 
    // bottom-right corner 
    if (this.PointInRect(rect1_x + rect1_w - 1, rect1_y + rect1_h - 1, rect2_x, rect2_y, rect2_w, rect2_h)){return true;} 
    // bottom-left corner 
    if (this.PointInRect(rect1_x, rect1_y + rect1_h - 1, rect2_x, rect2_y, rect2_w, rect2_h)){return true;} 
    // Check to see if rectangle 2 is hit any part of rectanlge 1 
    // top-left corner 
    if (this.PointInRect(rect2_x, rect2_y, rect1_x, rect1_y, rect1_w, rect1_h)){return true;} 
    // top-right corner 
    if (this.PointInRect(rect2_x + rect2_w - 1, rect2_y, rect1_x, rect1_y, rect1_w, rect1_h)){return true;} 
    // bottom-right corner 
    if (this.PointInRect(rect2_x + rect2_w - 1, rect2_y + rect2_h - 1, rect1_x, rect1_y, rect1_w, rect1_h)){return true;} 
    // bottom-left corner 
    if (this.PointInRect(rect2_x, rect2_y + rect2_h - 1, rect1_x, rect1_y, rect1_w, rect1_h)){return true;} 
    // If there is no collision 
    return false; 
} 

です、y、幅と高さの2つの長方形。次に、PointInRect関数を使用して、矩形の点が他の矩形の内側にあるかどうかをチェックします。

P.S.私が提供したコードは、私が持っている古い例のものです。少し怖いように見えます。しかし、Mozillaのサイトには、2Dの衝突に関する素晴らしい情報があります。https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection

関連する問題