QQuaternionとQPushButtonでObjectrotationを実装しました。 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