gpt4 book ai didi

java - 弹跳球的随机角度

转载 作者:搜寻专家 更新时间:2023-10-31 20:12:38 25 4
gpt4 key购买 nike

我想让一个球绕着 window 弹跳。取决于球撞击墙壁的距离和角度将决定它的反射。您可以在图片中看到,黑色轨迹击中了内半部分的对面墙壁……灰色轨迹表示如果它反射并击中另一半……这将减小反射角度。

我不确定我的想法是否正确...我正在尝试以度数表示坐标。

所以给定图片...您将采用这些增量,然后获得度...

degree = Math.atan2(opposite/adjacent) = (-4/-2)

enter image description here

我的代码

public class Calculate {

public Calculate() {
System.out.println(getCalc(7,5,4,0));
}

public double getCalc(int x1, int x2, int y1, int y2) {
double deltaX = Math.abs(x2-x1);
double deltaY = Math.abs(y2-y1);
double degrees = Math.toDegrees((java.lang.Math.atan2(deltaX, deltaY)));

return degrees;
}

给出输出:26.56505117707799

所以现在我知道球会以 26 度角从墙上反射(因为这是入射角)。但我不希望球必须均匀地反射每面墙,因此它增加了可变性。

我的问题:

  • 我是否正确计算了球的角度?
  • 如何根据弹跳在墙上的位置增加弹跳的可变性?
  • 一旦我获得了以度为单位的角度,我该如何将其转换回坐标?

谢谢!

最佳答案

Am I calculating the angle of the ball correctly?

您的绘图未按比例绘制。 26 度是从垂直于墙壁的线开始测量的。

How can I add variability to the bounce based on where it hits on the wall?

您已经建议了一个随机角度。您还可以根据距墙中心的距离调整反射角度。

将您的反射角计算放入其自己的方法中。您可以调整计算,直到您的计算给出您正在寻找的“随机性”。

Once I have the angle in degrees, how can I translate that back to coordinates?

将度数转换为弧度,然后计算 SAS of the triangle .只需在模型中以弧度为单位保留角度,并在显示/诊断方法中转换为度数。

关于java - 弹跳球的随机角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17885330/

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