Угол sin возвращает отрицательный результат для острого угла - PullRequest
3 голосов
/ 24 октября 2019

Я вычисляю углы треугольника , и я не понимаю, почему я получаю отрицательный угол для некоторого острого угла . Например:

var sin     = Math.Sin(4.45);
var radians = Math.Atan(sin);
var angle   = radians * (180 / Math.PI);

возвращает sin = -0.965 и angle = -44.

Когда научный калькулятор покажет sin = 0.0775

Мой треугольник имеет такие длины 6.22,6.07 и 1.4, тогда нет возможности иметь отрицательный угол .

Ответы [ 2 ]

7 голосов
/ 24 октября 2019

Math.Sin работает в радианах. Вам нужно преобразовать градусы в радианы.

Чтобы преобразовать градусы в радианы, умножьте угол на ?/180:

var sin = Math.Sin(4.45*Math.PI/180);
// output 0.07758909147106598

И остальная часть вашего кода должна остаться прежней.

Примечание: если вы просто хотите преобразовать угол в градусах в угол в радианах, вы можете использовать приведенную выше формулу:

var degrees = 4.45;
var radians = degrees * Math.PI/180;
3 голосов
/ 24 октября 2019

Давайте вычислим углы треугольника с помощью Закона косинусов :

a**2 + b**2 - 2 * a * b * cos(gamma) == c**2

, поэтому

gamma = acos((a * a + b * b - c * c) / (2 * a * b))   
beta  = acos((a * a + c * c - b * b) / (2 * a * c))   
alpha = acos((c * c + b * b - a * a) / (2 * c * b))   

теперь поставим длины треугольника

a = 6.22
b = 6.07
c = 1.40

в приведенных выше формулах, и вы получите углов радианах , если вы используете c # Math.Acos)

 alpha = 1.5639 =  89.6 degrees
  beta = 1.3506 =  77.4 degrees
 gamma = 0.2270 =  13.0 degrees
 ------------------------------
                  180.0 degrees (let's check ourselves)

Еще один чек Закон синусов

 a / sin(alpha) == b / sin(beta) == c / sin(gamma) == 6.2201
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...