20#ifndef _OPENMBV_RIGIDBODY_H_
21#define _OPENMBV_RIGIDBODY_H_
23#include <openmbvcppinterface/dynamiccoloredbody.h>
26#include <hdf5serie/vectorserie.h>
31 class CompoundRigidBody;
71 std::string localFrameStr, referenceFrameStr, pathStr, draggerStr;
72 std::vector<double> initialTranslation{3};
73 std::vector<double> initialRotation{3};
74 double scaleFactor{1};
75 void createHDF5File()
override;
76 void openHDF5File()
override;
78 std::weak_ptr<CompoundRigidBody> compound;
86 bool getLocalFrame() {
return localFrameStr==
"true"?
true:
false; }
91 bool getReferenceFrame() {
return referenceFrameStr==
"true"?
true:
false; }
94 void setPath(
bool p) { pathStr=(p)?
"true":
"false"; }
96 bool getPath() {
return pathStr==
"true"?
true:
false; }
99 void setDragger(
bool p) { draggerStr=(p)?
"true":
"false"; }
101 bool getDragger() {
return draggerStr==
"true"?
true:
false; }
105 if(initTrans.size()!=3) std::runtime_error(
"the dimension does not match");
106 initialTranslation=initTrans;
109 std::vector<double> getInitialTranslation() {
return initialTranslation; }
113 initialTranslation[0] = x;
114 initialTranslation[1] = y;
115 initialTranslation[2] = z;
122 if(initRot.size()!=3)
throw std::runtime_error(
"the dimension does not match");
123 initialRotation=initRot;
126 std::vector<double> getInitialRotation() {
return initialRotation; }
132 initialRotation[0] = a;
133 initialRotation[1] = b;
134 initialRotation[2] = g;
142 double getScaleFactor() {
return scaleFactor; }
147 if(data==
nullptr)
throw std::runtime_error(
"can not append data to an environment object");
148 if(row.size()!=8)
throw std::runtime_error(
"the dimension does not match");
149 if(!std::isnan(dynamicColor))
151 std::vector<double> tmprow(8);
152 std::copy(&row[0], &row[8], tmprow.begin());
153 tmprow[7]=dynamicColor;
161 std::vector<double>
getRow(
int i)
override {
return data?data->
getRow(i):std::vector<double>(8); }
166 xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent)
override;
170 std::shared_ptr<Group> getTopLevelGroup();
172 std::weak_ptr<CompoundRigidBody> getCompound() {
return compound; }
void getRow(int row, size_t size, T data[])
void append(const T data[], size_t size)
Definition: compoundrigidbody.h:33
Definition: dynamiccoloredbody.h:28
Abstract base class for all rigid bodies.
Definition: rigidbody.h:68
std::vector< double > getRow(int i) override
Definition: rigidbody.h:161
void setInitialRotation(const std::vector< double > &initRot)
Definition: rigidbody.h:121
void setReferenceFrame(bool f)
Definition: rigidbody.h:89
void initializeUsingXML(xercesc::DOMElement *element) override
Definition: rigidbody.cc:80
void setDragger(bool p)
Definition: rigidbody.h:99
void setInitialTranslation(double x, double y, double z)
Definition: rigidbody.h:112
void setInitialRotation(double a, double b, double g)
Definition: rigidbody.h:131
void setScaleFactor(double scale)
Definition: rigidbody.h:138
void setPath(bool p)
Definition: rigidbody.h:94
std::string getFullName() override
Definition: rigidbody.cc:108
void setLocalFrame(bool f)
Definition: rigidbody.h:84
void append(const T &row)
Definition: rigidbody.h:146
void setInitialTranslation(const std::vector< double > &initTrans)
Definition: rigidbody.h:104
int getRows() override
Definition: rigidbody.h:160