2
我有一個QGLWidget的GLWdiget子類,我想旋轉沿着Ox和Oy軸的3D對象。Qt OpenGL - 旋轉鼠標拖動 - 負三角洲
對於這一點,我已經重新實現mousePressEvent
和mouseMoveEvent
功能是這樣的:
void GLWidget::mousePressEvent(QMouseEvent *event)
{
lastPos = event->pos();
}
void GLWidget::mouseMoveEvent(QMouseEvent *event)
{
float dx = (event->x() - lastPos.x())/10.0f;
float dy = (event->y() - lastPos.y())/ 10.0f;
if (event->buttons() & Qt::LeftButton)
{
glRotatef(dy*0.1, 1.0f, 0.0f, 0.0f);
glRotatef(dx*0.1, 0.0f, 1.0f, 0.0f);
}
}
我的問題是dx
和dy
從不消極所以無論我用鼠標做的方向,它總是在旋轉同一方向。
例如,如果我向右水平拖動,我想讓對象沿着0y軸以正角度旋轉,並且如果我以負角度向左水平拖動。
對於垂直拖動,這將是相同的,但旋轉將沿着Ox軸。
此問題來自全球座標?但是,event->x
和event->y
給出了相對於GLWidget的位置。