Math.sin - избавиться от идей - PullRequest
       6

Math.sin - избавиться от идей

1 голос
/ 18 октября 2011

Я пытаюсь math.sin и math.cos сделать линию подвижного края в моей программе.Я получил всю математику, и она, кажется, суммируется правильно (я использую расположение мыши по щелчку и переменную перемещения мыши, чтобы определить области рисования. Затем я использую значение ширины, чтобы дать ему смещение края.

Я использую math.cos, чтобы определить, как далеко, чтобы сместить точки в точках X и Y. При этом значение cos (Angle) кажется абсолютно сумасшедшим, от +1 до -1. Вот пример.

Угол = 29.153788462442

Cos согласно оконному калькулятору = 0.8733152733324487151754721490934

Cos согласно Math.Cos (Угол) = -0.637571130025255

Я пытался преобразовать угол в уголчисло с плавающей запятой и int в случае, если десятичное место вызывало проблему, но безрезультатно.

Этот код я использую для вызова этих ответов.

lblInOpts.Text = Math.Cos(Angle).ToString() + " " + Angle.ToString();

Документв градусах, переключается с радиан и используется так же, как MSDN предлагает.

Ответы [ 4 ]

8 голосов
/ 18 октября 2011

Вам нужно пересчитать градусы в радианы:

Math.Cos(Angle * Math.PI / 180.0)
2 голосов
/ 18 октября 2011

Результатом из калькулятора Windows является косинус угла, интерпретируемого как градусы.

Результат из вашего кода C # - это косинус угла, интерпретируемого как радианы, что эквивалентно 1670.389... градусам.

Чтобы преобразовать градусы в радианы в вашем коде, используйте

public static double ToRadians(double x) {
    return x * Math.PI / 180.0;
}
2 голосов
/ 18 октября 2011

Вы передаете угол в градусах, Math.Cos ожидает угол в радианах

1 голос
/ 18 октября 2011

-0,637571130025255 - косинус 29,153788462442 радиана (1670,38903571 градус).Проверьте документацию Math.Cos () - принимает ли он аргументы в радианах или градусах?

...