cgma
|
00001 00002 #ifndef CUBIT_COORDINATE_SYSTEM_HPP 00003 #define CUBIT_COORDINATE_SYSTEM_HPP 00004 00005 00006 #include "CubitTransformMatrix.hpp" 00007 #include "DLIList.hpp" 00008 #include "CGMUtilConfigure.h" 00009 #include "CubitEntity.hpp" 00010 #include "CubitObservable.hpp" 00011 00012 class CUBIT_UTIL_EXPORT CubitCoordinateSystem : public CubitEntity, 00013 public CubitObservable 00014 { 00015 public: 00016 00018 enum Type { Rectangular, Cylindrical, Spherical }; 00019 00021 CubitCoordinateSystem(int id); 00022 00025 ~CubitCoordinateSystem(); 00026 00028 //int id() const { return mId; } use CubitEntity's ID 00029 virtual CubitBox bounding_box(); 00030 00031 virtual const std::type_info& entity_type_info() const; 00032 virtual const char* class_name() const; 00033 //- return class name string. 00034 00035 virtual CubitString entity_name() const; 00036 //- return entity name 00037 00039 Type get_type() const; 00040 void set_type(Type); 00041 00043 const CubitTransformMatrix& get_transform() const; 00044 00046 void set_transform(const CubitTransformMatrix& mat); 00047 00050 CubitTransformMatrix get_concatenated_transform() const; 00051 00052 00053 protected: 00054 // the id of this system 00055 //int mId; now use CubitEntity's ID 00056 // the type of this system 00057 Type mType; 00058 // the transform that represents this coordinate system's transformation 00059 CubitTransformMatrix mMatrix; 00060 // this coordinate system may reference other coordinate systems 00061 CubitCoordinateSystem* mReference; 00062 // this coordiante system may be referenced by multiple other systems 00063 DLIList<CubitCoordinateSystem*> mUses; 00064 00065 }; 00066 00067 #endif //CUBIT_COORDINATE_SYSTEM_HPP 00068