QtのドキュメントでHello GLの例を調べていました。
マウスドラッグでシーンを回転させるのに役立つコードがいくつかあります。
void GLWidget::mouseMoveEvent(QMouseEvent *event)
{
int dx = event->x() - lastPos.x();
int dy = event->y() - lastPos.y();
if (event->buttons() & Qt::LeftButton) {
setXRotation(xRot + 8 * dy);
setYRotation(yRot + 8 * dx);
} else if (event->buttons() & Qt::RightButton) {
setXRotation(xRot + 8 * dy);
setZRotation(zRot + 8 * dx);
}
lastPos = event->pos();
}
と
void GLWidget::setXRotation(int angle)
{
qNormalizeAngle(angle);
if (angle != xRot) {
xRot = angle;
emit xRotationChanged(angle);
updateGL();
}
}
ドラッグの過程で x/y 座標の変化を計算しようとしていることがわかります。
しかし、彼らはそれをシーンの回転にどのようにマッピングしていますか? ドキュメントには、何が行われているのかについての説明がありません。
また、これらのマジックナンバーは8
どうですか?