ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/StuntDouble.hpp
Revision: 1234
Committed: Fri Jun 4 03:15:31 2004 UTC (20 years, 3 months ago) by tim
File size: 2144 byte(s)
Log Message:
new rattle algorithm is working

File Contents

# User Rev Content
1 gezelter 1097 #ifndef __STUNTDOUBLE_HPP__
2     #define __STUNTDOUBLE_HPP__
3    
4 tim 1118 #include <map>
5     #include "GenericData.hpp"
6    
7 gezelter 1097 #define OT_ATOM 0
8     #define OT_DATOM 1
9     #define OT_RIGIDBODY 2
10    
11 tim 1118 using namespace std;
12     class BaseVisitor;
13    
14 gezelter 1097 class StuntDouble {
15     public:
16 tim 1234 virtual ~StuntDouble();
17 gezelter 1097
18     int getObjType();
19    
20     bool isAtom(){
21     return objType == OT_ATOM || objType == OT_DATOM;
22     }
23    
24     bool isDirectionalAtom(){
25     return objType == OT_DATOM;
26     }
27    
28     bool isRigidBody(){
29     return objType == OT_RIGIDBODY;
30     }
31    
32     bool isDirectional(){
33     return isDirectionalAtom() || isRigidBody();
34     }
35    
36     virtual double getMass(void);
37    
38     virtual void getPos(double pos[3]);
39     virtual void setPos(double pos[3]);
40    
41     virtual void getVel(double vel[3]);
42     virtual void setVel(double vel[3]);
43    
44     virtual void getFrc(double frc[3]);
45     virtual void addFrc(double frc[3]);
46    
47     virtual void getA(double A[3][3]);
48     virtual void setA(double A[3][3]);
49    
50     virtual void getJ(double j[3]);
51     virtual void setJ(double j[3]);
52    
53 tim 1108 virtual void getQ( double q[4] ); // get the quanternions
54     virtual void setQ( double q[4] );
55    
56     virtual void setType(char* type) = 0;
57     virtual char* getType() = 0;
58    
59    
60 gezelter 1097 virtual void getTrq(double trq[3]);
61     virtual void addTrq(double trq[3]);
62    
63     virtual void getI(double I[3][3]);
64     virtual void lab2Body(double vec[3]);
65    
66     virtual void getGrad(double grad[6]);
67     virtual void setEuler(double phi, double theta, double psi);
68     virtual void getEulerAngles(double eulers[3]);
69    
70 tim 1118 virtual bool isLinear() {return false;}
71     virtual int linearAxis() {return -1;}
72    
73 chrisfen 1187 virtual double getZangle();
74     virtual void setZangle(double zAngle);
75     virtual void addZangle(double zAngle);
76 tim 1118
77     virtual void accept(BaseVisitor* v) = 0;
78    
79     void addProperty(GenericData* data);
80     void removeProperty(const string& propName);
81     GenericData* getProperty(const string& propName);
82    
83 gezelter 1097 protected:
84     StuntDouble(){}
85 tim 1234
86     //prevent default copy constructor copy information from properties which will cause problem
87     StuntDouble(const StuntDouble& sd){
88     objType = sd.objType;
89     }
90    
91 gezelter 1097 int objType;
92 tim 1118
93     map<string, GenericData*> properties;
94 gezelter 1097 };
95    
96     #endif

Properties

Name Value
svn:executable *