当前位置: 首页>>代码示例>>C++>>正文


C++ Quat::makeRotate方法代码示例

本文整理汇总了C++中osg::Quat::makeRotate方法的典型用法代码示例。如果您正苦于以下问题:C++ Quat::makeRotate方法的具体用法?C++ Quat::makeRotate怎么用?C++ Quat::makeRotate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在osg::Quat的用法示例。


在下文中一共展示了Quat::makeRotate方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: creation_CHARRR

osg::PositionAttitudeTransform* creation_CHARRR(float posx, float posy, osg::Node* terrain){
	osg::Node* LECHARRR = osgDB::readNodeFile("t72-tank_des.flt");
	osg::PositionAttitudeTransform* pos_tank = new osg::PositionAttitudeTransform;
	osg::Vec3 pos, normal;
	intersection_terrain(posx, posy, terrain, pos, normal);
	pos_tank->setPosition(pos);
	osg::Quat rotation;
	rotation.makeRotate(osg::Vec3f(0, 0, 1), normal);
	pos_tank->setAttitude(rotation);
	pos_tank->addChild(LECHARRR);
	pos_tank->setUpdateCallback(new Deplacement);
	
	return pos_tank;
}
开发者ID:ClementCvl,项目名称:CppMasterRace_50yIUT,代码行数:14,代码来源:main.cpp

示例2: handle

bool GestionEvenements::handle( const osgGA::GUIEventAdapter& ea,
 osgGA::GUIActionAdapter& aa)
{
	switch(ea.getEventType()){
		case osgGA::GUIEventAdapter::KEYDOWN :
		
			switch(ea.getKey()){
				
				case 'q':
					noeudTourelle = rechercheTourelle.getNode();
					if (noeudTourelle != NULL){
						osgSim::DOFTransform* tourelleDOF = dynamic_cast<osgSim::DOFTransform*>(noeudTourelle);
						tourelleDOF->setCurrentHPR(osg::Vec3(tourelleDOF->getCurrentHPR().x() + osg::DegreesToRadians(20.0), 0.0, 0.0));
					}
					break;
				case 'd':
					noeudTourelle = rechercheTourelle.getNode();
					if (noeudTourelle != NULL){
						osgSim::DOFTransform* tourelleDOF = dynamic_cast<osgSim::DOFTransform*>(noeudTourelle);
						tourelleDOF->setCurrentHPR(osg::Vec3(tourelleDOF->getCurrentHPR().x() - osg::DegreesToRadians(20.0), 0.0, 0.0));
					}
					break;
				case '8':
					intersection_terrain(LECHARRR->getPosition().x(), LECHARRR->getPosition().y() + 3, terrain, posTank, normalTank);
					LECHARRR->setPosition(posTank);
					rotation.makeRotate(osg::Vec3f(0, 0, 1), normalTank);
					LECHARRR->setAttitude(rotation);
					fumeeTank->setPosition(LECHARRR->getPosition());
					break;
				case '2':
					intersection_terrain(LECHARRR->getPosition().x(), LECHARRR->getPosition().y() - 3, terrain, posTank, normalTank);
					LECHARRR->setPosition(posTank);
					rotation.makeRotate(osg::Vec3f(0, 0, 1), normalTank);
					LECHARRR->setAttitude(rotation);
					fumeeTank->setPosition(LECHARRR->getPosition());
					break;
				case '4':
					intersection_terrain(LECHARRR->getPosition().x() - 3, LECHARRR->getPosition().y(), terrain, posTank, normalTank);
					LECHARRR->setPosition(posTank);
					rotation.makeRotate(osg::Vec3f(0, 0, 1), normalTank);
					LECHARRR->setAttitude(rotation);
					fumeeTank->setPosition(LECHARRR->getPosition());
					break;
				case '6':
					intersection_terrain(LECHARRR->getPosition().x() + 3, LECHARRR->getPosition().y(), terrain, posTank, normalTank);
					LECHARRR->setPosition(posTank);
					rotation.makeRotate(osg::Vec3f(0, 0, 1), normalTank);
					LECHARRR->setAttitude(rotation);
					fumeeTank->setPosition(LECHARRR->getPosition());
					break;
				case 'p':
					LECHARRR->setScale(LECHARRR->getScale() + osg::Vec3(1.0, 1.0, 1.0));
					LECHARRR->getOrCreateStateSet()->setMode(GL_NORMALIZE, osg::StateAttribute::ON);
					fumeeTank->setScale(fumeeTank->getScale() + 5);
					break;
				case 'm':
					LECHARRR->setScale(LECHARRR->getScale() - osg::Vec3(1.0, 1.0, 1.0));
					LECHARRR->getOrCreateStateSet()->setMode(GL_NORMALIZE, osg::StateAttribute::ON);
					fumeeTank->setScale(fumeeTank->getScale() - 5);
					break;
				case 'f':
				scene->addChild(new osgParticle::ExplosionEffect(osg::Vec3(posCanonX, posCanonY, posCanonZ), 1.0f, 1.0f));
					break;
			}
			break;
		
		case osgGA::GUIEventAdapter::PUSH :{
			int x = ea.getX();
			int y = ea.getY();
			if( ea.getButton() == osgGA::GUIEventAdapter::LEFT_MOUSE_BUTTON)
				//std::cout << "bouton gauche" << std::endl;
			if (ea.getButton() == osgGA::GUIEventAdapter::MIDDLE_MOUSE_BUTTON)
				//std::cout << "bouton milieu" << std::endl;
			if (ea.getButton() == osgGA::GUIEventAdapter::RIGHT_MOUSE_BUTTON)
				//std::cout << "bouton droit" << std::endl;
			break;
 }
		case osgGA::GUIEventAdapter::DOUBLECLICK :
			break;
			}
 return false; // pour que l'événement soit traité par d'autres gestionnaires
}
开发者ID:ClementCvl,项目名称:CppMasterRace_50yIUT,代码行数:82,代码来源:main.cpp


注:本文中的osg::Quat::makeRotate方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。