20 #ifndef _OPENMBV_RIGIDBODY_H_
21 #define _OPENMBV_RIGIDBODY_H_
23 #include <openmbvcppinterface/dynamiccoloredbody.h>
26 #include <hdf5serie/vectorserie.h>
31 class CompoundRigidBody;
72 std::string localFrameStr, referenceFrameStr, pathStr, draggerStr;
73 std::vector<double> initialTranslation;
74 std::vector<double> initialRotation;
76 void createHDF5File();
79 std::weak_ptr<CompoundRigidBody> compound;
87 bool getLocalFrame() {
return localFrameStr==
"true"?
true:
false; }
92 bool getReferenceFrame() {
return referenceFrameStr==
"true"?
true:
false; }
95 void setPath(
bool p) { pathStr=(p==
true)?
"true":
"false"; }
97 bool getPath() {
return pathStr==
"true"?
true:
false; }
100 void setDragger(
bool p) { draggerStr=(p==
true)?
"true":
"false"; }
102 bool getDragger() {
return draggerStr==
"true"?
true:
false; }
106 if(initTrans.size()!=3) std::runtime_error(
"the dimension does not match");
107 initialTranslation=initTrans;
110 std::vector<double> getInitialTranslation() {
return initialTranslation; }
114 std::vector<double> initTrans;
115 initTrans.push_back(x);
116 initTrans.push_back(y);
117 initTrans.push_back(z);
118 initialTranslation=initTrans;
125 if(initRot.size()!=3)
throw std::runtime_error(
"the dimension does not match");
126 initialRotation=initRot;
129 std::vector<double> getInitialRotation() {
return initialRotation; }
135 std::vector<double> initRot;
136 initRot.push_back(a);
137 initRot.push_back(b);
138 initRot.push_back(g);
139 initialRotation=initRot;
147 double getScaleFactor() {
return scaleFactor; }
152 if(data==0)
throw std::runtime_error(
"can not append data to an environment object");
153 if(row.size()!=8)
throw std::runtime_error(
"the dimension does not match");
154 if(!std::isnan(dynamicColor))
156 std::vector<double> tmprow(8);
157 std::copy(&row[0], &row[8], tmprow.begin());
158 tmprow[7]=dynamicColor;
166 std::vector<double>
getRow(
int i) {
return data?data->
getRow(i):std::vector<double>(8); }
171 xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent);
173 virtual std::string
getFullName(
bool includingFileName=
false,
bool stopAtSeparateFile=
false);
175 std::shared_ptr<Group> getSeparateGroup();
176 std::shared_ptr<Group> getTopLevelGroup();
void setInitialTranslation(double x, double y, double z)
Definition: rigidbody.h:113
virtual void initializeUsingXML(xercesc::DOMElement *element)
Definition: rigidbody.cc:86
void append(const T &row)
Definition: rigidbody.h:151
void setInitialRotation(double a, double b, double g)
Definition: rigidbody.h:134
Abstract base class for all rigid bodies.
Definition: rigidbody.h:69
int getRows()
Definition: rigidbody.h:165
void setReferenceFrame(bool f)
Definition: rigidbody.h:90
void setScaleFactor(double scale)
Definition: rigidbody.h:143
void setInitialTranslation(const std::vector< double > &initTrans)
Definition: rigidbody.h:105
Definition: dynamiccoloredbody.h:28
std::vector< double > getRow(int i)
Definition: rigidbody.h:166
void setLocalFrame(bool f)
Definition: rigidbody.h:85
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:100
void setInitialRotation(const std::vector< double > &initRot)
Definition: rigidbody.h:124
void setPath(bool p)
Definition: rigidbody.h:95
Definition: compoundrigidbody.h:29