2016-10-15 2 views
0

Я пишу программу, которая вычисляет длину сторон, меры угла в каждой вершине (в градусах) и области треугольника. Треугольник определяется координатами x и y трех его вершин, которые являются пользовательскими вводами.Код для обратного sin, cos и tan

Я уже закончил методы расчета длины сторон, и в настоящее время я пытаюсь использовать закон косинусов, чтобы найти один из углов. Мне нужна помощь в этой области:

Кто-нибудь знает код, вычисляющий инверсный sin, cos и tan с ответом в градусах?

Это более математический вопрос, но если кто-то может помочь, я был бы признателен. Я также не знаю , как найти высоту треугольника, зная его длину сторон. Было бы необходимо найти область в следующем методе, который я буду писать.

тест:

public double getAngleA() { 
    double angleA = Math.acos((side2 * side2 + side3 * side3 - side1 * side1)/(2.0 * side2 * side3)); 
    double angleA = Math.toDegrees(angleA); 
    return angleA; 
} 

Класс объекта:

public class Triangle 
{ 
private double x1; 
private double y1; 
private double x2; 
private double y2; 
private double x3; 
private double y3; 
private double sideA; 
private double sideB; 
private double sideC; 
private double angleA; 
private double angleB; 
private double angleC; 



    public Triangle(double x1, double y1, double x2, double y2, double x3, double y3) 
    { 
this.x1 = x1; 
this.y1 = y1; 
this.x2 = x2; 
this.y2 = y2; 
this.x3 = x3; 
this.y1 = y3; 
    } 
    public double getSideC() 
    { 
    sideC = Math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)); 
    return sideC; 
    } 
    public double getSideA() 
    { 
    sideA = Math.sqrt((x2-x3)*(x2-x3) + (y2-y3)*(y2-y3)); 
    return sideA; 
    } 
    public double getSideB() 
    { 
    sideB = Math.sqrt((x1-x3)*(x1-x3) + (y1-y3)*(y1-y3)); 
    return sideB ; 
    } 
    public double getAngleA() { 

    double angleA = Math.acos((sideB * sideB + sideC * sideC - sideA * sideA)/(2.0 * sideB * sideC)); 
    angleA = Math.toDegrees(angleA); 
    return angleA; 
    } 
    public double getAngleB() { 

    double angleB = Math.asin((Math.sin(angleA) * sideB)/sideA); 
    return angleB; 
    } 
    public double getAngleC() { 

    double angleC = 180 - (angleA+angleB); 
    return angleC; 
    } 


} 

тестер:

public class TriangleTester { 


    public static void main(String[] args) { 
    Triangle t = new Triangle (1, 2, 9, 7, 7, 10); 
    System.out.println(t.getSideC()); 
    } 


} 

Ожидаемые результаты: около 9,43398 Фактический выход: 8,54400374531753

Как это исправить?

+1

Вы можете использовать 'Math.sin()' 'Math.cos()' и 'Math.tan()' – Shaggy

+0

@Shaggy: Нет, вопрос о *** обратных *** функциях, но это также доступны в 'Math'. –

+0

Вопрос показывает отсутствие доказательств усилий и инициативы, поскольку вся эта информация легко найти, и автор не показывает ни одного из плодов своих собственных усилий. Отсюда мой голос. –

ответ

2

Класс утилиты java.util.Math имеет метод arc sin, asin(...), который возвращает результат радиана, который затем может быть преобразован методом Math's toDegrees(...) в градусы.

+0

Я отредактировал мое сообщение. Это ты имел в виду? –

+0

@ Life4Pancakes: вы должны включить текст с этим кодом. Например, код отвечает на ваш вопрос? Разве это не работает? Если да, то какие у вас проблемы с этим? Также учитывается форматирование - обратите внимание на изменение форматирования, которое я ему дал. –

+0

Я выясню, работает ли он, когда я заканчиваю этот класс и пишу основную запись. Это займет некоторое время. Позже я вставлю свою работу и, возможно, задаю больше вопросов ... –

Смежные вопросы