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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
Саймон
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 8
#1

Сравнение float. - C++

16.04.2012, 20:38. Просмотров 2233. Ответов 12
Метки нет (Все метки)

Доброго времени суток!

Помогите пожалуйста сформулировать условие.

Есть определенный объект, который следит за передвижением мыши, делаю всё следующим образом:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 float Rad = (float)-atan2(mouse_x-_x, mouse_y-_y); // получаю угол от объекта до мыши
  
  //осуществляю поворот объекта:
  if( Rad != 0.0f){
    
    if(_Radius > Rad)
    {
      _Radius -= 2.0f *dt;
    }
    
    if(_Radius < Rad)
    {
      _Radius += 2.0f *dt;
    }
  }
Мне нужно как-то узнать, что поворот был совершен, как это можно сделать?
Пытался сравнить _Radius и Rad, следующим образом:

C++
1
if( ( (Rad / 2*M_PI) + 1.0f - (_Radius / 2*M_PI) + 1.0f) < 0.00001f )
Но видимо, делаю, что-то не так.
Помогите пожалуйста.

Добавлено через 1 час 21 минуту
Никто не поможет?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
5454 / 1820 / 335
Регистрация: 10.12.2010
Сообщений: 5,383
Записей в блоге: 3
16.04.2012, 21:20     Сравнение float. #2
Цитата Сообщение от Саймон Посмотреть сообщение
Мне нужно как-то узнать, что поворот был совершен
Как вариант:
1) после выполнения поворота логическому флагу присвоить значение истина.
2) при проверке на поворот проверять флаг. Если истина - был поворот. После проверки выставить ложь.
Саймон
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 8
16.04.2012, 21:43  [ТС]     Сравнение float. #3
Спасибо, конечно. Но мне как раз нужно узнать, когда выставлять флаг А узнать никак не могу, потому что _Radius и Rad - никак не получается сравнить на равенство.
HighPredator
5454 / 1820 / 335
Регистрация: 10.12.2010
Сообщений: 5,383
Записей в блоге: 3
16.04.2012, 21:58     Сравнение float. #4
После того, как осуществили поворот.
Саймон
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 8
16.04.2012, 22:09  [ТС]     Сравнение float. #5
Цитата Сообщение от HighPredator Посмотреть сообщение
После того, как осуществили поворот.
Как узнать, что поворот осуществлен?
HighPredator
5454 / 1820 / 335
Регистрация: 10.12.2010
Сообщений: 5,383
Записей в блоге: 3
16.04.2012, 22:14     Сравнение float. #6
Цитата Сообщение от Саймон Посмотреть сообщение
Как узнать, что поворот осуществлен?
У вас есть что-то, что вращается. Вращение, раз оно есть, так или иначе описано. Вот там, где описано и смотрите.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.04.2012, 09:19     Сравнение float. #7
Цитата Сообщение от Саймон Посмотреть сообщение
if( Rad != 0.0f)
А вот это условие никогда не будет истинно Или Вы как раз об этом?
castaway
Эксперт С++
4876 / 3015 / 370
Регистрация: 10.11.2010
Сообщений: 11,075
Записей в блоге: 10
Завершенные тесты: 1
17.04.2012, 09:25     Сравнение float. #8
Цитата Сообщение от fasked Посмотреть сообщение
А вот это условие никогда не будет истинно. Или Вы как раз об этом?
Почему же? По-моему оно как раз почти всегда будет истинно.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
17.04.2012, 09:41     Сравнение float. #9
Цитата Сообщение от lazybiz Посмотреть сообщение
Почему же? По-моему оно как раз почти всегда будет истинно.
Чистый ноль в float сложно получить.
castaway
Эксперт С++
4876 / 3015 / 370
Регистрация: 10.11.2010
Сообщений: 11,075
Записей в блоге: 10
Завершенные тесты: 1
17.04.2012, 09:43     Сравнение float. #10
Цитата Сообщение от Nekto Посмотреть сообщение
Чистый ноль в float сложно получить.
В том то и дело. Вникни в условие! Там стоит != !!
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
17.04.2012, 09:50     Сравнение float. #11
Цитата Сообщение от lazybiz Посмотреть сообщение
В том то и дело. Вникни в условие! Там стоит != !!
Так указывают на то, что смысла в этом if в таком виде нету.
castaway
Эксперт С++
4876 / 3015 / 370
Регистрация: 10.11.2010
Сообщений: 11,075
Записей в блоге: 10
Завершенные тесты: 1
17.04.2012, 09:54     Сравнение float. #12
Указывают на то, что "условие никогда не будет истинно".

Чистый ноль в float сложно получить.
Этим тоже указывают на то в if нету смысла?
Ошибся - признай, что уж упираться.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2012, 10:24     Сравнение float.
Еще ссылки по теме:

C++ Сравнение float
ERROR with float C++
C++ Чем отличаются float преобразования (float)var от float(var)
C++ Ошибка преобразования: значение типа "float *" нельзя присвоить сущности типа "float"
неверное приведение void* к *float а далее к float C++

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.04.2012, 10:24     Сравнение float. #13
Цитата Сообщение от lazybiz Посмотреть сообщение
В том то и дело. Вникни в условие! Там стоит != !!
Тут я проглядел - мой косяк
Ну значит оно всегда будет истинно. В любом случае логика программы нарушена и соответственно программа работает не так как ожидает автор.
Такое условие бесполезно. Его можно убрать вообще.
Yandex
Объявления
17.04.2012, 10:24     Сравнение float.
Ответ Создать тему
Опции темы

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