コード例 #1
0
ファイル: main.cpp プロジェクト: ProkopHapala/cpp_arch
// FUNCTION ======	physics
void physics(){
	double dt = PHYS_dt;
	long long nt1 = getCPUticks();
	for(int iSubStep=0; iSubStep<PHYS_STEPS_PER_FRAME; iSubStep++ ){

		double Cd = -0.5;
		double g  = -9.81;
		double k  =  20;
		
		rbody.clean_temp  (                               );
		rbody.force.set   ( 0,g*rbody.mass,0              );

/*
		for ( int i=0; i<len; i++ ){
			rbody.apply_anchor( k, poss[i], poss[i] );
		}
		rbody.vel.mul(0.8);
		rbody.L  .mul(0.8);
*/

		Vec3d p0,p1; p1.set(0.0,0.0,0.0); p1.set(1.0,2.0,3.0);

		rbody.apply_force (    rbody.vel*Cd , p0     );
		rbody.apply_anchor( k, p1,       p0     );
		rbody2.clean_temp  (                         );
		rbody2.force.set   ( 0,g*rbody2.mass,0       );
		rbody2.apply_force (    rbody2.vel*Cd, p0    );
		constrain1->apply();

/*
		rbody.apply_force (    rbody.vel*Cd , {0,0,0}     );
		rbody.apply_anchor( k, {1,2,3},       {0,0,0}     );
		rbody2.clean_temp  (                              );
		rbody2.force.set   ( 0,g*rbody2.mass,0            );
		rbody2.apply_force (    rbody2.vel*Cd, {0,0,0}    );
		constrain1->apply();
*/

	
		//printVec(rbody.force  );   printf("force\n");
		//printVec(rbody.torq  );    printf("torq\n");

		rbody .move(dt);
		rbody2.move(dt);

	} 
	long long nt2  = getCPUticks();
	double perStep = double(nt2-nt1)/PHYS_STEPS_PER_FRAME;
	tickSum+= perStep; stepSum++;
	printf( " PERFORMANCE: %f ticks/step ( in %i steps ) average: %f \n", perStep, PHYS_STEPS_PER_FRAME, tickSum/stepSum );
}