chrono::geometry::ChLineCam Class Reference

Description

Geometric object describing the profile of a cam.

The shape of a cam is specified through a ChFunction which defines the motion law of the follower.

#include <ChLineCam.h>

Inheritance diagram for chrono::geometry::ChLineCam:
Collaboration diagram for chrono::geometry::ChLineCam:

Public Member Functions

 ChLineCam (const ChLineCam &source)
 
virtual ChLineCamClone () const override
 "Virtual" copy constructor (covariant return type).
 
virtual GeometryType GetClassType () const override
 Get the class type as unique numerical ID. More...
 
virtual bool Get_closed () const override
 Tell if the curve is closed.
 
virtual void Set_closed (bool mc) override
 
void Set_Phase (double mf)
 
double Get_Phase () const
 
void Set_Rb (double mrb)
 Base radius of cam.
 
double Get_Rb () const
 
void Set_Rr (double mrr)
 Radius of contact wheel.
 
double Get_Rr () const
 
void Set_motion_law (std::shared_ptr< ChFunction > mlaw)
 The motion law, as a ChFunction.
 
std::shared_ptr< ChFunctionGet_motion_law () const
 
void Set_type (eChCamType mt)
 Type of cam (see the eChCamType enum values below).
 
eChCamType Get_type () const
 
void Set_center (ChVector<> mc)
 position of center of cam in 3d space.
 
ChVector Get_center () const
 
void Set_Negative (bool val)
 If true, creates a negative cam.
 
bool Get_Negative () const
 
void Set_Internal (bool val)
 If true, creates an internal cam.
 
bool Get_Internal () const
 
void Set_rotating_follower (double mp, double md, double mb0)
 Sets the data for the rotating follower (length, distance from cam center, initial phase mb0)
 
double Get_p () const
 
double Get_d () const
 
double Get_b0 () const
 
void Set_sliding_eccentrical (double me)
 Sets the data for the sliding follower (if eccentrical, with me eccentricity)
 
double Get_e () const
 
double Get_s () const
 
void Set_flat_oscillate (double me, double md, double mb0)
 Sets the data for the flat rotating follower (length, distance from cam center, initial phase mb0)
 
void EvaluateCamPoint (double par, ChVector<> &res, double &g, double &q) const
 Evaluate at once all important properties of cam, function of rotation 'par' (par in range 0..1, since 1 means 360!): Gets point res, pressure angle g, curvature radius q. More...
 
virtual void Evaluate (ChVector<> &pos, const double parU, const double parV=0., const double parW=0.) const override
 Curve evaluation. More...
 
double Get_weight (double par) const
 Weight evaluation. More...
 
virtual void ArchiveOUT (ChArchiveOut &marchive) override
 
virtual void ArchiveIN (ChArchiveIn &marchive) override
 Method to allow de serialization of transient data from archives.
 
- Public Member Functions inherited from chrono::geometry::ChLine
 ChLine (const ChLine &source)
 
virtual int Get_complexity () const
 Tell the complexity.
 
virtual void Set_complexity (int mc)
 
virtual int GetManifoldDimension () const override
 This is a line.
 
bool FindNearestLinePoint (ChVector<> &point, double &resU, double approxU, double tol) const
 Find the parameter resU for the nearest point on curve to "point".
 
virtual double Length (int sampling) const
 Returns curve length. Typical sampling 1..5 (1 already gives correct result with degree1 curves)
 
virtual ChVector GetEndA () const
 Return the start point of the line. More...
 
virtual ChVector GetEndB () const
 Return the end point of the line. More...
 
double CurveCurveDist (ChLine *compline, int samples) const
 Returns adimensional information on "how much" this curve is similar to another in its overall shape (doesnot matter parametrization or start point). More...
 
double CurveSegmentDist (ChLine *complinesegm, int samples) const
 Same as before, but returns "how near" is complinesegm to whatever segment of this line (does not matter the percentual of line). More...
 
double CurveCurveDistMax (ChLine *compline, int samples) const
 Same as above, but instead of making average of the distances, these functions return the maximum of the distances... More...
 
double CurveSegmentDistMax (ChLine *complinesegm, int samples) const
 
virtual bool DrawPostscript (ChFile_ps *mfle, int markpoints, int bezier_interpolate)
 Draw into the current graph viewport of a ChFile_ps file.
 
- Public Member Functions inherited from chrono::geometry::ChGeometry
 ChGeometry (const ChGeometry &source)
 
virtual void GetBoundingBox (double &xmin, double &xmax, double &ymin, double &ymax, double &zmin, double &zmax, ChMatrix33<> *Rot=NULL) const
 Compute bounding box. More...
 
virtual void InflateBoundingBox (double &xmin, double &xmax, double &ymin, double &ymax, double &zmin, double &zmax, ChMatrix33<> *Rot=NULL) const
 Enlarge a previous existing bounding box. More...
 
virtual double Size () const
 Returns the radius of the sphere which can enclose the geometry.
 
virtual void Derive (ChVector<> &dir, const double parU, const double parV=0., const double parW=0.) const
 Evaluates a tangent versor on a geometry, given parametric coordinates, if possible. More...
 
virtual ChVector Baricenter () const
 Compute center of mass It should be overriden by inherited classes.
 
virtual void CovarianceMatrix (ChMatrix33<> &C) const
 Compute the 3x3 covariance matrix (only the diagonal and upper part) It should be overriden by inherited classes.
 
virtual void Update ()
 Generic update of internal data. More...
 

Additional Inherited Members

- Public Types inherited from chrono::geometry::ChGeometry
enum  GeometryType {
  NONE, SPHERE, BOX, CYLINDER,
  TRIANGLE, CAPSULE, CONE, LINE,
  LINE_ARC, LINE_BEZIER, LINE_CAM, LINE_PATH,
  LINE_POLY, LINE_SEGMENT, ROUNDED_BOX, ROUNDED_CYLINDER,
  ROUNDED_CONE, TRIANGLEMESH, TRIANGLEMESH_CONNECTED, TRIANGLEMESH_SOUP
}
 Enumeration of geometric objects.
 
- Protected Attributes inherited from chrono::geometry::ChLine
bool closed
 
int complexityU
 

Member Function Documentation

void chrono::geometry::ChLineCam::Evaluate ( ChVector<> &  pos,
const double  parU,
const double  parV = 0.,
const double  parW = 0. 
) const
overridevirtual

Curve evaluation.

Given a parameter "u", finds position on line of the kind p=p(u); note that u is in the range 0...1, to make a complete cycle along the cam

Reimplemented from chrono::geometry::ChGeometry.

void chrono::geometry::ChLineCam::EvaluateCamPoint ( double  par,
ChVector<> &  res,
double &  g,
double &  q 
) const

Evaluate at once all important properties of cam, function of rotation 'par' (par in range 0..1, since 1 means 360!): Gets point res, pressure angle g, curvature radius q.

double chrono::geometry::ChLineCam::Get_weight ( double  par) const

Weight evaluation.

Given that the shape is defined by a Ch_function, the returned weight is the weight of the function (Ch_function_sequence can have different 'weight' values depending on the function segment)

virtual GeometryType chrono::geometry::ChLineCam::GetClassType ( ) const
overridevirtual

Get the class type as unique numerical ID.

Each inherited class must return an unique ID.

Reimplemented from chrono::geometry::ChLine.