20 #ifndef _OPENMBV_RIGIDBODY_H_
21 #define _OPENMBV_RIGIDBODY_H_
23 #include <openmbvcppinterface/dynamiccoloredbody.h>
26 #include <hdf5serie/vectorserie.h>
32 class CompoundRigidBody;
73 std::string localFrameStr, referenceFrameStr, pathStr, draggerStr;
74 std::vector<double> initialTranslation;
75 std::vector<double> initialRotation;
77 void createHDF5File();
80 boost::weak_ptr<CompoundRigidBody> compound;
88 bool getLocalFrame() {
return localFrameStr==
"true"?
true:
false; }
93 bool getReferenceFrame() {
return referenceFrameStr==
"true"?
true:
false; }
96 void setPath(
bool p) { pathStr=(p==
true)?
"true":
"false"; }
98 bool getPath() {
return pathStr==
"true"?
true:
false; }
101 void setDragger(
bool p) { draggerStr=(p==
true)?
"true":
"false"; }
103 bool getDragger() {
return draggerStr==
"true"?
true:
false; }
107 if(initTrans.size()!=3) std::runtime_error(
"the dimension does not match");
108 initialTranslation=initTrans;
111 std::vector<double> getInitialTranslation() {
return initialTranslation; }
115 std::vector<double> initTrans;
116 initTrans.push_back(x);
117 initTrans.push_back(y);
118 initTrans.push_back(z);
119 initialTranslation=initTrans;
126 if(initRot.size()!=3)
throw std::runtime_error(
"the dimension does not match");
127 initialRotation=initRot;
130 std::vector<double> getInitialRotation() {
return initialRotation; }
136 std::vector<double> initRot;
137 initRot.push_back(a);
138 initRot.push_back(b);
139 initRot.push_back(g);
140 initialRotation=initRot;
148 double getScaleFactor() {
return scaleFactor; }
153 if(data==0)
throw std::runtime_error(
"can not append data to an environment object");
154 if(row.size()!=8)
throw std::runtime_error(
"the dimension does not match");
155 if(!std::isnan(dynamicColor))
157 std::vector<double> tmprow(8);
158 std::copy(&row[0], &row[8], tmprow.begin());
159 tmprow[7]=dynamicColor;
167 std::vector<double>
getRow(
int i) {
return data?data->
getRow(i):std::vector<double>(8); }
172 xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent);
174 virtual std::string
getFullName(
bool includingFileName=
false,
bool stopAtSeparateFile=
false);
176 boost::shared_ptr<Group> getSeparateGroup();
177 boost::shared_ptr<Group> getTopLevelGroup();
void setInitialTranslation(double x, double y, double z)
Definition: rigidbody.h:114
virtual void initializeUsingXML(xercesc::DOMElement *element)
Definition: rigidbody.cc:86
void append(const T &row)
Definition: rigidbody.h:152
void setInitialRotation(double a, double b, double g)
Definition: rigidbody.h:135
Abstract base class for all rigid bodies.
Definition: rigidbody.h:70
int getRows()
Definition: rigidbody.h:166
void setReferenceFrame(bool f)
Definition: rigidbody.h:91
void setScaleFactor(double scale)
Definition: rigidbody.h:144
void setInitialTranslation(const std::vector< double > &initTrans)
Definition: rigidbody.h:106
Definition: dynamiccoloredbody.h:28
std::vector< double > getRow(int i)
Definition: rigidbody.h:167
void setLocalFrame(bool f)
Definition: rigidbody.h:86
void getRow(const int row, size_t size, T data[])
void append(const T data[], size_t size)
virtual std::string getFullName(bool includingFileName=false, bool stopAtSeparateFile=false)
Definition: rigidbody.cc:119
void setDragger(bool p)
Definition: rigidbody.h:101
void setInitialRotation(const std::vector< double > &initRot)
Definition: rigidbody.h:125
void setPath(bool p)
Definition: rigidbody.h:96
Definition: compoundrigidbody.h:30