As a result of this question, I'd like to understand more about Qt's QTransform::rotate
function. In the documentation, it says:
QTransform & QTransform::rotate ( qreal angle, Qt::Axis axis = Qt::ZAxis )
Rotates the coordinate system counterclockwise by the given angle about the specified axis and returns a reference to the matrix.
Note that if you apply a QTransform to a point defined in widget coordinates, the direction of the rotation will be clockwise because the y-axis points downwards.
The angle is specified in degrees.
From my previous question, I learned that to rotate a QPolygonF
clockwise, I must actually rotate it 90 degrees counter-clockwise, according to the rotate
function:
QPolygonF original = QPolygonF() << QPoint(0, 1) << QPoint(4, 1) << QPoint(4, 2) << QPoint(0, 2);
QTransform transform = QTransform().translate(2, 2).rotate(90).translate(-2, -2);
QPolygonF rotated = transform.map(original);
qDebug() << rotated;
Output:
QPolygonF(QPointF(3, 0) QPointF(3, 4) QPointF(2, 4) QPointF(2, 0) )
E.g. for this rectangle:
To rotate to here:
Why is this? Why does the documentation say that my call to QTransform::rotate
is actually causing a clockwise rotation when I believe I'm not in "widget coordinates" - there are no widgets involved here.