Move source to src.
This commit is contained in:
parent
6f246722f9
commit
2442efc1a6
82 changed files with 13 additions and 236 deletions
105
src/physics/force.h
Normal file
105
src/physics/force.h
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue