home *** CD-ROM | disk | FTP | other *** search
- #include "PhysicsInfo.h"
-
- void PhysicsInfo::addPushForce(vec3_t F, unsigned long durationMillis){
- forceTimeCombo_t ftc;
- vectorCopy3d(F, ftc.F);
- ftc.activeUntilMillis = SDL_GetTicks() + durationMillis;
-
- pushForces.push_back(ftc);
- }
-
- void PhysicsInfo::calcAcceleration(){
- vectorInit3d(0.0f, 0.0f, 0.0f, F);
-
- // F_g
- vectorInit3d(0.0f, -m*g, 0.0f, F_g);
- vectorAdd3d(F_g, F, F);
- // printf("F_g: %f %f %f\n", F_g[0], F_g[1], F_g[2]);
-
- // F_r
- vectorScale3d(-r, v, F_r);
- vectorAdd3d(F_r, F, F);
- // printf("F_r: %f %f %f\n", F_r[0], F_r[1], F_r[2]);
-
- // F_p
- vectorInit3d(0.0f, 0.0f, 0.0f, F_p);
- unsigned long currentMillis = SDL_GetTicks();
- for(list<forceTimeCombo_t>::iterator i = pushForces.begin(); i != pushForces.end(); i++){
- if( i->activeUntilMillis < currentMillis ){
- i = pushForces.erase(i);
- }else{
- vectorAdd3d(F_p, i->F, F_p);
- }
- }
- vectorAdd3d(F_p, F, F);
- // printf("F_p: %f %f %f\n", F_p[0], F_p[1], F_p[2]);
-
-
- vectorAdd3d(F_i, F, F);
- // printf("F_i: %f %f %f\n", F_i[0], F_i[1], F_i[2]);
-
- // printf("F: %f %f %f\n", F[0], F[1], F[2]);
- vectorScale3d(1.0f/m, F, a);
- // printf("a: %f %f %f\n", a[0], a[1], a[2]);
- }
-