示例#1
0
    Tile*   ViewPort::enclosingTile(const vector2& screen_pos)
    {
        const vector2& tsc = tm_.scale();

        vector2 mspos(std::floor(screen_pos[0] / tsc[0]),
                      std::floor(screen_pos[1] / tsc[1]));

        mspos += pos_in_tm_;

        return tm_.tile(mspos[0], mspos[1]);
    }
示例#2
0
void test_mainAORTA(void)		//AORTA
{
	typedef CSimuThinshell T;
	CMeMaterialProperty mtl;
	mtl.setYoung(2.00e5);
	mtl.setDamping(0.250, 0.0);
	mtl.setMassDamping(5.00e-4);
	mtl.m_rigid = 1;	
	T *pshell = T::genShellFromFile("aorta2.quad", mtl);
	assert(pshell!=NULL); T &s = *pshell;
	//========================================================
	int fixednodes[]={309, 310, 311, 312, 313, 314, 315, 316,
					  305 //, 306, 307, 308
					 };
	int rotnodes[]={184, 185,186,187,188,189,190,191}; 

	const int len = sizeof(fixednodes)/sizeof(int);
	const int lenr = sizeof(rotnodes)/sizeof(int);
	CFixedPositionConstraint* fixpos = new CFixedPositionConstraint(10, 0, 1e10, len, fixednodes);
	s.addConstraint(fixpos);
	Vector3d rotcenter(0.00, 0.48, 0);
	Vector3d norm(0,-1,0);
	const double av = PI*2.0*1.0e-3;	//angular velocity unit: degree/ms
	CPlanarRotationConstraint* rotpos = new CPlanarRotationConstraint(10, 0, 550, lenr, rotnodes,
		rotcenter, norm, av);
	s.addConstraint(rotpos);
	CFixedPositionConstraint* fixpos2 = new CFixedPositionConstraint(5, 551, 700, lenr, rotnodes);
	s.addConstraint(fixpos2);
	CMouseConstraint * mc  = new CMouseConstraint(309, 33.3);
	s.addConstraint(mc);
	Vector3d mspos(0.05256967, -0.492972, -0.010032078);
	mc->updatePosition(mspos, 0);

	//=====================================
	s.setGravityAccelertion(Vector3d(0,0,0));
	CSimuEngine e;
	e.addSimuObject(pshell);
	e.setTimestep(5.00e-4); 

	const int timerid = 0;
	startFastTimer(timerid);
	e.startSimulationInMiliSeconds(2000, 5);
	stopFastTimer(timerid);
	reportTimeDifference(timerid, "AORTA simmu. run time:");
}