Matriz de transformação Qt
Preciso manipular itens QML por meio do QMatrix4x4, para aplicar algumas transformações de perspectiva. Basicamente, defini a classe Transform para usar um objeto QMatrix4x4 como argumento para o campo de transformação do Item QML
class Transform : public QQuickTransform{
Q_OBJECT
Q_PROPERTY(QMatrix4x4 matrix READ matrix WRITE setMatrix NOTIFY matrixChanged)
public:
explicit Transform(QQuickItem *parent = 0);
QMatrix4x4 matrix() const;
void setMatrix(QMatrix4x4 matrix);
virtual void applyTo(QMatrix4x4 *matrix) const;
signals:
void matrixChanged();
private:
QMatrix4x4 m_matrix;
};
Onde
void Transform::applyTo(QMatrix4x4 *matrix) const {
*matrix *= m_matrix;
matrix->optimize();
}
No entanto, parece que a QML não "define" a matriz de perspectiva da maneira clássica. Concentrei meus testes principalmente nas rotações (http://en.wikipedia.org/wiki/Rotation_matrix) Digamos que eu tenho um item QML em x: 200, y: 200 e aplico a transformação
transform: [Transform{matrix:mytra},Rotation { axis { x: 1; y: 0; z: 0 } angle: 90 } ]
onde mytra é a matriz de identidade. O método applyTo () recebe a matriz (rotação)
1 -0.195312 0 200
0 -0.195312 0 200
0 0 1 0
0 -0.000976562 0 1
mas o "clássico" deve ser
1 0 0 200
0 0 -1 200
0 1 0 0
0 0 0 1
Eu não entendo de onde vem essa matriz e como adaptar minha matriz ao qt. Obrigado pela ajuda.