ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/StuntDouble.hpp
Revision: 1118
Committed: Mon Apr 19 03:52:27 2004 UTC (20 years, 2 months ago) by tim
File size: 1833 byte(s)
Log Message:
new implement of quickLate using visitor and composite pattern

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    
17     int getObjType();
18    
19     bool isAtom(){
20     return objType == OT_ATOM || objType == OT_DATOM;
21     }
22    
23     bool isDirectionalAtom(){
24     return objType == OT_DATOM;
25     }
26    
27     bool isRigidBody(){
28     return objType == OT_RIGIDBODY;
29     }
30    
31     bool isDirectional(){
32     return isDirectionalAtom() || isRigidBody();
33     }
34    
35     virtual double getMass(void);
36    
37     virtual void getPos(double pos[3]);
38     virtual void setPos(double pos[3]);
39    
40     virtual void getVel(double vel[3]);
41     virtual void setVel(double vel[3]);
42    
43     virtual void getFrc(double frc[3]);
44     virtual void addFrc(double frc[3]);
45    
46     virtual void getA(double A[3][3]);
47     virtual void setA(double A[3][3]);
48    
49     virtual void getJ(double j[3]);
50     virtual void setJ(double j[3]);
51    
52 tim 1108 virtual void getQ( double q[4] ); // get the quanternions
53     virtual void setQ( double q[4] );
54    
55     virtual void setType(char* type) = 0;
56     virtual char* getType() = 0;
57    
58    
59 gezelter 1097 virtual void getTrq(double trq[3]);
60     virtual void addTrq(double trq[3]);
61    
62     virtual void getI(double I[3][3]);
63     virtual void lab2Body(double vec[3]);
64    
65     virtual void getGrad(double grad[6]);
66     virtual void setEuler(double phi, double theta, double psi);
67     virtual void getEulerAngles(double eulers[3]);
68    
69 tim 1118 virtual bool isLinear() {return false;}
70     virtual int linearAxis() {return -1;}
71    
72    
73     virtual void accept(BaseVisitor* v) = 0;
74    
75     void addProperty(GenericData* data);
76     void removeProperty(const string& propName);
77     GenericData* getProperty(const string& propName);
78    
79 gezelter 1097 protected:
80     StuntDouble(){}
81     int objType;
82 tim 1118
83     map<string, GenericData*> properties;
84 gezelter 1097 };
85    
86     #endif

Properties

Name Value
svn:executable *