如何用余弦定律计算三角形的内角

时间:2015-11-17 02:18:32

标签: java math cosine

我正在为我的学校做一个项目,我必须创建一个计算三角形角度的方法。我们正在使用余弦定律,但我恐怕根本不理解它。我知道有一个我可以使用的公式,但是我已经输入了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将返回的方法,如果收到的数字超过一个,但是当我不理解我正在使用的内容时,很难解决这个问题。感谢任何帮助,谢谢!

1 个答案:

答案 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)

希望得到这个帮助。