我正在为我的学校做一个项目,我必须创建一个计算三角形角度的方法。我们正在使用余弦定律,但我恐怕根本不理解它。我知道有一个我可以使用的公式,但是我已经输入了wolfram alpha中的值,但是它们完全不同(当我取出Math.acos部分时)或者根本不返回数字(使用Math.acos)。我已经尝试了很多不同的东西(包括只是取出Math.acos部分看看会发生什么,我得到的东西比如1或3),但这是我到目前为止所拥有的:
public static double angle(double a, double b, double c) {
return Math.acos((Math.pow(a, 2) + Math.pow(b, 2) + Math.pow(c, 2)) / (2 * b * c));
}
参数代表每一侧的长度。我一直收到“NaN”的结果。我知道Math.acos将返回的方法,如果收到的数字超过一个,但是当我不理解我正在使用的内容时,很难解决这个问题。感谢任何帮助,谢谢!
答案 0 :(得分:4)
您的代码有误,正确的公式为cos(y) = (a^2 + b^2 - c^2) / 2ab
,我修正如下:
public static double angle(double a, double b, double c) {
return Math.acos((Math.pow(a, 2) + Math.pow(b, 2) - Math.pow(c, 2)) / (2 * a * b));
}
public static void main(String[] args) {
System.out.println(angle(10, 10, 10));
System.out.println(Math.toDegrees(angle(10, 10, 10)));
}
结果是:
run:
1.0471975511965979
60.00000000000001
BUILD SUCCESSFUL (total time: 0 seconds)
希望得到这个帮助。