00001
00006 #include "GravityForce.h"
00007 using namespace GraphicsLib;
00008 using namespace ParticleSystems;
00009 GravityForce::GravityForce(Vector *f, float a, float m) : Force(f,a) {
00010 magnitude = m;
00011 }
00012
00013 GravityForce::~GravityForce() {
00014 delete force;
00015 }
00016
00017 void GravityForce::applyForce(Vector *direction) {
00018
00019 if(attenuation) {
00020 (*direction).x += magnitude * (*force).x;
00021 (*direction).y += magnitude * (*force).y;
00022 (*direction).z += magnitude * (*force).z;
00023 (*direction).w += magnitude * (*force).w;
00024 } else {
00025 (*direction).x += magnitude * (attenuation * RandomPosNum((*force).x));
00026 (*direction).y += magnitude * (attenuation * RandomPosNum((*force).y));
00027 (*direction).z += magnitude * (attenuation * RandomPosNum((*force).z));
00028 (*direction).w += magnitude * (attenuation * RandomPosNum((*force).w));
00029 }
00030 }
00031
00032 void GravityForce::applyForce(Vector *direction, float *mass) {
00033
00034 if(attenuation) {
00035 (*direction)+=magnitude *(*force)/(*mass);
00036 } else {
00037 (*direction).x += magnitude * (attenuation * RandomPosNum((*force).x)/(*mass));
00038 (*direction).y += magnitude * (attenuation * RandomPosNum((*force).y)/(*mass));
00039 (*direction).z += magnitude * (attenuation * RandomPosNum((*force).z)/(*mass));
00040 (*direction).w += magnitude * (attenuation * RandomPosNum((*force).w)/(*mass));
00041 }
00042 }