Move source to src.

This commit is contained in:
Mike Bostock 2012-12-14 10:06:18 -08:00
parent 6f246722f9
commit 2442efc1a6
82 changed files with 13 additions and 236 deletions

105
src/physics/force.h Normal file
View file

@ -0,0 +1,105 @@
// -*- C++ -*-
#ifndef MBOSTOCK_FORCE_H
#define MBOSTOCK_FORCE_H
#include "vector.h"
namespace mbostock {
class Particle;
class UnaryForce {
public:
virtual ~UnaryForce() {}
void apply(Particle& p);
virtual Vector force(const Particle& p) = 0;
};
class BinaryForce {
public:
virtual ~BinaryForce() {}
void apply(Particle& a, Particle& b);
virtual Vector force(const Particle& a, const Particle& b) = 0;
};
class RandomForce : public UnaryForce {
public:
RandomForce(float k);
virtual Vector force(Particle& p);
private:
float k_;
};
class GravitationalForce : public UnaryForce {
public:
GravitationalForce(float g);
virtual Vector force(const Particle& p);
private:
float g_;
};
class LinearDragForce : public UnaryForce {
public:
LinearDragForce(float kd);
virtual Vector force(const Particle& p);
private:
float kd_;
};
class QuadraticDragForce : public UnaryForce {
public:
QuadraticDragForce(float kd);
virtual Vector force(const Particle& p);
private:
float kd_;
};
class HookeForce : public BinaryForce {
public:
HookeForce(float r, float ks);
virtual Vector force(const Particle& a, const Particle& b);
private:
float r_;
float ks_;
};
class DampenedHookeForce : public BinaryForce {
public:
DampenedHookeForce(float r, float ks, float kd);
virtual Vector force(const Particle& a, const Particle& b);
private:
float r_;
float ks_;
float kd_;
};
class CoulombForce : public BinaryForce {
public:
CoulombForce(float e);
virtual Vector force(const Particle& a, const Particle& b);
private:
float e_;
};
}
#endif