我为我的类编写了一个程序,要求我编写一个GUI程序,当用户输入a面、b面和与C面相对的角度C时,计算C面。我编写的程序正确地做到了这一点。
我的问题是这项任务的额外学分部分,它要求我获取所有信息并找到其他两个角度。我甚至很难开始写它。我们正在学习方法,所以我必须写一个新的方法来计算其他2个角度,使用我现在拥有的所有边的长度和角度c的大小。
关于如何开始或着手编写这种方法,有什么建议吗?如果有帮助的话,我可以发布一些我的源代码。到目前为止,我有这个代码,但我不知道我的方法哪里有错误。我找不到显示的正确号码
static double CalcAngleB(double side1, double side2, double side3)
{
const double COS = 2; const double RADIANS = 180;
//calculate sideOne by muliplying side1 by side1
double sideA = side1 * side1;
//calculate sideTwo by multiplying side2 by side2
double sideB = side2 * side2;
//calculate sideThree by muliplying side3 by side3
double sideC = side3 * side3;
//Begin cosine functions to find Angle B.
double sumOfThreeSides = sideA + sideC - sideB;
double RadiansAngleB = sumOfThreeSides / (COS * side1 * side3);
//convert back to degrees degrees = radians * (180/Math.PI)
//double angleB = RadiansAngleB * (RADIANS / Math.PI);
double angleB = Math.Cosh(RadiansAngleB);
//double angleBDegress = angleB * (RADIANS / Math.PI);
//return the answer
return angleB;
}
您可以很容易地使用余弦定律。代码:
// /
// /
// a/ b
// /
//---------
// c
public double CalcAngleB(double a, double b, double c)
{
return Math.Acos((a * a + c * c - b * b) / (2 * a * c));
}
// /
// /
// a/ b
// / /
//------/---
// c
public double CalcAngleA(double a, double b, double c)
{
return Math.Acos((b * b + c * c - a * a) / (2 * b * c));
}
// /
// /--
// a/ b
// /
//----------
// c
public double CalcAngleC(double a, double b, double c)
{
return Math.Acos((b * b + a * a - c * c) / (2 * b * a));
}
您的代码也是正确的,但应该使用Math.Acos
而不是Math.Cosh
。希望这能有所帮助。