home *** CD-ROM | disk | FTP | other *** search
/ Enter 2005 March / ENTER.ISO / files / fwp-0.0.6-win32-installer.exe / PhysicsInfo.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2004-12-23  |  1.2 KB  |  45 lines

  1. #include "PhysicsInfo.h"
  2.  
  3. void PhysicsInfo::addPushForce(vec3_t F, unsigned long durationMillis){
  4.     forceTimeCombo_t ftc;
  5.     vectorCopy3d(F, ftc.F);
  6.     ftc.activeUntilMillis = SDL_GetTicks() + durationMillis;
  7.  
  8.     pushForces.push_back(ftc);
  9. }
  10.  
  11. void PhysicsInfo::calcAcceleration(){
  12.     vectorInit3d(0.0f, 0.0f, 0.0f, F);
  13.  
  14.     // F_g
  15.     vectorInit3d(0.0f, -m*g, 0.0f, F_g);
  16.     vectorAdd3d(F_g, F, F);
  17. //    printf("F_g: %f %f %f\n", F_g[0], F_g[1], F_g[2]);
  18.  
  19.     // F_r
  20.     vectorScale3d(-r, v, F_r);
  21.     vectorAdd3d(F_r, F, F);
  22. //    printf("F_r: %f %f %f\n", F_r[0], F_r[1], F_r[2]);
  23.  
  24.     // F_p
  25.     vectorInit3d(0.0f, 0.0f, 0.0f, F_p);
  26.     unsigned long currentMillis = SDL_GetTicks();
  27.     for(list<forceTimeCombo_t>::iterator i = pushForces.begin(); i != pushForces.end(); i++){
  28.         if( i->activeUntilMillis < currentMillis ){
  29.             i = pushForces.erase(i);
  30.         }else{
  31.             vectorAdd3d(F_p, i->F, F_p);
  32.         }
  33.     }
  34.     vectorAdd3d(F_p, F, F);
  35. //    printf("F_p: %f %f %f\n", F_p[0], F_p[1], F_p[2]);
  36.  
  37.  
  38.     vectorAdd3d(F_i, F, F);
  39. //    printf("F_i: %f %f %f\n", F_i[0], F_i[1], F_i[2]);
  40.  
  41. //    printf("F: %f %f %f\n", F[0], F[1], F[2]);
  42.     vectorScale3d(1.0f/m, F, a);
  43. //    printf("a: %f %f %f\n", a[0], a[1], a[2]);
  44. }
  45.