逆正弦、余弦和正切的代码
Posted
技术标签:
【中文标题】逆正弦、余弦和正切的代码【英文标题】:Code for inverse sin, cos and tan 【发布时间】:2016-10-15 15:16:38 【问题描述】:我正在编写一个程序来计算边的长度、每个顶点的角度测量值(以度为单位)和三角形的面积。三角形由作为用户输入的三个顶点的 x 和 y 坐标定义。
我已经完成了计算边长的方法,目前我正在尝试使用余弦定律来找到其中一个角度。我需要这方面的帮助:
有谁知道以度为单位计算吗?
这是一个更数学的问题,但如果有人可以提供帮助,我将不胜感激。我也不知道如何在知道三角形边长的情况下找到三角形的高度。需要在我将要编写的下一个方法中找到该区域。
测试:
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:不,问题是关于 inverse 函数,但这些在 Math
中也有。
这个问题表明缺乏努力和主动性的证据,因为所有这些信息都很容易找到,而且作者没有展示自己努力的成果。因此我投了反对票。
@HovercraftFullOfEels 感谢您的批评。下次我会展示我的作品。
有一些公式可以直接根据角的坐标或三边的长度来计算三角形的面积。使用您最喜欢的搜索引擎。
【参考方案1】:
java.util.Math 实用程序类具有 arc sin 方法 asin(...)
,它返回弧度结果,然后可以通过 Math 的 toDegrees(...)
方法将其转换为度数。
【讨论】:
@Life4Pancakes:您应该在该代码中包含一些文本。例如,代码是否回答了您的问题?它不工作吗?如果是这样,你有什么问题?格式也很重要——注意我给它的格式变化。 我会在我完成这门课并将 main 写入它时确定它是否有效。这需要一段时间。稍后我将粘贴我的工作并可能会提出更多问题... 我什至无法检查我的余弦定律是否良好,因为我的距离公式不起作用。你能帮我解决这个问题吗? @Life4Pancakes:您的距离公式为何或如何失败? 我编辑了帖子(粘贴了我的对象和主类)。正如您在最后看到的预期和实际输出不匹配。我不知道为什么。以上是关于逆正弦、余弦和正切的代码的主要内容,如果未能解决你的问题,请参考以下文章