2012-02-13 132 views
1

我有以下參數碰撞檢測在旋轉矩形

  1. 的x,y座標(僅左上)旋轉的矩形的旋轉
  2. 角度
  3. 該矩形是通過旋轉的矩形範圍內其存在必須檢查
01點的矩形的中心
  • 寬度和高度
  • 座標

    如何檢查點是否位於矩形內?

    任何指針將不勝感激。謝謝。

  • +1

    點在多邊形(PIP)的問題(http://en.wikipedia.org/wiki/Point_in_polygon) – 2012-02-13 13:55:28

    +1

    [點在多邊形又名命中測試](HTTP:// stackoverflow.com/questions/217578/point-in-polygon-aka-hit-test) – 2012-02-13 13:57:30

    回答

    4

    基本檢查

    如果您的矩形不旋轉的問題僅限於檢查點(x,y)是一定範圍之間

    (rectangle.x, rectangle.x + rectangle.width) 
    (rectangle.y, rectangle.y + rectangle.height) 
    

    添加旋轉

    由於矩形旋轉,你可以做逆rotati將這一點提到「未旋轉的狀態」並進行上一次檢查。

    如何 「非旋轉」 點

    嘛。如果矩形旋轉27º,則「未旋轉」必須爲-27º(來自同一旋轉中心點)。

    如何旋轉指定旋轉中心點的點?

    嗯,你必須:

    1. 翻譯的東西,使(0,0)的中心點:是,翻譯原點(-x,-y),其中(X,Y)是旋轉
    2. 申請原產旋轉點(見下節)
    3. 撤消第一變換(平移(x,y),其中(X,Y)是旋轉

    旋轉點原點

    您必須進行矩陣乘法Ax。其中A是矩陣,x是旋轉點的(x,y)向量。

    矩陣A爲內置this way

    0

    如果您可以使用awt,您可以創建一個Shape實例,然後使用:Shape.contains(Point2D p)。

    文檔在此:http://docs.oracle.com/javase/1.5.0/docs/api/index.html?java/awt/Graphics.html 教程的Java 2D是在這裏:http://java.sun.com/developer/technicalArticles/GUI/java2d/java2dpart1.html#1

    HTH

    +0

    嗨大衛,我在Android上編程,所以我沒有訪問AWT。 – 2012-02-13 14:37:06

    +1

    我看到了 - 你能在事後添加問號嗎?如果你在其上粘貼標籤,你可能會涉及一些Android窺視。 – davidfrancis 2012-02-13 15:24:04

    +0

    我已經添加了大衛:)感謝您的建議。 – 2012-02-13 17:51:47