Go to the documentation of this file.00001
00019 #ifndef __INC_VALUE_SETTER
00020 #define __INC_VALUE_SETTER
00021
00022 #include <vector>
00023 #include <frame.h>
00024 #include <vecmath.h>
00025 #include <utils.h>
00026
00027 namespace robotLibPbD
00028 {
00029
00030 class ValueSetter
00031 {
00032 public:
00033 CFrame *frame;
00034 int x,y,z;
00035 int a, b, g;
00036 int qx,qy,qz,qw;
00037
00038 ValueSetter()
00039 {
00040 a = b = g = x = y = z = qx = qw = qy = qz = -1;
00041 }
00042
00043 bool set(std::vector<double> &values)
00044 {
00045 if (frame == NULL)
00046 return false;
00047
00048 CMatrix pose;
00049 if (a != -1 || b != -1 || g != -1)
00050 {
00051
00052
00053
00054
00055
00056
00057
00058 }
00059 else
00060 {
00061 CVec quater;
00062
00063 if (qw >= 0)
00064 quater.w = values[qw];
00065 if (qx >= 0)
00066 quater.x = values[qx];
00067 if (qy >= 0)
00068 quater.y = values[qy];
00069 if (qz >= 0)
00070 quater.z = values[qz];
00071
00072 CMathLib::matrixFromQuaternion(quater, pose);
00073 }
00074
00075 if (x >= 0)
00076 pose.a[12] = values[x];
00077 if (y >= 0)
00078 pose.a[13] = values[y];
00079 if (z >= 0)
00080 pose.a[14] = values[z];
00081
00082 frame->setPose(pose);
00083 return true;
00084 }
00085 };
00086 }
00087
00088 #endif