微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java-计算弹跳球的度数

我正在做一个简单的突破游戏,当球碰到顶部边界时,如何计算角度存在一些问题.当球以180度的角度向上移动时,它会以0度的角度向下反弹.但是,当球以170度的角度向上移动时,则应该以镜像角度(例如10度)向下弹回.我可以将其计算为180-170 = 10度,但是如果球以190度的角度向上运动怎么办!然后它应该以350度的角度向下反弹,但我不知道该如何计算!

有没有简单的方法可以计算或反映球的向上移动角度的值?由于我数学不好,因此需要一些帮助!谢谢!

编辑:
我像这样移动球:

xPos += speed * Math.sin(Math.toradians(direction));
yPos += speed * Math.cos(Math.toradians(direction));

解决方法:

要回答有关角度和反射的问题:

>确定角度测量系统.您告诉我们,向上移动的球的角度为180°,所以我想0°指向下方,并且该角度沿逆时针方向增大(90°指向右侧等).保持一致很重要.令d为该系统中球的运动角度.
>定义边界法线向量的角度.如果顶部的边界是水平的,则其法向矢量垂直于该边界,并且具有0°的角度(在点1定义的测量系统中).令n为该角度.垂直边界的n = 90°.
>球的出射角o表示为:

o = 2 * n-d-180°

请注意,您可能必须对此角度进行归一化,即您向o添加360°/从o减去360°,直到0°<= o< 360°.
d = 190°,n = 0°的示例:

o = 2*0° - 190° - 180° = -370°

如预期的那样,这将导致归一化后o = 350°.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐