gpt4 book ai didi

java - 计算弹跳球的度数

转载 作者:太空宇宙 更新时间:2023-11-03 13:29:02 25 4
gpt4 key购买 nike

我正在玩一个简单的突破游戏,我在如何计算球击中顶部边界时的角度时遇到了一些问题。当球以 180 度的角度向上移动时,它会以 0 度的角度向下弹回。但是当球以 170 度的角度向上移动时,它应该以镜像的角度向下弹回,比如 10 度。我可以这样计算 180-170 = 10 度,但是如果球以 190 度的角度向上移动怎么办!?那么它应该以350度的角度向下弹回,但我不知道如何计算这个!?

有没有一种简单的方法可以计算或镜像球向上移动的角度值? Preciate一些帮助,因为我不擅长数学!谢谢!

编辑:我像这样移动球:

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

最佳答案

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

  1. 确定您的角度测量系统。你说一个向上移动的球的角度是 180° ,所以我猜 指向下方并且角度沿逆时针方向增加(90° 指向右侧等)。保持一致很重要。让d是球在该系统中运动的角度。

  2. 定义边框法 vector 的角度。如果顶部的边框是水平的,则其法 vector 与其垂直并且角度为。 (在第 1 点定义的测量系统中)。让n是那个角度。垂直边框将有 n = 90° .

  3. 出射角o球的由:

    o = 2*n - d - 180°

    请注意,您可能需要标准化此角度,即您添加/减去 360°到/从 o 直到 0° <= o < 360° .

你的例子 d = 190°, n = 0° :

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

这将导致 o = 350°归一化后,如预期。

关于java - 计算弹跳球的度数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15723836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com