2013-11-27 73 views
1

我嘗試了很多事情,但沒有找到好的解決方案,所以我就在這裏。
在我的遊戲(2D)我要檢查我所有的對象碰撞(房子,車庫..),這是內部Rotated Rectangle圖像,從Point APoint B射線之間。檢查直線和旋轉矩形之間的相交處

我使用XNA有一些代碼:

public void Update(List<Obstacle> Lob, DragObj Ldo) 
{ 
    bool inter = false; 
    Point A; 
    Point B; 

    A = new Point((int)pos.X, (int)pos.Y); 
    B = new Point((int)Ldo.Position.X, (int)Ldo.Position.Y); 
    for (int j = 0; j < Lob.Count(); j++) 
    { 
     if (inter = interclass.LineIntersectsRect(A, B, Lob[j].Shape)) // I have this for the moment, Shape is the rectangle but not rotated) 
     { 
      inter = true; 
      islight = false; 
     } 
     else 
     { 
      inter = false; 
     } 
    } 
} 

所以要解決我的問題,我是否找到一個解決方案有一個rotatedRectangle對象與檢查碰撞線的方法。無論是完全別的東西,也許只是檢查直線和每個旋轉的矩形軸之間的碰撞?

感謝您的建議。

+0

嘗試旋轉線,而不是隻是一個小小的三角。 – MickLH

+0

旋轉線會改變我的2D空間組織,不是嗎?我會嘗試旋轉我的2點,但它不會很容易在我的當前代碼中實現。 – Gabson

+0

但你可以想象它的權利?如果將兩者放在一起並旋轉以使矩形爲直線,則可以使用常規的軸對齊的矩形函數 – MickLH

回答

-1

這裏也有類似的問題。主要建議是使用已經可用的庫做

How to intersect two polygons?

+0

我不想僅爲Line/RotatedRectangle問題使用2D物理引擎。 – Gabson

+2

簡單地鏈接到另一個問題並不特別適合作爲答案。這可能會更適合作爲評論或重複的標誌。 – Dukeling

0

我有求解這個問題由我的線和旋轉矩形的每一側(我要的各線路側旋轉之間檢查交集首先是矩形)。 我將很快發佈小算法。