Java 基于图形的桨叶碰撞侧面检测
我已经实现了一种乒乓球,其中的桨(矩形2D)可以旋转。 为了获得更高的准确度,许多事情都是通过Graphics2D进行管理的。 旋转也由上一个类的rotate(…)方法管理 为了达到一个真实的反弹,我需要知道球在哪里撞击到球拍(只有一侧,而不是特定的点) 我试着定义(并旋转)两个矩形2D,它们代表划桨的背面和正面,然后通过方法hit(矩形2D、形状s、布尔onStroke)识别其中一个的反弹,但它不能正常工作 以下是java类Graphics2D:Java 基于图形的桨叶碰撞侧面检测,java,algorithm,swing,graphics,collision-detection,Java,Algorithm,Swing,Graphics,Collision Detection,我已经实现了一种乒乓球,其中的桨(矩形2D)可以旋转。 为了获得更高的准确度,许多事情都是通过Graphics2D进行管理的。 旋转也由上一个类的rotate(…)方法管理 为了达到一个真实的反弹,我需要知道球在哪里撞击到球拍(只有一侧,而不是特定的点) 我试着定义(并旋转)两个矩形2D,它们代表划桨的背面和正面,然后通过方法hit(矩形2D、形状s、布尔onStroke)识别其中一个的反弹,但它不能正常工作 以下是java类Graphics2D: 你知道吗?假设你的桨有一个矩形,并且知道矩形
你知道吗?假设你的桨有一个矩形,并且知道矩形和圆的中心以及矩形的旋转。 假设旋转为零表示矩形水平对齐(宽度>高度)
- 计算差分向量(圆心)-(矩形中心)
- 获取该向量的角度并减去矩形的旋转(向量的角度是Math.atan2(y,x))
- 结果值a告诉您圆的相对方向
- 确保a介于0和2*pi之间
- 如果a在q和pi-q之间,则表示圆击中了前面的长边(上部)
- 如果a小于q或大于2*pi-q,则它位于右侧
- 如果a在pi-q和pi+q之间,则它位于左侧
- 如果a在pi+q和2pi-q之间,它将到达矩形的底部