【问题标题】:Right Triangle calculations in C#C#中的直角三角形计算
【发布时间】:2013-04-15 23:45:37
【问题描述】:

高中毕业很久了。如果我有一个直角三角形,并且知道角度 A,我想计算出它对面的长度。这个 c# 食谱页面 (http://www.gibmonks.com/c_sharp/csharpckbk2-CHP-1-SECT-14.html) 建议:

oppositeSide = Math.Sin(theta) * 斜边;

假设角度 A (theta) 是 45,斜边长 10 个单位,这段代码给出的结果是 8.51。然而,至少有 4 个在线三角形求解器给了我 7.07 的答案(例如 http://www.cleavebooks.co.uk/scol/calrtri.htmhttp://www.endmemo.com/geometry/triangle.php)。这让我很怀疑!

我在三角学方面还不够成熟,无法判断哪个是准确的,但我可能更喜欢互联网计算器。

谁能帮助正确的公式来做到这一点,或者指出一个有用的 c# 直角三角形求解器类?

谢谢

【问题讨论】:

    标签: c# math trigonometry


    【解决方案1】:

    documentation 开始,theta 的值必须以弧度为单位。看起来您正在使用的在线求解器正在以度数解释 theta

    您可以按如下方式将度数转换为弧度:

    theta = theta * Math.PI/180
    

    【讨论】:

    • 你是对的,谢谢。时间到了,我会将此标记为答案。
    【解决方案2】:

    您以度为单位指定角度,但Math.Sin 方法采用弧度。

    您可以使用theta * 2 * PI / 360 将度数转换为弧度:

    oppositeSide = Math.Sin(theta * 2.0 * Math.PI / 360.0) * hypotenuse;
    

    【讨论】:

      【解决方案3】:

      顺便提一下,对于一个已知另一个角为 45 度的直角三角形,其余 2 条边的长度相等,您也可以使用此公式计算它们的长度;

      (a*a) + (b*b) = (c*c)
      

      所以,在这种情况下;

      (a*a) * (a*a) = (10*10)
      
      (a*a) * (a*a) = 100
      
      (a*a) = 100 / 2
      
      a = sqrt(50)
      

      作为另一种方法来帮助您验证这个独特案例中的结果,并证明 ~7.07 是正确的答案。

      【讨论】:

        【解决方案4】:

        45 度的正弦是 0.707。你的计算不正确。

        【讨论】:

        • 我直接应用如上所示的公式,使用标准的 .net 数学类,所以任何关于它为什么返回这个值以及正确代码是什么的指导都将不胜感激。欢呼
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-06
        相关资源
        最近更新 更多