mbsim  4.0.0
MBSim Kernel
frustum.h
1/* Copyright (C) 2004-2009 MBSim Development Team
2 *
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Lesser General Public
5 * License as published by the Free Software Foundation; either
6 * version 2.1 of the License, or (at your option) any later version.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the Free Software
15 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 *
17 * Contact: martin.o.foerg@googlemail.com
18 */
19
20#ifndef _FRUSTUM_H_
21#define _FRUSTUM_H_
22
23#include "mbsim/contours/rigid_contour.h"
24#include "mbsim/utils/boost_parameters.h"
25#include "mbsim/utils/openmbv_utils.h"
26#include <openmbvcppinterface/frustum.h>
27
28namespace MBSim {
29
36 class Frustum : public RigidContour {
37 public:
42 Frustum(const std::string &name="", Frame *R=nullptr) : RigidContour(name,R) { }
43
44 Frustum(const std::string &name, const fmatvec::Vec2 &r_, double h_, Frame *R=nullptr) : RigidContour(name,R), r(r_), h(h_) { }
45
46 Frustum(const std::string &name, const fmatvec::Vec2 &r_, double h_, bool outCont_, Frame *R=nullptr) : RigidContour(name,R), r(r_), h(h_), outCont(outCont_) { }
47
48 /* INHERITED INTERFACE OF ELEMENT */
49 void init(InitStage stage, const InitConfigSet &config) override;
50 /***************************************************/
51
52 /* INHERITED INTERFACE OF CONTOUR */
53 fmatvec::Vec2 evalZeta(const fmatvec::Vec3 &WrPoint) override;
54 /***************************************************/
55
61 Frustum(const std::string &name, bool outCont_) : RigidContour(name), outCont(outCont_) { }
62
63 /* GETTER / SETTER */
64 void setRadii(const fmatvec::Vec2 &r_);
65 const fmatvec::Vec2& getRadii() const;
66 void setHeight(double h_);
67 double getHeight() const;
68 void setOutCont(bool outCont_);
69 bool getOutCont() const;
70 /***************************************************/
71
72 BOOST_PARAMETER_MEMBER_FUNCTION( (void), enableOpenMBV, tag, (optional (diffuseColor,(const fmatvec::Vec3&),fmatvec::Vec3(std::vector<double>{-1,1,1}))(transparency,(double),0)(pointSize,(double),0)(lineWidth,(double),0))) {
73 OpenMBVColoredBody ombv(diffuseColor,transparency,pointSize,lineWidth);
74 openMBVRigidBody=ombv.createOpenMBV<OpenMBV::Frustum>();
75 }
76
77 void initializeUsingXML(xercesc::DOMElement *element) override;
78
79 private:
83 fmatvec::Vec2 r;
84
88 double h{0.};
89
93 bool outCont{false};
94 };
95
96 inline void Frustum::setRadii(const fmatvec::Vec2 &r_) { r = r_; }
97 inline const fmatvec::Vec2& Frustum::getRadii() const { return r; }
98 inline void Frustum::setHeight(double h_) { h = h_; }
99 inline double Frustum::getHeight() const { return h; }
100 inline void Frustum::setOutCont(bool outCont_) { outCont = outCont_; }
101 inline bool Frustum::getOutCont() const { return outCont; }
102}
103
104#endif /* _FRUSTUM_H_ */
InitStage
The stages of the initialization.
Definition: element.h:62
std::string name
name of element
Definition: element.h:260
cartesian frame on bodies used for application of e.g. links and loads
Definition: frame.h:39
frustum with axis in direction of second column of contour reference frame
Definition: frustum.h:36
bool outCont
contact on outer or inner surface?
Definition: frustum.h:93
void init(InitStage stage, const InitConfigSet &config) override
plots time series header
Definition: frustum.cc:37
fmatvec::Vec2 r
upper r(1) and lower radius r(0) in direction of the axis
Definition: frustum.h:83
double h
height
Definition: frustum.h:88
Frustum(const std::string &name, bool outCont_)
constructor
Definition: frustum.h:61
Frustum(const std::string &name="", Frame *R=nullptr)
constructor with contact from inside
Definition: frustum.h:42
basic class for rigid contours
Definition: rigid_contour.h:37
Frame * R
coordinate system of contour
Definition: rigid_contour.h:135
RigidContour(const std::string &name, Frame *R_=nullptr)
constructor
Definition: rigid_contour.h:43
namespace MBSim
Definition: bilateral_constraint.cc:30