20#ifndef _OPENMBV_UTILS_H_
21#define _OPENMBV_UTILS_H_
23#include <fmatvec/fmatvec.h>
24#include <openmbvcppinterface/objectfactory.h>
28 class DynamicColoredBody;
44 void initializeUsingXML(xercesc::DOMElement *element);
46 void initializeObject(
const std::shared_ptr<OpenMBV::Body> &
object);
54 OpenMBVColoredBody(
const fmatvec::Vec3 &dc_=fmatvec::Vec3(std::vector<double>{-1,1,1}),
double tp_=0,
double ps_=0,
double lw_=0) : dc(dc_), tp(tp_), ps(ps_), lw(lw_) { }
55 void initializeUsingXML(xercesc::DOMElement *element);
57 std::shared_ptr<T> createOpenMBV() {
58 std::shared_ptr<T>
object = OpenMBV::ObjectFactory::create<T>();
59 initializeObject(
object);
63 void initializeObject(
const std::shared_ptr<OpenMBV::DynamicColoredBody> &
object);
69 double minCol, maxCol;
70 std::vector<std::string> cRL;
72 OpenMBVDynamicColoredBody(
unsigned cR_=0,
double minCol_=0,
double maxCol_=1,
const fmatvec::Vec3 &dc=fmatvec::Vec3(std::vector<double>{-1,1,1}),
double tp=0,
double ps=0,
double lw=0) :
OpenMBVColoredBody(dc,tp,ps,lw), cR(cR_), minCol(minCol_), maxCol(maxCol_), cRL(1,
"none") { }
73 void initializeUsingXML(xercesc::DOMElement *element);
74 unsigned int getColorRepresentation()
const {
return cR; }
76 void initializeObject(
const std::shared_ptr<OpenMBV::DynamicColoredBody> &
object);
95 enum ColorRepresentation {
101 OpenMBVArrow::Type type;
102 OpenMBVArrow::ReferencePoint refPoint;
104 OpenMBVArrow(
double sL_=1,
double sS_=1,
const OpenMBVArrow::Type &type_=OpenMBVArrow::toHead,
const OpenMBVArrow::ReferencePoint &refPoint_=OpenMBVArrow::fromPoint,
unsigned int cR=0,
double minCol=0,
double maxCol=1,
const fmatvec::Vec3 &dc=fmatvec::Vec3(std::vector<double>{-1,1,1}),
double tp=0,
double ps=0,
double lw=0);
105 void initializeUsingXML(xercesc::DOMElement *element);
106 std::shared_ptr<OpenMBV::Arrow> createOpenMBV();
108 void initializeObject(
const std::shared_ptr<OpenMBV::Arrow> &
object);
113 enum SideOfInteraction {
121 OpenMBVInteractionArrow(
unsigned int sI_=0,
double sL=1,
double sS=1,
const OpenMBVArrow::Type &type=OpenMBVArrow::toHead,
const OpenMBVArrow::ReferencePoint &refPoint=OpenMBVArrow::fromPoint,
unsigned int cR=0,
double minCol=0,
double maxCol=1,
const fmatvec::Vec3 &dc=fmatvec::Vec3(std::vector<double>{-1,1,1}),
double tp=0,
double ps=0,
double lw=0);
122 void initializeUsingXML(xercesc::DOMElement *element);
123 unsigned int getSideOfInteraction()
const {
return sI; }
125 void initializeObject(
const std::shared_ptr<OpenMBV::Arrow> &
object);
130 enum ColorRepresentation {
136 OpenMBVFrictionArrow(
unsigned int sI=0,
double sL=1,
double sS=1,
const OpenMBVArrow::Type &type=OpenMBVArrow::toHead,
const OpenMBVArrow::ReferencePoint &refPoint=OpenMBVArrow::fromPoint,
unsigned int cR=0,
double minCol=0,
double maxCol=1,
const fmatvec::Vec3 &dc=fmatvec::Vec3(std::vector<double>{-1,1,1}),
double tp=0,
double ps=0,
double lw=0);
143 OpenMBVRigidBody(
bool path_=
false,
const fmatvec::Vec3 &dc_=fmatvec::Vec3(std::vector<double>{-1,1,1}),
double tp_=0,
double ps_=0,
double lw_=0) :
145 void initializeUsingXML(xercesc::DOMElement *element);
147 void initializeObject(
const std::shared_ptr<OpenMBV::RigidBody> &
object);
154 OpenMBVFrame(
double size_=1,
double offset_=1,
bool path=
false,
const fmatvec::Vec3 &dc=fmatvec::Vec3(std::vector<double>{-1,1,1}),
double tp=0,
double ps=0,
double lw=0) :
OpenMBVRigidBody(path, dc,tp,ps,lw), size(size_), offset(offset_) { }
155 void initializeUsingXML(xercesc::DOMElement *element);
156 std::shared_ptr<OpenMBV::Frame> createOpenMBV();
158 void initializeObject(
const std::shared_ptr<OpenMBV::Frame> &
object);
165 OpenMBVLine(
double l_=1,
const fmatvec::Vec3 &dc=fmatvec::Vec3(std::vector<double>{-1,1,1}),
double tp=0,
double ps=0,
double lw=0) :
OpenMBVColoredBody(dc,tp,ps,lw), l(l_) { }
166 void initializeUsingXML(xercesc::DOMElement *element);
167 std::shared_ptr<OpenMBV::IndexedLineSet> createOpenMBV();
169 void initializeObject(
const std::shared_ptr<OpenMBV::IndexedLineSet> &
object);
176 OpenMBVPlane(
const fmatvec::Vec2 &l_=fmatvec::Vec2(fmatvec::INIT,1.),
const fmatvec::Vec3 &dc=fmatvec::Vec3(std::vector<double>{-1,1,1}),
double tp=0,
double ps=0,
double lw=0) :
OpenMBVColoredBody(dc,tp,ps,lw), l(l_) { }
177 void initializeUsingXML(xercesc::DOMElement *element);
178 std::shared_ptr<OpenMBV::Cuboid> createOpenMBV();
180 void initializeObject(
const std::shared_ptr<OpenMBV::Cuboid> &
object);
190 enum ColorRepresentation {
198 double r, cr, sf, n, l;
199 OpenMBVCoilSpring::Type type;
201 OpenMBVCoilSpring(
double r_=1,
double cr_=-1,
double sf_=1,
double n_=3,
double l_=-1, OpenMBVCoilSpring::Type type_=OpenMBVCoilSpring::tube,
unsigned int cR=0,
double minCol=0,
double maxCol=1,
const fmatvec::Vec3 &dc=fmatvec::Vec3(std::vector<double>{-1,1,1}),
double tp=0,
double ps=0,
double lw=0);
202 void initializeUsingXML(xercesc::DOMElement *element);
203 std::shared_ptr<OpenMBV::CoilSpring> createOpenMBV();
205 void initializeObject(
const std::shared_ptr<OpenMBV::CoilSpring> &
object);
210 std::vector<double> nodes;
213 OpenMBVPlanarContour(
const std::vector<double> &nodes_=std::vector<double>(),
bool filled_=
false,
const fmatvec::Vec3 &dc=fmatvec::Vec3(std::vector<double>{-1,1,1}),
double tp=0,
double ps=0,
double lw=0) :
OpenMBVColoredBody(dc,tp,ps,lw), nodes(nodes_), filled(filled_) { }
214 std::shared_ptr<OpenMBV::RigidBody> createOpenMBV();
215 void initializeUsingXML(xercesc::DOMElement *element);
216 const std::vector<double>& getNodes()
const {
return nodes; }
217 bool getFilled()
const {
return filled; }
222 std::vector<double> etaNodes, xiNodes;
224 OpenMBVSpatialContour(
const std::vector<double> &etaNodes_=std::vector<double>(),
const std::vector<double> &xiNodes_=std::vector<double>(),
const fmatvec::Vec3 &dc=fmatvec::Vec3(std::vector<double>{-1,1,1}),
double tp=0,
double ps=0,
double lw=0) :
OpenMBVColoredBody(dc,tp,ps,lw), etaNodes(etaNodes_), xiNodes(xiNodes_) { }
225 std::shared_ptr<OpenMBV::RigidBody> createOpenMBV();
226 void initializeUsingXML(xercesc::DOMElement *element);
227 const std::vector<double>& getEtaNodes()
const {
return etaNodes; }
228 const std::vector<double>& getXiNodes()
const {
return xiNodes; }
Definition: openmbv_utils.h:79
Definition: openmbv_utils.h:39
Definition: openmbv_utils.h:183
Definition: openmbv_utils.h:49
Definition: openmbv_utils.h:66
Definition: openmbv_utils.h:150
Definition: openmbv_utils.h:128
Definition: openmbv_utils.h:111
Definition: openmbv_utils.h:161
Definition: openmbv_utils.h:208
Definition: openmbv_utils.h:172
Definition: openmbv_utils.h:139
Definition: openmbv_utils.h:220
namespace MBSim
Definition: bilateral_constraint.cc:30