Почему мой SSS треугольник дает совершенно неправильный ответ? - PullRequest
0 голосов
/ 09 октября 2019

Итак, мне дали проект, в котором я должен написать программу на 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)));
  }
}

1 Ответ

3 голосов
/ 09 октября 2019

Ваша программа верна, но вы ошибаетесь. Углы 30, 60 и 90 градусов ожидаются для прямоугольного треугольника сторон (пропорциональных) длины 1, sqrt (3) / 2 (около 0,866) и 2, которые не масштабируются до длин 3, 4,и 5.

Мой калькулятор выдает около 0,6 для косинуса 53,130102 градуса и около 0,8 для косинуса 36,86989 градуса, что соответствует длинам 3, 4 и 5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...