X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=examples%2Fbassteroids%2Fsource%2Fphysics.cpp;h=612a3ece9bde82edb6cdf23fbef3b2b7fc0a248b;hb=c462430faa39c68edfc28446260c86ec100e3424;hp=2453fd90ec82be2ed213eaec91da41c642b1b21f;hpb=9ce882cbb6bb7628d7c9883c43491a75c10625d7;p=libs%2Fgame.git diff --git a/examples/bassteroids/source/physics.cpp b/examples/bassteroids/source/physics.cpp index 2453fd9..612a3ec 100644 --- a/examples/bassteroids/source/physics.cpp +++ b/examples/bassteroids/source/physics.cpp @@ -191,10 +191,10 @@ void Physics::apply_impulses() float friction_coeff = 0.1f; float inv_mass_sum = entity1.inverse_mass+entity2.inverse_mass; float reaction = (1+restitution)*inner_product(v_rel, c.normal)/inv_mass_sum; - float friction = reaction*friction_coeff; + float friction = min(reaction*friction_coeff, v_tan/inv_mass_sum); LinAl::Vector impulse = c.normal*reaction+tangent*friction; entity1.velocity += impulse*entity1.inverse_mass; - entity2.velocity -= impulse*entity2.inverse_momi; + entity2.velocity -= impulse*entity2.inverse_mass; entity1.angular_velocity += Geometry::Angle::from_radians(entity1.inverse_momi*(r1.x*impulse.y-r1.y*impulse.x)); entity2.angular_velocity -= Geometry::Angle::from_radians(entity2.inverse_momi*(r2.x*impulse.y-r2.y*impulse.x)); }