void NaviCubeImplementation::rotateView(int axis,float rotAngle) { SbRotation viewRot = m_View3DInventorViewer->getCameraOrientation(); SbVec3f up; viewRot.multVec(SbVec3f(0,1,0),up); SbVec3f out; viewRot.multVec(SbVec3f(0,0,1),out); SbVec3f& u = up; SbVec3f& o = out; SbVec3f right (u[1]*o[2]-u[2]*o[1], u[2]*o[0]-u[0]*o[2], u[0]*o[1]-u[1]*o[0]); SbVec3f direction; switch (axis) { default : return; case DIR_UP : direction = up; break; case DIR_OUT : direction = out; break; case DIR_RIGHT : direction = right; break; } SbRotation rot(direction, -rotAngle*M_PI/180.0); SbRotation newViewRot = viewRot * rot; m_View3DInventorViewer->setCameraOrientation(newViewRot); }
void NaviCubeImplementation::setView(float rotZ,float rotX) { SbRotation rz, rx, t; rz.setValue(SbVec3f(0, 0, 1), rotZ * M_PI / 180); rx.setValue(SbVec3f(1, 0, 0), rotX * M_PI / 180); m_View3DInventorViewer->setCameraOrientation(rx * rz); }