已知三角形的三条边长,求其中的任意一个角的角度?
最好给个例子。
望高手指点!

解决方案 »

  1.   

    a,b,c为边长
       cos0 = (a ^ 2 + c ^ 2 - b ^ 2) / (2 * a * c)
       cos1 = (a ^ 2 + b ^ 2 - c ^ 2) / (2 * a * b)
       angle0 = Atn(-cos0 / Sqr(-cos0 * cos0 + 1)) + 2 * Atn(1)
       Angle1 = Atn(-cos1 / Sqr(-cos1 * cos1 + 1)) + 2 * Atn(1)
       angel3就不用求了,直接那180减就可以了。
      

  2.   

    余弦定理Sub getangle(ByVal a As Single, ByVal b As Single, ByVal c As Single)
    If a + b < c Or a + c < b Or b + c < a Then Exit Sub
    Dim angleA, angleB, angleC
    angleA = (b * b + c * c - a * a) / (2 * b * c)
    angleB = (a * a + c * c - b * b) / (2 * a * c)
    angleC = (a * a + b * b - c * c) / (2 * a * b)
    angleA = 0.25 * Atn(-angleA / Sqr(-angleA * angleA + 1)) / Atn(1) + 0.5 & "π"
    angleB = 0.25 * Atn(-angleB / Sqr(-angleB * angleB + 1)) / Atn(1) + 0.5 & "π"
    angleC = 0.25 * Atn(-angleC / Sqr(-angleC * angleC + 1)) / Atn(1) + 0.5 & "π"
    MsgBox "A=" & angleA & vbCrLf & "B=" & angleB & vbCrLf & "C=" & angleC
    End Sub