Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция atan возвращает значения фрагментарно 
:(
    Опции темы
Hrundel
Дата 21.11.2012, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 5.8.2012

Репутация: нет
Всего: нет



Всем привет,

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

Код

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?

Спасибо
PM MAIL   Вверх
Akina
Дата 21.11.2012, 08:03 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Наверное, проблема в том, что int x / int y в аргументе даёт int результат...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
maxim1000
Дата 21.11.2012, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



и вообще лучше использовать atan2


--------------------
qqq
PM WWW   Вверх
Peter
Дата 23.12.2012, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: нет
Всего: 1



Цитата(Hrundel @ 21.11.2012,  01:58)
Код

double panel::checkSector(int x, int y)
{
    if(x > 1 & y > 1 & x < 300 & y < 300) return atan(x/y) * (180 / PI);
}

Может быть, хотели написать условие
Код
    if(x > 1 && y > 1 && x < 300 && y < 300)

?
И, конечно, аргументом atan нужно бы поставить, например,
Код
((double)x / y)


Это сообщение отредактировал(а) Peter - 23.12.2012, 14:18


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.