Advertisement
Guest User

Untitled

a guest
May 5th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.54 KB | None | 0 0
  1. void PhysicsEngine::applyForce(Body *b1, Body *b2)
  2. {
  3. double EPS = 10; // softening parameter (just to avoid infinities)
  4. glm::dvec3 p1 = b1->getPos();
  5. glm::dvec3 p2 = b2->getPos();
  6.  
  7. double dist = glm::distance(p1, p2);
  8.  
  9. double fmag = (G * b1->getMass() * b2->getMass()) / (dist * dist + EPS * EPS);
  10.  
  11. glm::dvec3 f1 = b1->getForce();
  12. glm::dvec3 f2 = b2->getForce();
  13.  
  14. glm::dvec3 f = (p2 - p1) / dist;
  15. f *= fmag;
  16.  
  17. f1 += f;
  18. f2 -= f;
  19.  
  20. b1->updateForce(f1);
  21. b2->updateForce(f2);
  22. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement