Как определить величину тригонометрической функции? C ++ - PullRequest
0 голосов
/ 18 апреля 2010
>     if (((test>=0) && (test<=90)) || ((test>270) && (test<=360))){n_y=1;}
>     else {n_y=-1;}

Мне нужна величина тригонометрической функции, чтобы определить знак тригонометрической функции для угла, попадающего в определенный сектор.

Мой план - заменить приведенный выше код чем-то эквивалентным.

Вот что я хочу сделать в псевдокоде.

n_y = cos(test) / (magnitude of cos (test)); 

Это даст мне то же самое. Abs () принимает только целые числа. Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2010

Я не знаю, что Abs() вы используете, потрясающие по стандарту C ++ удваиваются просто отлично .

Но на самом деле вам не нужна величина, потому что вы застряли, делая дорогостоящее деление.

Вместо этого просто используйте функцию signum .

0 голосов
/ 18 апреля 2010

Вы #include <cmath> получили перегрузки с плавающей точкой для abs?

Что касается поиска квадранта, если 0 <= test <= 360, и вы хотите проверить 90 < test <= 270, просто используйте 90 < test && test <= 270. Между двумя прерывистыми диапазонами, которые вы сейчас тестируете, существует непрерывный диапазон. Тем не менее, ваш конкретный пример определяет вещи асимметрично, поскольку он отображает 0 => 1 и 270 => -1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...