我有以下參數碰撞檢測在旋轉矩形
- 的x,y座標(僅左上)旋轉的矩形的旋轉
- 角度
- 該矩形是通過旋轉的矩形範圍內其存在必須檢查
如何檢查點是否位於矩形內?
任何指針將不勝感激。謝謝。
我有以下參數碰撞檢測在旋轉矩形
如何檢查點是否位於矩形內?
任何指針將不勝感激。謝謝。
基本檢查
如果您的矩形不旋轉的問題僅限於檢查點(x,y)是一定範圍之間
(rectangle.x, rectangle.x + rectangle.width)
(rectangle.y, rectangle.y + rectangle.height)
添加旋轉
由於矩形旋轉,你可以做逆rotati將這一點提到「未旋轉的狀態」並進行上一次檢查。
如何 「非旋轉」 點
嘛。如果矩形旋轉27º,則「未旋轉」必須爲-27º(來自同一旋轉中心點)。
如何旋轉指定旋轉中心點的點?
嗯,你必須:
旋轉點原點
您必須進行矩陣乘法Ax。其中A是矩陣,x是旋轉點的(x,y)向量。
矩陣A爲內置this way
如果您可以使用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
嗨大衛,我在Android上編程,所以我沒有訪問AWT。 – 2012-02-13 14:37:06
我看到了 - 你能在事後添加問號嗎?如果你在其上粘貼標籤,你可能會涉及一些Android窺視。 – davidfrancis 2012-02-13 15:24:04
我已經添加了大衛:)感謝您的建議。 – 2012-02-13 17:51:47
轉換所有座標轉換成旋轉參考系,其中矩形是在中心和沿軸線對準。然後檢查座標範圍。
幀之間轉換使用這些公式:http://en.wikipedia.org/wiki/Rotating_reference_frame#Relation_between_positions_in_the_two_frames
附:對不起,這個鏈接適合更多的靜態情況下: http://en.wikipedia.org/wiki/Rotation_(mathematics)#Matrix_algebra
點在多邊形(PIP)的問題(http://en.wikipedia.org/wiki/Point_in_polygon) – 2012-02-13 13:55:28
[點在多邊形又名命中測試](HTTP:// stackoverflow.com/questions/217578/point-in-polygon-aka-hit-test) – 2012-02-13 13:57:30