20 #ifndef POLYNOMIAL_FRUSTUM_H_
21 #define POLYNOMIAL_FRUSTUM_H_
23 #include <mbsim/contours/contour.h>
24 #include <mbsim/contours/plate.h>
25 #include <mbsim/utils/colors.h>
26 #include <fmatvec/fmatvec.h>
27 #include <mbsim/functions/function.h>
28 #include <mbsim/utils/boost_parameters.h>
53 std::string
getType()
const {
return "PolynomialFrustum"; }
63 virtual fmatvec::Vec2
evalZeta(
const fmatvec::Vec3 &WrPS);
88 BOOST_PARAMETER_MEMBER_FUNCTION( (
void), enableOpenMBV, tag, (optional (
polynomialPoints,(
int),0)(
circularPoints,(
int),25)(diffuseColor,(
const fmatvec::Vec3&),
"[-1;1;1]")(
transparency,(
double),0))) { enableOpenMBV_(diffuseColor,
transparency,
polynomialPoints,
circularPoints); }
108 double evalValue(
const double & x)
const;
154 fmatvec::Vec3
evalKrPS(
const fmatvec::Vec2 &zeta);
159 fmatvec::Vec3
evalKn(
const fmatvec::Vec2 &zeta);
164 fmatvec::Vec3
evalKu(
const fmatvec::Vec2 &zeta);
169 fmatvec::Vec3
evalKv(
const fmatvec::Vec2 &zeta);
180 fmatvec::Vec3
evalWn(
const fmatvec::Vec2 &zeta);
181 fmatvec::Vec3
evalWu(
const fmatvec::Vec2 &zeta);
182 fmatvec::Vec3
evalWv(
const fmatvec::Vec2 &zeta);
248 virtual double operator()(
const double &x);
249 void initializeUsingXML() {
fmatvec::Vec3 evalWu(const fmatvec::Vec2 &zeta)
Definition: polynomial_frustum.cc:237
fmatvec::Vec3 evalKu(const fmatvec::Vec2 &zeta)
returns the tangent in radial direction in local coordinates of the frustum at the position (x...
Definition: polynomial_frustum.cc:194
basic class for rigid contours
Definition: rigid_contour.h:37
MBSim::RGBColor color
color values for the iv-body
Definition: polynomial_frustum.h:209
double transparency
transparency value for the body
Definition: polynomial_frustum.h:214
fmatvec::Vec3 getEnclosingSphereCenter()
return the center of the enclosing sphere
Definition: polynomial_frustum.cc:163
PolynomialFrustum(const std::string &name, const fmatvec::Vec ¶m_)
Constructor.
Definition: polynomial_frustum.cc:33
void updateEnclosingSphere()
Definition: polynomial_frustum.cc:216
double evalValueD2(const double &x)
get value at position of second derivative
Definition: polynomial_frustum.cc:133
void setHeight(const double &height_)
set height of frustum
Definition: polynomial_frustum.h:70
double height
height of the frustum
Definition: polynomial_frustum.h:199
fmatvec::Vec3 evalWn(const fmatvec::Vec2 &zeta)
in 2D plane, given a point outside a polynomial curve, search for the closest point on the curve to t...
Definition: polynomial_frustum.cc:233
double sphereRadius
radius of the enclosing sphere
Definition: polynomial_frustum.h:204
double getEnclosingSphereRadius()
take the largest one among the distance from ((a+b)/2,0) to (a,f(a)),(b,f(b)) and (x...
Definition: polynomial_frustum.cc:159
double getXPolyMax()
get inner peak value of the polynomial
Definition: polynomial_frustum.cc:149
virtual void init(InitStage stage)
plots time series header
Definition: polynomial_frustum.cc:40
fmatvec::Vec3 evalWv(const fmatvec::Vec2 &zeta)
Definition: polynomial_frustum.cc:241
Frustum contour with a polynomial radius over height course.
Definition: polynomial_frustum.h:38
fmatvec::Vec3 evalKrPS(const fmatvec::Vec2 &zeta)
returns the point in local coordinates of the frustum at the position (x, phi)
Definition: polynomial_frustum.cc:173
virtual ~PolynomialFrustum()
Destructor.
Definition: polynomial_frustum.h:50
InitStage
The stages of the initialization.
Definition: element.h:97
const fmatvec::Vec & getPolynomialParameters()
get coefficient vector of the polynomial
Definition: polynomial_frustum.cc:169
Definition: planar_contour.h:31
std::string name
name of element
Definition: element.h:298
double evalValueD1(const double &x)
get value at position of first derivative
Definition: polynomial_frustum.cc:117
fmatvec::Vec parameters
vector holding our parameters of the polynom describing the frustum (radius over height) parameters=[...
Definition: polynomial_frustum.h:194
double getHeight() const
return height of frustum
Definition: polynomial_frustum.h:80
fmatvec::Vec3 evalKn(const fmatvec::Vec2 &zeta)
returns the normal in local coordinates of the frustum at the position (x, phi)
Definition: polynomial_frustum.cc:183
void createInventorFile()
create inventor file for visualisation
Definition: polynomial_frustum.cc:245
BOOST_PARAMETER_MEMBER_FUNCTION((void), enableOpenMBV, tag,(optional(polynomialPoints,(int), 0)(circularPoints,(int), 25)(diffuseColor,(const fmatvec::Vec3 &),"[-1;1;1]")(transparency,(double), 0)))
enable visualisation
Definition: polynomial_frustum.h:88
void setColor(const MBSim::RGBColor &color)
set color of body
Definition: polynomial_frustum.cc:93
virtual fmatvec::Vec2 evalZeta(const fmatvec::Vec3 &WrPS)
returns the two lagrange parameters index 0: x, height coordinate of frustum index 1: phi...
Definition: polynomial_frustum.cc:65
void setTransparency(const double &transparency)
set transparency of body
Definition: polynomial_frustum.cc:97
defines additive color using values for each color between [0,1]
Definition: colors.h:33
double evalValue(const double &x)
get value at position of 0 derivative
Definition: polynomial_frustum.cc:101
int polynomialPoints
grid points in polynomial direction
Definition: polynomial_frustum.h:219
int circularPoints
grid points in polynomial direction
Definition: polynomial_frustum.h:224
double getHeight()
return height of frustum
Definition: polynomial_frustum.h:75
std::string getType() const
Definition: polynomial_frustum.h:53
fmatvec::Vec3 evalKv(const fmatvec::Vec2 &zeta)
returns the tangent in azimuthal direction in local coordinates of the frustum at the point x...
Definition: polynomial_frustum.cc:205