00001
00009 #if !defined(OBJECT3D_H)
00010 #define OBJECT3D_H
00011
00012 #include "hastring.h"
00013
00014 const int OBJ3D_MOLECULE = 1;
00015 const int OBJ3D_SURFACE = 2;
00016 const int OBJ3D_DOT_SURFACE = 3;
00017
00018 class Vec3D;
00019 class HaMat_double;
00020
00021 class Object3D
00023 {
00024 public:
00025
00026 Object3D(const int new_obj_type, const char* new_name= "GEN_Object3D" );
00027 Object3D(const Object3D& obj_ref);
00028 virtual ~Object3D();
00029
00030 bool IsConnected() { return connect_flag; }
00031 void SetConnected(const bool status) { connect_flag = status; }
00032
00033 bool IsDisplayed() { return (displayed_flag) ; }
00034 void SetDisplayed(const bool status) { displayed_flag = status; }
00035
00036 virtual const char* GetObjName() const { return name.c_str(); }
00037 virtual bool SetObjName(const char* new_name) { name = new_name; return true;}
00038
00039 virtual int RotateX( double theta, const Vec3D& cnt );
00040 virtual int RotateY( double theta, const Vec3D& cnt );
00041 virtual int RotateZ( double theta, const Vec3D& cnt );
00042
00043 virtual int RotateObj( const HaMat_double& rot_mat, const Vec3D& cnt);
00044
00045 virtual int Translate( const Vec3D& tr_vec);
00046
00047 int GetObjType() const { return obj_type; }
00048
00049 protected:
00050
00051 int obj_type;
00052 bool connect_flag;
00053 bool displayed_flag;
00054
00055 HaString name;
00056 };
00057
00058 const int SCREEN_ORIENTATION = 0;
00059 const int REFERENCE_ORIENTATION = 1;
00060
00061 #endif // End of !defined(OBJECT3D_H)