Mf::Vector2 location;
};
-struct WindResistenceForce
+struct ResistanceForce
{
+ explicit ResistanceForce(Mf::Scalar scale = 1.0) :
+ k(scale) {}
+
const Mf::Vector2& operator () (const Mf::LinearState<2>& state)
{
- force = -2.0 * state.velocity;
+ force = -k * state.velocity;
return force;
}
private:
- Mf::Vector2 force;
+ Mf::Vector2 force;
+ Mf::Scalar k;
};
// gravity
current.force = Mf::Vector2(0.0, 000.0);
current.forces.push_back(SpringForce(Mf::Vector2(500.0, 200.0)));
- current.forces.push_back(WindResistenceForce());
+ current.forces.push_back(ResistanceForce(4.0));
current.forces.push_back(Mf::LinearState<2>::GravityForce(-2000.0));
// starting position
//Mf::euler<State,Derivative>(current, t, dt);
- //current.force = Mf::Vector2(0.0, -2000.0);
- current.force = userForce;
current.integrate(t, dt);
-
animation.update(t, dt);
}