所以我正在为高中的AP comp sci课程编写一个程序,我们被告知要找到一个三角形的角度测量,只给出边长,我使用了cosigns定律来找到第一个角度,我试图使用正弦定律找到第二个,但它不起作用。我已经阅读了所有其他线程,并添加了Math.toRadians()
行来帮助修复它,但它仍然无法正常工作。这是我的代码(请原谅它仍然是一项正在进行的工作):
double s1 = 0;
double s2 = 0;
double s3 = 0;
double angles1 = 0;
double angles2 = 0;
System.out.println("Enter side 1 of your triangle");
s1 = key.nextDouble();
System.out.println("Enter side 2 of your triangle");
s2 = key.nextDouble();
System.out.println("Enter side 3 of your triangle");
s3 = key.nextDouble();
angles1 = Math.acos((s3*s3-s2*s2-s1*s1)/(2*s1*s2)); // angle from side 3
angles2 = Math.asin(Math.sin(Math.toRadians(angles1)) * s2 / s3);
angles1 = angles1 * 57.3;
angles1 = Math.round(angles1);
angles2 = angles2 * 57.3;
angles2 = Math.round(angles2);
System.out.println(" Angle 1 " + angles1);
System.out.println(" Angle 2 " + angles2);
答案 0 :(得分:0)
Math.acos以弧度为单位返回一个值,所以只需删除Math.toRadians即可正常工作:
angles2 = Math.asin(Math.sin(angles1) * s2 / s3);
答案 1 :(得分:0)
Math.acos返回值的反余弦值;返回的角度在弧度范围内的0.0到pi范围内,然后替换
angles2 = Math.asin(Math.sin(Math.toRadians(angles1)) * s2 / s3);
通过
angles2 = Math.asin(Math.sin(angles1) * s2 / s3);
...
angles1 = Math.acos((s3*s3-s2*s2-s1*s1)/(2*s1*s2)); // angle from side 3
这是错误的替换
angles1 = Math.acos((s3*s3+s2*s2-s1*s1)/(2*s1*s2)); // angle from side 3
和
angles2 = Math.asin(Math.sin(Math.toRadians(angles1)) * s2 / s3);
通过
angles2 = Math.asin(Math.sin(Math.toRadians(angles1)) * s2 / s1);