2014-01-31 16 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

谢谢您的回答。我使用过它的重做版本。下面我将发布我的代码。 –