Итак, мне дали проект, в котором я должен написать программу на Java, чтобы вернуть углы между сторонами треугольника, заданные этими тремя сторонами, в качестве параметров метода. Существует математическая формула, которую мы можем использовать для вывода уравнения, которое мы можем использовать, называемого законом косинусов, который задан сторонами треугольника a, b и c, c ^ 2 = a ^ 2 + b ^ 2- 2ab * cos (C) где C - некоторый угол между сторонами a и b . Мы можем выделить угол C и получим уравнение arccos ((- c ^ 2 + a ^ 2 + b ^ 2) / 2ab) = C . Математика достаточно проста, и ее легко реализовать в Java, но когда я ввожу стороны 3, 4, 5, которые должны дать вывод 90, 30, 60, я получаю углы 53.130102, 36.86989, 90.0. Это, безусловно, , а не углы пифагорейской тройки, такие как 3, 4, 5. Кто-нибудь знает, где я ошибся?
Код:
import static java.lang.Math.sqrt;
import static java.lang.Math.acos;
import static java.lang.Math.pow;
import static java.lang.Math.PI;
class Main {
public static void main(String[] args) {
anglesFinder(3, 4, 5);
}
public static void anglesFinder(int a, int b, int c) {
double alpha;
double beta;
double gamma;
alpha = (double) Math.acos((Math.pow(b, 2) + Math.pow(c, 2) - Math.pow(a, 2)) / (2 * c * b));
beta = (double) Math.acos((Math.pow(a, 2) + Math.pow(c, 2) - Math.pow(b, 2)) / (2 * a * c));
gamma = (double) Math.acos((Math.pow(a, 2) + Math.pow(b, 2) - Math.pow(c, 2)) / (2 * a * b));
System.out.println("angle between a & b is: " + (beta * (180 / Math.PI)));
System.out.println("angle between a & c is: " + (alpha * (180 / Math.PI)));
System.out.println("angle between b & c is: " + (gamma * (180 / Math.PI)));
}
}