20#ifndef _OPENMBV_ARROW_H_
21#define _OPENMBV_ARROW_H_
23#include <openmbvcppinterface/dynamiccoloredbody.h>
24#include <hdf5serie/vectorserie.h>
73 void createHDF5File()
override;
74 void openHDF5File()
override;
76 double headDiameter{0.5};
77 double headLength{0.75};
78 double diameter{0.25};
79 double scaleLength{1};
80 bool createLocalFrame {
false};
82 Components components{vectorForm};
84 ReferencePoint referencePoint{toPoint};
90 void setPath(
bool p) { pathStr=(p)?
"true":
"false"; }
92 bool getPath() {
return pathStr==
"true"?
true:
false; }
97 if(data==
nullptr)
throw std::runtime_error(
"can not append data to an environment object");
100 if( createLocalFrame && row.size()!=11)
101 throw std::runtime_error(
"Need the columns t,x,y,z,dx,dy,dz,c,alpha,beta,gamma, but got "+std::to_string(row.size())+
" columns");
102 if(!createLocalFrame && row.size()!= 8)
103 throw std::runtime_error(
"Need the columns t,x,y,z,dx,dy,dz,c, but got "+std::to_string(row.size())+
" columns");
104 hdf5Size = row.size();
106 else if(
static_cast<int>(row.size())!=hdf5Size)
107 throw std::runtime_error(
"The dimension does not match: need "+std::to_string(hdf5Size)+
" but got "+std::to_string(row.size()));
109 if(!std::isnan(dynamicColor))
111 std::vector<Float> tmprow(hdf5Size);
112 std::copy(&row[0], &row[hdf5Size], tmprow.begin());
113 tmprow[7]=dynamicColor;
121 std::vector<Float>
getRow(
int i)
override {
return data?data->
getRow(i):std::vector<Float>(11); }
125 headDiameter=diameter;
131 headDiameter=diameter;
134 double getHeadDiameter() {
return headDiameter; }
141 double getHeadLength() {
return headLength; }
148 double getDiameter() {
return diameter; }
163 Type getType() {
return type; }
175 components=components_;
178 Components getComponents() {
return components; }
187 referencePoint=referencePoint_;
190 ReferencePoint getReferencePoint() {
return referencePoint; }
197 double getScaleLength() {
return scaleLength; }
204 double getCreateLocalFrame() {
return createLocalFrame; }
209 xercesc::DOMElement *writeXMLFile(xercesc::DOMNode *parent)
override;
void getRow(int row, size_t size, T data[])
void append(const T data[], size_t size)
void setType(Type type_)
Definition: arrow.h:159
void setHeadDiameter(double diameter)
Definition: arrow.h:130
void setHeadLength(double length)
Definition: arrow.h:137
void setComponents(Components components_)
Definition: arrow.h:174
std::vector< Float > getRow(int i) override
Definition: arrow.h:121
void setDiameter(double diameter_)
Definition: arrow.h:144
int getRows() override
Definition: arrow.h:120
void setPath(bool p)
Definition: arrow.h:90
void append(const T &row)
Definition: arrow.h:96
void setCreateLocalFrame(bool l)
Definition: arrow.h:200
void setArrowHead(double diameter, double length)
Definition: arrow.h:124
void setScaleLength(double scale)
Definition: arrow.h:193
void setReferencePoint(ReferencePoint referencePoint_)
Definition: arrow.h:186
void initializeUsingXML(xercesc::DOMElement *element) override
Definition: arrow.cc:106
Definition: dynamiccoloredbody.h:28
Definition: objectfactory.h:38