我正在编写一个程序来计算边长,每个顶点的角度测量值(以度为单位)和三角形的面积。三角形由其三个顶点的x和y坐标定义,这三个顶点是用户输入。
我已经完成了计算边长的方法,目前我试图使用余弦定律来找到其中一个角。我需要这方面的帮助:
有没有人知道用度数来计算逆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
我该如何解决?
答案 0 :(得分:3)
java.util.Math实用程序类具有arc sin方法asin(...)
,它返回弧度结果,然后可以通过Math的toDegrees(...)
方法转换为度数。