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();
107 double getsL()
const {
return sL; }
109 void initializeObject(
const std::shared_ptr<OpenMBV::Arrow> &
object);
114 enum SideOfInteraction {
122 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);
123 void initializeUsingXML(xercesc::DOMElement *element);
124 unsigned int getSideOfInteraction()
const {
return sI; }
126 void initializeObject(
const std::shared_ptr<OpenMBV::Arrow> &
object);
131 enum ColorRepresentation {
137 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);
144 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) :
146 void initializeUsingXML(xercesc::DOMElement *element);
148 void initializeObject(
const std::shared_ptr<OpenMBV::RigidBody> &
object);
155 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_) { }
156 void initializeUsingXML(xercesc::DOMElement *element);
157 std::shared_ptr<OpenMBV::Frame> createOpenMBV();
159 void initializeObject(
const std::shared_ptr<OpenMBV::Frame> &
object);
166 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_) { }
167 void initializeUsingXML(xercesc::DOMElement *element);
168 std::shared_ptr<OpenMBV::IndexedLineSet> createOpenMBV();
170 void initializeObject(
const std::shared_ptr<OpenMBV::IndexedLineSet> &
object);
177 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_) { }
178 void initializeUsingXML(xercesc::DOMElement *element);
179 std::shared_ptr<OpenMBV::Cuboid> createOpenMBV();
181 void initializeObject(
const std::shared_ptr<OpenMBV::Cuboid> &
object);
191 enum ColorRepresentation {
199 double r, cr, sf, n, l;
200 OpenMBVCoilSpring::Type type;
202 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);
203 void initializeUsingXML(xercesc::DOMElement *element);
204 std::shared_ptr<OpenMBV::CoilSpring> createOpenMBV();
206 void initializeObject(
const std::shared_ptr<OpenMBV::CoilSpring> &
object);
211 std::vector<double> nodes;
214 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_) { }
215 std::shared_ptr<OpenMBV::RigidBody> createOpenMBV();
216 void initializeUsingXML(xercesc::DOMElement *element);
217 const std::vector<double>& getNodes()
const {
return nodes; }
218 bool getFilled()
const {
return filled; }
223 std::vector<double> etaNodes, xiNodes;
225 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_) { }
226 std::shared_ptr<OpenMBV::RigidBody> createOpenMBV();
227 void initializeUsingXML(xercesc::DOMElement *element);
228 const std::vector<double>& getEtaNodes()
const {
return etaNodes; }
229 const std::vector<double>& getXiNodes()
const {
return xiNodes; }
Definition: openmbv_utils.h:79
Definition: openmbv_utils.h:39
Definition: openmbv_utils.h:184
Definition: openmbv_utils.h:49
Definition: openmbv_utils.h:66
Definition: openmbv_utils.h:151
Definition: openmbv_utils.h:129
Definition: openmbv_utils.h:112
Definition: openmbv_utils.h:162
Definition: openmbv_utils.h:209
Definition: openmbv_utils.h:173
Definition: openmbv_utils.h:140
Definition: openmbv_utils.h:221
namespace MBSim
Definition: bilateral_constraint.cc:30