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

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

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

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

16.04.2012, 20:38. Просмотров 2339. Ответов 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 минуту
Никто не поможет?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2012, 20:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сравнение float. (C++):

Сравнение float - C++
void setup() { Serial.begin(9600); float azimuth = 0; float course = 180; float a = sin((azimuth -...

опять ошибка.на этот раз cannot convert `float (*)(float)' to `float' in argument passing - C++
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;math.h&gt; float f1(float x)/*vira*enie 1*/ {return (x*cos(x))/(1+ pow(x,2));} ...

Чем отличаются float преобразования (float)var от float(var) - C++
Здравствуйте! Подскажите, чем отличается (float)var от float(var)

cannot convert `float' to `float*. Почему так происходит? - C++
всем привет, помогите исправить ошибки... а то голова мало варит уже, а завтра надо сдать уже #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;...

неверное приведение void* к *float а далее к float - C++
Почему когда привожу void* к int* потом к int то все работает, данные не бьются и работают нормально, когда делаю те же операции но с...

invalid types `float[float]' for array subscript - C++
void SEARCH(float vol, float price, int i) { if (i&gt;N) { if(price&gt;maxprice) { ...

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

Чистый ноль в float сложно получить.
Этим тоже указывают на то в if нету смысла?
Ошибся - признай, что уж упираться.
fasked
Эксперт С++
4934 / 2514 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.04.2012, 10:24 #13
Цитата Сообщение от lazybiz Посмотреть сообщение
В том то и дело. Вникни в условие! Там стоит != !!
Тут я проглядел - мой косяк
Ну значит оно всегда будет истинно. В любом случае логика программы нарушена и соответственно программа работает не так как ожидает автор.
Такое условие бесполезно. Его можно убрать вообще.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2012, 10:24
Привет! Вот еще темы с ответами:

Ошибка cannot convert 'float' to 'float*' - C++
Здравствуйте, что означает error: cannot convert 'float' to 'float*' for argument '1' to 'int mas_time(float*, int)'? Из-за чего она...

ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int) - C++
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй подпрограме.Извиниет за ошибки.Не владею руским.Помогите...

"Значение типа float* нельзя использовать для инициализации сущности типа float" - C++
#include &lt;math.h&gt; #include&lt;iostream&gt; #include &lt;iomanip&gt; #include&lt;conio.h&gt; using namespace std; ...

Сравнение текста из файла и сравнение с текстом в программе char - Dev C++ - C++
Доброго времени суток! Имеется код программы: ifstream test(&quot;primer.txt&quot;); char awm = &quot;kod&quot;; char buff; test &gt;&gt; buff; if (buff...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.04.2012, 10:24
Ответ Создать тему
Опции темы

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