Russian Qt Forum
Май 14, 2024, 00:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: qreal == qreal ?  (Прочитано 2320 раз)
Disa
Гость
« : Август 31, 2012, 15:08 »

В qglobal.h

Код
C++ (Qt)
...
#elif defined(QT_NO_FPU) || defined(QT_ARCH_ARM) || defined(QT_ARCH_WINDOWSCE) || defined(QT_ARCH_SYMBIAN)
typedef float qreal;
#else
typedef double qreal;
#endif
...
 

а в QQuaternion.h:

Код
C++ (Qt)
QQuaternion(qreal scalar, qreal xpos, qreal ypos, qreal zpos);
...
inline bool operator==(const QQuaternion &q1, const QQuaternion &q2)
{
   return q1.xp == q2.xp && q1.yp == q2.yp && q1.zp == q2.zp && q1.wp == q2.wp;
}
...
inline bool qFuzzyCompare(const QQuaternion& q1, const QQuaternion& q2) {
   return qFuzzyCompare(q1.xp, q2.xp) &&
          qFuzzyCompare(q1.yp, q2.yp) &&
          qFuzzyCompare(q1.zp, q2.zp) &&
          qFuzzyCompare(q1.wp, q2.wp);
}
 

Хотя потестил на разных данных (относительно больших и маленьких double, ну такие которые могут встретится при использовании поворотов через кватернионы) и результат получается один и тот же.
Но зачем проверка на равенство не в интервале?
Это потому что == должно вести себя так же как и == для встроенных типов? Но тогда зачем может потребоваться такое сравнение?
« Последнее редактирование: Август 31, 2012, 15:10 от Disa » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Август 31, 2012, 15:45 »

Но зачем проверка на равенство не в интервале?
Это потому что == должно вести себя так же как и == для встроенных типов?
Да, теория рекомендует перегруженному оператору придавать тот же смысл что и стандартному. И с этой рекомендацией я полностью согласен.

Отрадно видеть интерес к кватерниону (может что-то и вырастет из баловства Улыбающийся)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.103 секунд. Запросов: 23.