예제 #1
0
void CoordinatesManipulator::translate( float x, float y, float z ) {
	calcM.setIdentity();

	calcM(0,3) = x;
	calcM(1,3) = y;
	calcM(2,3) = z;

	modelViewMatrix = modelViewMatrix*calcM;
}
예제 #2
0
void CalcKinCharacteristics::run()
{
	showParams();

	core::Code code;
	core::InternalGearRatios k;
	core::GearSetTypes	types;
	core::FakeItem	fake;
	std::vector<core::IIOItem*> containers;
	containers.push_back( &code );
	containers.push_back( &k );
	containers.push_back( &types );
	containers.push_back( &fake );

	while ( core::Singletons::getInstance()->getLoaderFromFile()->load( containers, core::IOFileManager::eOutputFileType::KIN_SLOW ) )
	{
		Characteristics ch;
		ch._tooth = calcZ(k, types);
		ch._torque = calcM( code, k );
		ch._angVelocity = calcW( code, k, ch._tooth );
		ch._power = calcN( ch._angVelocity, ch._torque );
		ch._kpdZacStepen = calcKpdZacStepen( k, ch._angVelocity, ch._power );
		ch._kpdTorque = calcMh( code, k, ch._kpdZacStepen );
		ch._qualityCriterias = calcQualityCriterias( ch._kpdTorque, ch._angVelocity );

		printCharacteristics( code, ch );

		NS_CORE Singletons::getInstance()->getIOFileManager()->writeToFile( NS_CORE IOFileManager::eOutputFileType::RESULT, code );

		NS_CORE GearBoxWithChanger gb( code );
		gb.createChainsForAllgears();
		NS_CORE Singletons::getInstance()->getIOFileManager()->writeToFile( NS_CORE IOFileManager::eOutputFileType::RESULT, gb );

		NS_CORE Singletons::getInstance()->getIOFileManager()->writeToFile( NS_CORE IOFileManager::eOutputFileType::RESULT, types );
		NS_CORE Singletons::getInstance()->getIOFileManager()->writeToFile( NS_CORE IOFileManager::eOutputFileType::RESULT, fake );
		NS_CORE Singletons::getInstance()->getIOFileManager()->writeToFile( NS_CORE IOFileManager::eOutputFileType::RESULT, k );
		NS_CORE Singletons::getInstance()->getIOFileManager()->writeToFile( NS_CORE IOFileManager::eOutputFileType::RESULT, ch );
		NS_CORE Singletons::getInstance()->getIOFileManager()->writeToFile(NS_CORE IOFileManager::eOutputFileType::RESULT, NS_CORE IOFileManager::end);

		m_characteristics.push_back( ch );
	}
}
예제 #3
0
void CoordinatesManipulator::rotate( float angle, int x, int y, int z ) {
	calcM.setIdentity();
	// cooler effekt, wenn nicht in radiant umgerechnet wird
	angle = angle*M_PI/180;
	if( x == 1 && y == 0 && z == 0 ){
		calcM(1,1) =  cos(angle);
		calcM(1,2) = -sin(angle);
		calcM(2,1) =  sin(angle);
		calcM(2,2) =  cos(angle);
	} else if( x == 0 && y == 1 && z == 0 ){
		calcM(0,0) =  cos(angle);
		calcM(0,2) =  sin(angle);
		calcM(2,0) = -sin(angle);
		calcM(2,2) =  cos(angle);
	} else if( x == 0 && y == 0 && z == 1 ){
		calcM(0,0) =  cos(angle);
		calcM(0,1) = -sin(angle);
		calcM(1,0) =  sin(angle);
		calcM(1,1) =  cos(angle);
	}

	modelViewMatrix = modelViewMatrix*calcM;
}