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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: определение угла поворота матрицы  (Прочитано 4812 раз)
Lisev
Гость
« : Июнь 19, 2008, 22:27 »

есть обьект класса QWmatrix, матрица трансформации с повернутым изображением, каким образом можно опредилить угол поворота изображения на ней чтобы потом востановить в исходное состояние изображение (чтобы изобрвжение оказалось по д тем углом под  каким его загружали из файла)? в данном класе не нашел не чего чтобы моглобы быть похоже на ето(((

и еще небольшой вопрос, если я меняю матрицу сначало масштаб, потом shear, а потом scale применяю к ней, то есть разница в какой последовательности проводить обратные манипуляции чтобы получилась исходная?
Записан
BaltikS
Гость
« Ответ #1 : Февраль 27, 2009, 19:46 »

Такая задача мне тоже сегодня потребовалась. Qt - не даёт на сей счёт ни какой инфы, rotate() - пожалуйста, а вернуть установленный угол увы... Пришлось вспоминать матрицы и изучать матрицу поворота. За трансформацию в Qt отвечает класс QTransform. У него есть метод isRotating(), который возвращает есть поворот или нет.
При 0 градусов - возвращает FALSE (естественно, ничего не повёрнуто), при других углах (от 0 до 359) - TRUE - тоже верно! Но почему при 180 градусов возвращает FALSE. Имхо баг....
Ну и может кому потребуется функция угла поворота в градусах вот её быстро набросал....
Код
C++ (Qt)
#include <math.h>
 
qreal rotateAngle( QTransform & tr)
{
double pi = 3.141592653;
 
qreal angle = (atan(tr.m21()/tr.m11())*180/pi);
if (tr.m21() > 0 && tr.m11() < 0) angle+=180;
if (tr.m21() < 0 && tr.m11() < 0) angle+=180;
return angle;
}
 
« Последнее редактирование: Март 04, 2009, 12:01 от BaltikS » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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