00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00024
00025 typedef cpFloat (*cpDampedRotarySpringTorqueFunc)(struct cpConstraint *spring, cpFloat relativeAngle);
00026
00027 const cpConstraintClass *cpDampedRotarySpringGetClass(void);
00028
00030 typedef struct cpDampedRotarySpring {
00031 cpConstraint constraint;
00032 cpFloat restAngle;
00033 cpFloat stiffness;
00034 cpFloat damping;
00035 cpDampedRotarySpringTorqueFunc springTorqueFunc;
00036
00037 cpFloat target_wrn;
00038 cpFloat w_coef;
00039
00040 cpFloat iSum;
00041 } cpDampedRotarySpring;
00042
00044 cpDampedRotarySpring* cpDampedRotarySpringAlloc(void);
00046 cpDampedRotarySpring* cpDampedRotarySpringInit(cpDampedRotarySpring *joint, cpBody *a, cpBody *b, cpFloat restAngle, cpFloat stiffness, cpFloat damping);
00048 cpConstraint* cpDampedRotarySpringNew(cpBody *a, cpBody *b, cpFloat restAngle, cpFloat stiffness, cpFloat damping);
00049
00050 CP_DefineConstraintProperty(cpDampedRotarySpring, cpFloat, restAngle, RestAngle);
00051 CP_DefineConstraintProperty(cpDampedRotarySpring, cpFloat, stiffness, Stiffness);
00052 CP_DefineConstraintProperty(cpDampedRotarySpring, cpFloat, damping, Damping);
00053 CP_DefineConstraintProperty(cpDampedRotarySpring, cpDampedRotarySpringTorqueFunc, springTorqueFunc, SpringTorqueFunc);
00054