我已经实现了一种乒乓球,其中的桨(矩形2d)可以旋转。
为了获得更高的准确性,许多事情都是通过图形2d来管理的。
旋转也由前一个已知类的rotate(…)方法管理。
为了达到真实的弹跳效果,我需要知道球在哪里碰到球拍(只有侧面,而不是特定的点)。
我试着定义(和旋转)两个矩形2d来表示桨叶的背面和正面,然后通过hit方法(矩形2dr,形状s,布尔onstroke)识别其中一个的反弹,但它不能正常工作。
下面是Java类Graphics2d:
http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics2D.html
你知道吗?
最佳答案
假设你的桨有一个矩形,并且知道矩形和圆的中心以及矩形的旋转。
假设旋转零表示矩形水平对齐(宽度>高度)。
计算差矢量(圆心)-(矩形中心)
获取向量的角度,然后减去矩形的旋转(向量的角度是math.atan2(y,x))
结果值a告诉您圆的相对方向
确保a介于0和2*pi之间
q=Math.atan2(矩形的高度,矩形的宽度)
如果a介于q和π-q之间,则表示圆击中了前面的长边(上部)。
如果a小于q或大于2*pi-q,它就在右边。
如果a在π-q和π+q之间,它在左边。
如果a在pi+q和2pi-q之间,它就在矩形的底部