2014-01-31 15 views
1

我實現了一種槳,其中的槳(Rectangle2D)可以旋轉。 爲了獲得更高的準確性,許多事情都由Graphics2D進行管理。 旋轉也由前面告訴課程的方法旋轉(...)來管理。使用圖形進行槳衝撞側檢測

爲了達到一個真實的反彈,我需要知道球擊中槳的位置(只有側面,而不是特定點)。

我試圖定義(和旋轉)2 矩形表示槳葉的背面和前側,然後通過該方法命中(矩形ř識別這兩種一個反彈,形狀s ,布爾onStroke),但它不能正常工作。

這裏是java類的Graphics2D

http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics2D.html

你有什麼想法?

回答

1

假設你有一個矩形爲你的槳,並知道矩形和圓的中心以及矩形的旋轉。 假設旋轉爲零意味着您的矩形水平對齊(寬度>高度)。

  • 計算差矢量(圓的中心) - (矩形的中心)
  • 獲取該矢量的角度和減去您的矩形的旋轉(矢量的角度是Math.atan2(Y,X) )
  • 將所得值的告訴您圓的相對方向
  • 確保0到2 * pi

q = Math.atan2(矩形的高度,長方形的寬度)

之間的位於
  • 如果a位於q和pi-q之間,那麼您的圈子已經碰到前面的長(上)側。
  • 如果a低於q或大於2 * pi-q,則它位於右側。
  • 如果a在pi-q和pi + q之間,則它位於左側。
  • 如果是PI + q和二皮-Q之間它打你矩形的下
+0

謝謝您的回答。我使用過它的重做版本。下面我將發佈我的代碼。 –