Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __igtlQuaternionTrackingDataMessage_h
00018 #define __igtlQuaternionTrackingDataMessage_h
00019
00020 #include <vector>
00021 #include <string>
00022
00023 #include "igtlObject.h"
00024
00025 #include "igtlMath.h"
00026 #include "igtlMessageBase.h"
00027 #include "igtlTypes.h"
00028
00029
00030 namespace igtl
00031 {
00032
00033 class IGTLCommon_EXPORT QuaternionTrackingDataElement: public Object
00034 {
00035 public:
00036 typedef QuaternionTrackingDataElement Self;
00037 typedef Object Superclass;
00038 typedef SmartPointer<Self> Pointer;
00039 typedef SmartPointer<const Self> ConstPointer;
00040
00041 igtlTypeMacro(igtl::QuaternionTrackingDataElement, igtl::Object);
00042 igtlNewMacro(igtl::QuaternionTrackingDataElement);
00043
00044
00045 enum {
00046 TYPE_TRACKER = 1,
00047 TYPE_6D = 2,
00048 TYPE_3D = 3,
00049 TYPE_5D = 4,
00050
00051 };
00052
00053 public:
00054 int SetName(const char* name);
00055 const char* GetName() { return this->m_Name.c_str(); };
00056
00057 int SetType(igtlUint8 type);
00058 igtlUint8 GetType() { return this->m_Type; };
00059
00060 void SetPosition(float p[3]);
00061 void GetPosition(float p[3]);
00062
00063 void SetPosition(float px, float py, float pz);
00064 void GetPosition(float* px, float* py, float* pz);
00065
00066 void SetQuaternion(float q[4]);
00067 void GetQuaternion(float q[4]);
00068
00069 void SetQuaternion(float qx, float qy, float qz, float w);
00070 void GetQuaternion(float* qx, float* qy, float* qz, float* w);
00071
00072 protected:
00073 QuaternionTrackingDataElement();
00074 ~QuaternionTrackingDataElement();
00075
00076 protected:
00077
00078 std::string m_Name;
00079 igtlUint8 m_Type;
00080 igtlFloat32 m_position[3];
00081 igtlFloat32 m_quaternion[4];
00082 };
00083
00084
00085 class IGTLCommon_EXPORT StartQuaternionTrackingDataMessage: public MessageBase
00086 {
00087
00088 public:
00089 typedef StartQuaternionTrackingDataMessage Self;
00090 typedef MessageBase Superclass;
00091 typedef SmartPointer<Self> Pointer;
00092 typedef SmartPointer<const Self> ConstPointer;
00093
00094 igtlTypeMacro(igtl::StartQuaternionTrackingDataMessage, igtl::MessageBase);
00095 igtlNewMacro(igtl::StartQuaternionTrackingDataMessage);
00096
00097 public:
00098 void SetResolution(igtlInt32 res) { this->m_Resolution = res; };
00099 igtlInt32 GetResolution() { return this->m_Resolution; };
00100
00101 int SetCoordinateName(const char* name);
00102 const char* GetCoordinateName() { return this->m_CoordinateName.c_str(); };
00103
00104 protected:
00105 StartQuaternionTrackingDataMessage();
00106 ~StartQuaternionTrackingDataMessage();
00107
00108 protected:
00109 virtual int GetBodyPackSize();
00110 virtual int PackBody();
00111 virtual int UnpackBody();
00112
00113 protected:
00114 igtlInt32 m_Resolution;
00115 std::string m_CoordinateName;
00116
00117 };
00118
00119
00120 class IGTLCommon_EXPORT StopQuaternionTrackingDataMessage: public MessageBase
00121 {
00122 public:
00123 typedef StopQuaternionTrackingDataMessage Self;
00124 typedef MessageBase Superclass;
00125 typedef SmartPointer<Self> Pointer;
00126 typedef SmartPointer<const Self> ConstPointer;
00127
00128 igtlTypeMacro(igtl::StopQuaternionTrackingDataMessage, igtl::MessageBase);
00129 igtlNewMacro(igtl::StopQuaternionTrackingDataMessage);
00130
00131 protected:
00132 StopQuaternionTrackingDataMessage() : MessageBase() { this->m_DefaultBodyType = "STP_QTDATA"; };
00133 ~StopQuaternionTrackingDataMessage() {};
00134
00135 protected:
00136 virtual int GetBodyPackSize() { return 0; };
00137 virtual int PackBody() { AllocatePack(); return 1; };
00138 virtual int UnpackBody() { return 1; };
00139
00140 };
00141
00142
00143 class IGTLCommon_EXPORT RTSQuaternionTrackingDataMessage: public MessageBase
00144 {
00145 public:
00146 typedef RTSQuaternionTrackingDataMessage Self;
00147 typedef MessageBase Superclass;
00148 typedef SmartPointer<Self> Pointer;
00149 typedef SmartPointer<const Self> ConstPointer;
00150
00151
00152 enum {
00153 STATUS_SUCCESS = 0,
00154 STATUS_ERROR = 1
00155 };
00156
00157
00158 igtlTypeMacro(igtl::RTSQuaternionTrackingDataMessage, igtl::MessageBase);
00159 igtlNewMacro(igtl::RTSQuaternionTrackingDataMessage);
00160
00161 void SetStatus(igtlUint8 status){ this->m_Status = status; }
00162 igtlUint8 GetStatus() { return this->m_Status; };
00163
00164 protected:
00165 RTSQuaternionTrackingDataMessage() : MessageBase(), m_Status(0) { this->m_DefaultBodyType = "RTS_QTDATA"; };
00166 ~RTSQuaternionTrackingDataMessage() {};
00167
00168 igtlUint8 m_Status;
00169
00170 protected:
00171 virtual int GetBodyPackSize();
00172 virtual int PackBody();
00173 virtual int UnpackBody();
00174
00175 };
00176
00177
00178 class IGTLCommon_EXPORT QuaternionTrackingDataMessage: public MessageBase
00179 {
00180 public:
00181 typedef QuaternionTrackingDataMessage Self;
00182 typedef MessageBase Superclass;
00183 typedef SmartPointer<Self> Pointer;
00184 typedef SmartPointer<const Self> ConstPointer;
00185
00186 igtlTypeMacro(igtl::QuaternionTrackingDataMessage, igtl::MessageBase);
00187 igtlNewMacro(igtl::QuaternionTrackingDataMessage);
00188
00189 public:
00190 int AddQuaternionTrackingDataElement(QuaternionTrackingDataElement::Pointer& elem);
00191 void ClearQuaternionTrackingDataElements();
00192
00193 int GetNumberOfQuaternionTrackingDataElements();
00194 void GetQuaternionTrackingDataElement(int index, QuaternionTrackingDataElement::Pointer& elem);
00195
00196
00197 protected:
00198 QuaternionTrackingDataMessage();
00199 ~QuaternionTrackingDataMessage();
00200
00201 protected:
00202
00203 virtual int GetBodyPackSize();
00204 virtual int PackBody();
00205 virtual int UnpackBody();
00206
00207 std::vector<QuaternionTrackingDataElement::Pointer> m_QuaternionTrackingDataList;
00208
00209 };
00210
00211
00212 }
00213
00214 #endif // _igtlQuaternionTrackingDataMessage_h
00215
00216
00217
00218