#include "config.h" #include "vector.h" class Spring { private: float mass; float x[2]; float y[2]; int joint[2]; float a; int freejoints; float length; float muscle_offset; float muscle_frequency; float muscle_amplitude; float muscle; static int S_muscle_flow; static float S_t; static float S_k; public: Spring(float nx1, float ny1, float nx2, float ny2, int fj); Spring(float nx1, float ny1, int fj); Spring(); void AddJoint(float nx, float ny, int fj); void AddMuscle(float f, float a, float dt); float X(int i) { return x[i]; } float Y(int i) { return y[i]; } float A() { return a; } float Length() { return length; } float Muscle() { return muscle; } float MuscleAmplitude() { return muscle_amplitude; } float MuscleOffset() { return muscle_offset; } float MuscleFrequency() { return muscle_frequency; } float MuscleAmplitude(float a) { return muscle_amplitude=a; } float MuscleOffset(float o) { return muscle_offset=o; } float MuscleFrequency(float f) { return muscle_frequency=f; } void Set(int i, float nx, float ny) { x[i]=nx; y[i]=ny; } int ConnectedJoint(int i, int j) { return joint[i]=j; } int ConnectedJoint(int i) { return joint[i]; } void Fix() { freejoints--; } void Unfix() { freejoints++; } static void ReverseMuscles() { S_muscle_flow = -S_muscle_flow; } static int MuscleFlow(int nf) { return S_muscle_flow = nf; } static int MuscleFlow() { return S_muscle_flow; } static float T() { return S_t; } static float T(float dt) { return S_t+=dt * S_muscle_flow; } static float K() { return S_k; } static float K(float nk) { return S_k = nk; } Vector ResultantForce(int which, float dt); class xNoMatch {}; };