Форум программистов, компьютерный форум CyberForum.ru

Почему функция atan возвращает значения фрагментарно - C++

Восстановить пароль Регистрация
 
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114
21.11.2012, 02:41     Почему функция atan возвращает значения фрагментарно #1
Всем привет,

нужно значение угла от мыши (x, y) до координаты (0,0) окна.
Пишу следующее:

C++
1
2
3
4
double panel::checkSector(int x, int y)
{
    if(x > 1 & y > 1 & x < 300 & y < 300) return atan(x/y) * (180 / PI);
}
Возвращает значение для секторов:

если < 45° ==> 0.0
< 61° ==> 45°
<72° ==> 61°
<80° ==> 72°

и только начиная с 80 возвращает каждый градус отдельно.
Бред какой-то!!!
Что здесь может быть не так, и почему не возвращает каждый градус от 0 до 90?

Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2012, 02:41     Почему функция atan возвращает значения фрагментарно
Посмотрите здесь:

C++ Какие значения возвращает функция анализа символов?
C++ функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы?
Функция PlaySound воспроизводит звук и возвращает управление СРАЗУ ЖЕ (но это неправильно), почему? C++
Функция atof() возвращает не точное значения C++
C++ Задача: Функция получает одномерный массив и возвращает количество чисел с суммой цифр больше 20. Почему не работает?
Функция возвращает auto C++
Почему функция возвращает неправильное значение C++
C++ Функция не возвращает значение
C++ Функция вычисления среднего значения возвращает странное значение
C++ Почему функция возвращает отрицательное число?
C++ Почему функция atoi возвращает неожиданный результат?
C++ Почему функция всегда возвращает 0?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12093 / 6954 / 782
Регистрация: 27.09.2012
Сообщений: 17,241
Записей в блоге: 2
Завершенные тесты: 1
21.11.2012, 03:12     Почему функция atan возвращает значения фрагментарно #2
В условии побитовое И. Или так и задумано?
gray_fox
What a waste!
 Аватар для gray_fox
1246 / 1129 / 54
Регистрация: 21.04.2012
Сообщений: 2,354
Завершенные тесты: 3
21.11.2012, 03:14     Почему функция atan возвращает значения фрагментарно #3
Цитата Сообщение от Hrundel Посмотреть сообщение
x/y
Целочисленное деление, остаток отбрасывается. Перед делением приводи к типу числа с плавающей точкой.
&
Это побитовое И, а не логическое.
И 180 / PI можно посчитать один раз.
C++
1
2
3
4
5
static double const radiansToDegrees = 180. / PI;
 
if((x > 1) && (y > 1) && (x < 300) && (y < 300)) {
   return atan(static_cast<double>(x) / y) * radiansToDegrees;
}
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114
21.11.2012, 03:16  [ТС]     Почему функция atan возвращает значения фрагментарно #4
ошибка форматирования при копи-пасте, а я не заметил.
В тексте нормальный &&

Добавлено через 2 минуты
gray_fox,
Спасибо большое, все сразу заработало.
Yandex
Объявления
21.11.2012, 03:16     Почему функция atan возвращает значения фрагментарно
Ответ Создать тему
Опции темы

Текущее время: 20:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru