本文整理汇总了C++中osg::Quat::asVec3方法的典型用法代码示例。如果您正苦于以下问题:C++ Quat::asVec3方法的具体用法?C++ Quat::asVec3怎么用?C++ Quat::asVec3使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osg::Quat
的用法示例。
在下文中一共展示了Quat::asVec3方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: buttonEvent
//.........这里部分代码省略.........
//curMatrix = SceneManager::instance()->getObjectTransform()->getMatrix();
//curScale = SceneManager::instance()->getObjectScale();
// printMat(curMatrix, curScale);
/*osg::Matrix mat2 = */
osg::Matrix rotM;
rotM.makeRotate(DegreesToRadians(1.0),osg::Vec3(0,1,0));
// printMat(rotM, curScale);
curMatrix= o2w * rotM * w2o;
// printMat(curMatrix, curScale);
//curMatrix.setTrans(trans);
//cout<<"New Matrix"<<endl;
//printMat(curMatrix, curScale);
cout<<"x = "<<origPlanetPoint[0]<<", y = "<<origPlanetPoint[1]<<", z = "<<origPlanetPoint[2]<<endl;
osg::Matrix objMat = SceneManager::instance()->getObjectTransform()->getMatrix();
objMat.decompose(trans1,rot1,scale1,so1);
_destMat1.decompose(trans2,rot2,scale2,so2);
// cout<<"rotate from"<<endl;
// printQuat(rot1);
// cout<<"rotate to"<<endl;
// printQuat(rot2);
osg::Vec3 vect1, vect2;
double ang1, ang2;
rot1.getRotate(ang1, vect1);
rot2.getRotate(ang2, vect2);
osg::Vec3 vec1 = rot1.asVec3();
osg::Vec3 vec2 = rot2.asVec3();
printVec(vect1);
printVec(vect2);
osg::Quat rotQuat;
rotQuat.makeRotate(vect1, vect2);
// printQuat(rotQuat);
rotM.makeRotate(rotQuat);
osg::Matrix mat = objMat* rotM;
mat.setTrans(trans1);
SceneManager::instance()->setObjectMatrix(mat);
}
else if(type == 'q') {
cout<<"Distance = "<<distanceToSurface<<endl;
}
else if(type == 'g') {
flagOut = false;
flagIn = false;
flagRot = false;
flagZoom = true;
osg::Matrix objMat = SceneManager::instance()->getObjectTransform()->getMatrix();
/* osg::Matrix rotM8;
rotM8.makeRotate(DegreesToRadians(10.0),osg::Vec3(0,1,0));
osg::Matrix mat9 = rotM8 * objMat;
SceneManager::instance()->setObjectMatrix(mat9);
*/