bool stopping_criteria(TFloat a, TFloat b, TFloat tolerance){ return TFloat( fabs((a - b).dbl()), T) < tolerance; }
void CSPCharacter::Spawn() { BaseClass::Spawn(); m_flMaxStepSize = TFloat(0.1f, SCALE_METER); }
// energia mecanica TFloat energiaMecanica(const Datos& d, TFloat t) { TFloat dos_tf=TFloat(2.0,pr); return posicion(d, t)*g + velocidad(d,t)*velocidad(d,t) / dos_tf; }
TFloat aceleracionConRozamiento(const Datos& d, TFloat t) { TFloat a=d.cr/d.m; TFloat menos_uno_tf=TFloat(-1,pr); return (d.v0+g/a) * ((menos_uno_tf*a*t).exponencial())*menos_uno_tf*a; }
TFloat velocidadConRozamiento(const Datos& d, TFloat t) { TFloat a=d.cr/d.m; TFloat menos_uno_tf=TFloat(-1,pr); return menos_uno_tf*g/a + (d.v0+g/a) * ((menos_uno_tf*a*t).exponencial()); }
TFloat posicionConRozamiento(const Datos& d, TFloat t) { TFloat a=d.cr/d.m; TFloat menos_uno_tf=TFloat(-1,pr); return d.h + d.v0/a + g/(a*a) - (g/a)*t - ( d.v0/a + g/(a*a) ) * ((menos_uno_tf*a*t).exponencial()); }
TFloat aceleracionCaidaLibre(const Datos& d, TFloat t) { TFloat menos_uno_tf=TFloat(-1,pr); return menos_uno_tf*g; }