【发布时间】:2013-07-26 15:27:41
【问题描述】:
我正在尝试让球在窗户周围弹跳。取决于球撞击墙壁的距离和角度将决定它的反射。您可以在图片中看到黑色轨迹撞击内半部的对面墙壁......而灰色轨迹表示它是否要反射并撞击另一半......这会减小反射角度。
我不确定我的想法是否正确...我正在尝试以度数表示坐标。
因此,鉴于图片...您将获取这些增量,然后获得度数...
degree = 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 度角从墙壁反射(因为那是入射角)。但我不希望球一定会从每面墙上均匀反射,这样会增加可变性。
我的问题:
- 我是否正确计算了球的角度?
- 如何根据反弹在墙上的位置为反弹添加可变性?
- 获得以度为单位的角度后,如何将其转换回坐标?
谢谢!
【问题讨论】: