Go to the documentation of this file.00001 #ifndef COLLISIONSMANAGER_H
00002 #define COLLISIONSMANAGER_H
00003
00004 #include "ObjObject.h"
00005 #include "Mass.h"
00006
00007
00012
00015
00016
00017
00018 class CollisionsManager
00019 {
00020 public:
00022 CollisionsManager();
00024 ~CollisionsManager();
00025
00031 void CollisionWithCloth(Mass *mass,
00032 Mass *mass0,
00033 Mass *mass1,
00034 Mass *mass2
00035 );
00036
00045 void CollisionWithObject(Mass *mass,
00046 const ngl::Vector &p0,
00047 const ngl::Vector &p1,
00048 const ngl::Vector &p2,
00049 float _criticalDistance,
00050 float _fricition,
00051 float _bumpiness
00052 );
00053
00063 void CollisionWithAnimatedObject(Mass *mass,
00064 const ngl::Vector &p0,
00065 const ngl::Vector &p1,
00066 const ngl::Vector &p2,
00067 const ngl::Vector &_triangleVelocity,
00068 float _criticalDistance,
00069 float _fricition,
00070 float _bumpiness
00071 );
00072 private:
00073
00074
00084 int CalculateAndTestBarycentricCoordinates(ngl::Real &w2,
00085 ngl::Real &w3,
00086 ngl::Real &w1,
00087 ngl::Vector x_Mass_0,
00088 ngl::Vector x1_0,
00089 ngl::Vector x2_0,
00090 ngl::Real eps,
00091 ngl::Real Dt
00092 );
00096 ngl::Real CramersDeterminator(ngl::Vector x1_0,
00097 ngl::Vector x2_0
00098 );
00099
00104 ngl::Real TriangleCharacteristicLength(ngl::Vector p0,
00105 ngl::Vector p1,
00106 ngl::Vector p2
00107 );
00108 };
00109
00110 #endif // COLLISIONSMANAGER_H