Go to the documentation of this file.00001 #ifndef __GLBODY_H__
00002 #define __GLBODY_H__
00003
00004 #include <vector>
00005 #include <boost/function.hpp>
00006 #include <hrpModel/Body.h>
00007 #include "GLlink.h"
00008
00009 class GLcamera;
00010
00011 class GLbody : virtual public hrp::Body
00012 {
00013 public:
00014 GLbody();
00015 ~GLbody();
00016 void setPosture(const double *i_angles);
00017 void setPosition(double x, double y, double z);
00018 template<class T>
00019 void setPosition(const T &p){
00020 ((GLlink *)rootLink())->setPosition(p);
00021 }
00022 void setRotation(const double *R);
00023 void setRotation(double r, double p, double y);
00024 void setPosture(const double *i_angles, double *i_pos, double *i_rpy);
00025 void setPosture(const hrp::dvector& i_q, const hrp::Vector3& i_p,
00026 const hrp::Matrix33& i_R);
00027 size_t draw();
00028 void drawSensor(hrp::Sensor *i_sensor);
00029 GLcamera *findCamera(const char *i_name);
00030 void setSensorDrawCallback(boost::function2<void, hrp::Body *, hrp::Sensor *> f);
00031 boost::function2<void, hrp::Body *, hrp::Sensor *> getSensorDrawCallback();
00032 void divideLargeTriangles(double maxEdgeLen);
00033 void computeAABB(hrp::Vector3& o_min, hrp::Vector3& o_max);
00034 static void useAbsTransformToDraw();
00035
00036 private:
00037 static bool m_useAbsTransformToDraw;
00038 boost::function2<void, hrp::Body *, hrp::Sensor *> m_sensorDrawCallback;
00039 };
00040
00041 #endif