Я пишу программу, которая вычисляет длину сторон, меры угла в каждой вершине (в градусах) и области треугольника. Треугольник определяется координатами 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
Как это исправить?
Вы можете использовать 'Math.sin()' 'Math.cos()' и 'Math.tan()' – Shaggy
@Shaggy: Нет, вопрос о *** обратных *** функциях, но это также доступны в 'Math'. –
Вопрос показывает отсутствие доказательств усилий и инициативы, поскольку вся эта информация легко найти, и автор не показывает ни одного из плодов своих собственных усилий. Отсюда мой голос. –