C#visual studio使用sin和余弦查找最后2个角度

时间:2015-02-13 22:05:37

标签: c# visual-studio math

我已经为我的班级编写了一个程序,要求我编写一个GUI程序,当用户输入b侧和c侧的C侧时,计算Side 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;
}

1 个答案:

答案 0 :(得分:0)

您可以轻松使用law of cosines。代码:

//    /\
//   /  \
// 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。希望这会有所帮助。