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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114
#1

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

21.11.2012, 02:41. Просмотров 442. Ответов 3
Метки нет (Все метки)

Всем привет,

нужно значение угла от мыши (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
Модератор
Эксперт CЭксперт С++
12728 / 7188 / 802
Регистрация: 27.09.2012
Сообщений: 17,729
Записей в блоге: 2
Завершенные тесты: 1
21.11.2012, 03:12     Почему функция atan возвращает значения фрагментарно #2
В условии побитовое И. Или так и задумано?
gray_fox
What a waste!
1253 / 1136 / 54
Регистрация: 21.04.2012
Сообщений: 2,359
Завершенные тесты: 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 возвращает значения фрагментарно
Ответ Создать тему
Опции темы

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