Qt Transformationsmatrix

8

Ich muss QML-Objekte über QMatrix4x4 manipulieren, um einige perspektivische Transformationen anzuwenden. Im Grunde habe ich die Klasse Transform definiert, um ein Objekt QMatrix4x4 als Argument für das Transformationsfeld des QML Items zu verwenden

%Vor%

wo

%Vor%

Es scheint jedoch so zu sein, dass QML die Perspektivenmatrix nicht auf klassische Weise "definiert". Ich habe meine Tests hauptsächlich auf die Rotationen konzentriert ( Ссылка ). Nehmen wir an, ich habe ein QML-Objekt in x: 200, y: 200 und ich wende die Transformation an

%Vor%

wobei mytra die Identitätsmatrix ist. Die Methode applyTo () erhält die (Rotations-) Matrix

%Vor%

aber das "klassische" sollte

sein %Vor%

Ich verstehe nicht, woher diese Matrix kommt und wie ich meine Matrix an qt anpassen soll. Danke für die Hilfe.

    
lorenzolightsgdwarf 18.09.2014, 17:59
quelle

1 Antwort

13

Die Mathematik, die Qt ausführt, ist korrekt, aber der Referenzrahmen, den Qt verwendet, passt nicht zu dem, was Sie denken.

Matrix Mathematik:

Also die Komponenten, die Sie in der Mathematik sehen, fügen Scherung in den x- und y-Richtungen des Bildes hinzu.

Aber die Rotation, die Qt macht, ist eine dieser Achsen. Wenn Sie also eine 2D-Standarddrehung ohne Scheren ausführen möchten, müssen Sie entweder keine Achse angeben oder die Z-Achse angeben.

  

Die zu drehende Achse. Für eine einfache (2D-) Drehung um einen Punkt müssen Sie keine Achse angeben, da die Standardachse die Z-Achse (axis { x: 0; y: 0; z: 1 }) ist.

Ссылка

Die Drehung um die y-Achse sieht folgendermaßen aus:

Ich hoffe, das hilft.

    
phyatt 19.09.2014 02:28
quelle

Tags und Links