// 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 ); }