Go to the documentation of this file.00001
00059
00060
00061
00062
00063
00064
00065
00066 #ifndef OBJCTXT_H_
00067 #define OBJCTXT_H_
00068
00069 #include "object.h"
00070 #include "../../curved_polygons/bb.h"
00071
00072 namespace Dummy
00073 {
00074 template<typename _DOF6>
00075 class OBJCTXT
00076 {
00077 public:
00078 typedef Dummy::Object OBJECT;
00079 typedef _DOF6 DOF6;
00080 typedef boost::shared_ptr<OBJCTXT> Ptr;
00081 typedef BoundingBox::FoVBB<float> BB;
00082
00083 BB bb_;
00084 int ctr_;
00085
00086 OBJCTXT(): ctr_(1) {}
00087
00088 void clear() {}
00089 void update() {}
00090 bool empty() const {return false;}
00091 void operator+=(OBJECT::Ptr obj) {}
00092 void operator+=(const OBJCTXT &obj) {}
00093
00094 bool registration(const OBJCTXT &ctxt, DOF6 &tf, typename DOF6::TYPE &probability_success_rate, typename DOF6::TYPE &probability_error_rate){
00095 typename DOF6::SOURCE1 &magic_box(*tf.getSource1());
00096 magic_box.reset();
00097
00098 Eigen::Vector3f t=Eigen::Vector3f::Zero(),dt=Eigen::Vector3f::Zero(),v;
00099 Eigen::Matrix3f R=Eigen::Matrix3f::Identity();
00100
00101 Eigen::AngleAxisf aa(0.1f,Eigen::Vector3f::Identity());
00102 dt(0) = 0.2f;
00103
00104 for(int i=0; i<ctr_; i++) {
00105 t += dt;
00106 R = aa*R;
00107 }
00108 ++ctr_;
00109
00110 v(0)=1;v(1)=v(2)=0;
00111 magic_box(
00112 typename DOF6::SOURCE1::TFLinkObj(v, false,false, 1, 1),
00113 typename DOF6::SOURCE1::TFLinkObj(R*v+t,false,false, 1, 1)
00114 );
00115
00116 v(1)=1;v(0)=v(2)=0;
00117 magic_box(
00118 typename DOF6::SOURCE1::TFLinkObj(v, false,false, 1, 1),
00119 typename DOF6::SOURCE1::TFLinkObj(R*v+t,false,false, 1, 1)
00120 );
00121
00122 v(2)=1;v(1)=v(0)=0;
00123 magic_box(
00124 typename DOF6::SOURCE1::TFLinkObj(v, false,false, 1, 1),
00125 typename DOF6::SOURCE1::TFLinkObj(R*v+t,false,false, 1, 1)
00126 );
00127
00128 magic_box.finish();
00129
00130 return true;
00131 }
00132
00133 bool merge(const OBJCTXT &ctxt, const DOF6 &tf, std::map<typename OBJECT::Ptr,bool> &used, const BoundingBox::TransformedFoVBB &fov, const bool only_merge) {
00134 return false;
00135 }
00136
00137 size_t getNumObjs() const {return 10;}
00138
00139 const BB getBoundingBox() const {return bb_;}
00140
00141 OBJCTXT &transform(const DOF6 &tf) {}
00142 typename OBJCTXT::Ptr clone() const {return typename OBJCTXT::Ptr(new OBJCTXT(*this));}
00143
00144 };
00145 }
00146
00147
00148
00149 #endif