class MyMass:CMass { F64 radius; }; class MySpring:CSpring { }; CMathODE *ode = NULL; U0 MyDerivative(CMathODE *ode, F64, COrder2D3 *, COrder2D3 *) { MyMass *tmpm1, *tmpm2; tmpm1 = ode->next_mass; while (tmpm1 != &ode->next_mass) { tmpm2 = tmpm1->next; while (tmpm2 != &ode->next_mass) { tmpm2 = tmpm2->next; } tmpm1 = tmpm1->next; } } U0 Init() { ode = ODENew(0, 1e-4, ODEF_HAS_MASSES); ode->derive = &MyDerivative; ode->drag_v2 = 0.002; ode->drag_v3 = 0.00001; ode->acceleration_limit = 5e3; QueueInsert(ode, Fs->last_ode); } U0 CleanUp() { QueueRemove(ode); QueueDel(&ode->next_mass, TRUE); QueueDel(&ode->next_spring, TRUE); ODEDel(ode); }