У меня на форме лежат несколько textbox. В два textbox вводятся значения сторон (катетов (рассм. прямоугольный треугольник)). По нажатию на кнопку, исходя из значений катетов высчитывается угол (в данной ситуации неважно какой из двух) следующим образом: по теореме Пифагора высчитываю гипотенузу, а дальше из соотношений в прямоугольном треугольнике:
alpha=arccos(a/c). Полученный угол вписывается в другой textbox. Нужно чтобы ответ переводился из радиан в градусы. Насколько я понял, нужно домножать на pi и делить на 180. Вот в чем проблема: итоговый угол получается немного отклоненным от верного - там где по идее должен получиться угол в 30 - получается в 31. Для проверки подставлял значения катетов одинаковые (т.е. треугольник равнобедренный). Должен получиться угол в 45 однако получается в 48 с хвостом. Привожу код:
- Код: Выделить всё
Public Sub alphaaa()
Const pi As Double = 3.14159265358979
Dim cc As Double 'ввожу угол, равный отношению катета к гипотенузе
cc = Cos(a / c)
alpha = ((Atn(Sqr(1 - cc * cc)) / cc) * 180) / pi 'формула арккосинуса с переведением в градусы
Me.Text4.Text = alpha
MeList1.AddItem "alpha = arccos(a / c)"
Me.List1.AddItem "alpha = " + Format$(Atn((Sqr(1 - cc * cc) / cc) / pi) * 180)
beta = 90 - alpha
MeText5.Text = beta
Me.List1.AddItem "beta = 90 - alpha"
Me.List1.AddItem "beta = " + Format$(90 - alpha)
Me.List1.AddItem ""
End Sub
В чем ошибка? Если подставить в качестве a (катет) 4, второй катет получается 4, гипотенуза 5,65 с хвостом, а углы 44 и 46, хотя должны быть строго 45...