RestingContactMethod.h

00001 /****************************************************************************
00002  * Copyright 2006 Evan Drumwright
00003  * This library is distributed under the terms of the GNU General Public 
00004  * License (found in COPYING).
00005  ****************************************************************************/
00006 
00007 #ifndef _RESTING_CONTACT_METHOD_H
00008 #define _RESTING_CONTACT_METHOD_H
00009 
00010 #include <list>
00011 #include <boost/shared_ptr.hpp>
00012 #include <Physsim/Base.h>
00013 #include <Physsim/Constants.h>
00014 #include <Physsim/Vector3.h>
00015 #include <Physsim/MeasureData.h>
00016 
00017 namespace Physsim {
00018 
00019 class Contact;
00020 
00022 class RestingContactMethod : public Base
00023 {
00024         public:
00025                 RestingContactMethod() {}
00026                 virtual ~RestingContactMethod() {}
00027                 static void determine_A_b(const std::vector<MeasureData>& ms, MatrixNN& A, VectorN& b);
00028                 static void measure_point_accels(const std::vector<MeasureData>& points, VectorN& result);
00029                 static void measure_point_accels(const std::vector<MeasureData>& points, VectorN& result, RigidBodyPtr rb1, RigidBodyPtr rb2);
00030                 static void measure_sep_accels(const std::vector<MeasureData>& points, VectorN& result);
00031                 static void measure_sep_accels(const std::vector<MeasureData>& points, VectorN& result, RigidBodyPtr rb1, RigidBodyPtr rb2);
00032 
00034 
00041                 virtual bool is_global_method() const = 0;
00042 
00044 
00051                 virtual void process_resting_contacts(const std::list<ContactPtr >& contacts) = 0;
00052 }; // end class
00053 
00054 } // end namespace
00055 
00056 #endif

Generated on Wed Oct 24 14:54:22 2007 for Physsim by  doxygen 1.5.1