我试图让一个球在窗户周围反弹。取决于球撞击墙壁的距离和角度将决定它的反射。您可以在图片中看到黑色轨迹撞击内半部的对面墙壁......而灰色轨迹表示如果它要反射并撞击另一半......这将减少反射角度。
我不确定我是否正确地考虑它......我试图以度数来表示坐标。
所以给定图片...你会采取那些三角洲,然后获得学位...
度数 = Math.atan2(相反/相邻)= (-4/-2)
我的代码
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 度角从墙上反射(因为那是入射角)。但我不希望球一定会从每面墙上均匀反射,这样会增加可变性。
我的问题:
- 我是否正确计算了球的角度?
- 如何根据弹跳在墙上的位置为弹跳添加可变性?
- 一旦我以度为单位获得角度,我如何将其转换回坐标?
谢谢!