Я реализовал Objectrotation с QQuaternion и QPushButton. Если нажать кнопку plus_x_button, активируется слот rotate_plus_x(). Соответственно для minus_x.Вращения с QQuaternion и QSlider
void OpenGLScene::rotate_plus_x()
{
OpenGLScene::anglex = 2;
test->rotation *= QQuaternion::fromAxisAndAngle(QVector3D(1,0,0),OpenGLScene::anglex);
update();
}
void OpenGLScene::rotate_minus_x()
{
OpenGLScene::anglex = -2;
test->rotation *= QQuaternion::fromAxisAndAngle(QVector3D(1,0,0),OpenGLScene::anglex);
update();
}
void OpenGLScene::rotate_plus_y(){...}
void OpenGLScene::rotate_minus_y(){...}
void OpenGLScene::rotate_plus_z(){...}
void OpenGLScene::rotate_minus_z(){...}
Теперь я хотел бы реализовать функциональность с Qslider вместо QPushButton. В диапазоне от -180 ° до 180 ° Но тогда у меня есть проблема, что я получаю странные результаты, потому что значение Qslider изменено, а QQuaternion - неравномерный угол. У вас есть идея, как этого достичь? Я пробовал его с if-утверждениями. Что-то вроде:
if(slidervalue<0){
OpenGLScene::anglex = -2;
test->rotation *= QQuaternion::fromAxisAndAngle(QVector3D(1,0,0),OpenGLScene::anglex);}
else{
OpenGLScene::anglex = 2;
test->rotation *= QQuaternion::fromAxisAndAngle(QVector3D(1,0,0),OpenGLScene::anglex);}
К сожалению, он не работает. У вас есть идея, как это достичь?
Спасибо
спасибо. Это была именно проблема – buddy