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减就可以了。
余弦定理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
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减就可以了。
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