【问题标题】:Calculate angle of triangle Python计算三角形Python的角度
【发布时间】:2013-09-03 02:30:59
【问题描述】:

我试图在下面找出三角形的角度,我知道它应该是 90 度,但是我不知道如何在下面实际计算它:

这是我尝试过的:

angle = math.cos(7/9.899)
angleToDegrees = math.degrees(angle)

returns: 43.XX

我做错了什么?

【问题讨论】:

  • 这给出了 A 和 C 之间的角度。研究余弦定律。
  • 如果我使用tan 我会更接近... x = math.tan(7/7) 然后math.degrees(x) 返回89.2328896038?为什么这不是一个偶数 90?
  • 一个三角函数只有在三角形中已经有一个直角并且试图找到一个不同的角度时才有效。 math.tan 采用弧度并给出一个比率。 math.degrees 采用弧度并给出度数。他们给你将近 90 分是巧合。
  • 所有三角函数在角度和三角形两侧的比率之间进行转换。 cos、sin 和 tan 以弧度为单位的角度作为输入并返回比率; acos、asin 和 atan 将一个比率作为输入并返回一个以弧度表示的角度。您只转换角度,而不是比率。
  • 正如@Teepeemm 解释的那样,leg1/hypotenuse 的比率为您提供了与 leg1 相邻的角度的余弦,该角度不是直角。在这种情况下,因为三角形是等腰的,45度。

标签: python math geometry angle


【解决方案1】:

比这要复杂一些。您需要使用law of cosines

>>> A = 7
>>> B = 7
>>> C = 9.899
>>> from math import acos, degrees
>>> degrees(acos((A * A + B * B - C * C)/(2.0 * A * B)))
89.99594878743945

精确到 4 位有效数字。如果您提供更精确的 C 值,您将获得更准确的结果。

>>> C=9.899494936611665
>>> degrees(acos((A * A + B * B - C * C)/(2.0 * A * B)))
90.0

【讨论】:

  • 效果很好,您不介意多解释一下吗?
  • @ShannonHochkins,请点击维基百科的链接获取解释。对于这个网站来说,这确实是题外话。
  • 为什么跑题了?我问如何计算这个,通常当它有更好的描述而不仅仅是代码时,答案是最好的。
  • @ShannonHochkins,因为它是数学。您可以尝试在 math.stackexchange.com 上寻求解释
【解决方案2】:

你也可以用这个。

print(str(int(round(math.degrees(math.atan2(x,y)))))+'°')

这接受两个输入作为三角形的两个高度,您可以获得正确度数格式的输出角度。

【讨论】:

    【解决方案3】:

    我认为您正在寻找 math.acos 而不是 math.cos,您想要返回其值是这两个边的比率的角度。不取余弦。

    【讨论】:

    • 这只是给了我一个偶数 45.00
    • 三角函数适用于当您有 90 度角,并且您对其他角度感兴趣时。
    • @Teepeemm 三角函数适用于所有三角形,它们只是在涉及 90 度角时更简单。
    【解决方案4】:

    三角函数将角度转换为某个三角形的某个边的长度。特别是,正切是对边与相邻边的比率。 math.tan(7/7) 是与 1(=7/7) 弧度角相对的直角三角形的长度。这个长度 (~1.557) 恰好接近 90 度的弧度数 (pi/2 ~ 1.571)。

    如前所述,您正在寻找一个反三角函数来将长度转换回角度。

    【讨论】:

    • 这不是 math.degrees 的作用吗?将弧度转换为度数/角度
    • 它确实将弧度转换为度数。但是 tan(1) 一开始就不是弧度。您将其视为弧度的事实是错误的。
    【解决方案5】:

    使用这个:

    import math
    AB = float(input())
    BC = float(input())
    
    print(str(int(round(math.degrees(math.atan2(AB, BC)))))+'°')
    

    【讨论】:

    • 这段代码假设OP标记的角度是90度,然后在输入“BC”旁边给出锐角。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    相关资源
    最近更新 更多