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::ChLineCam:
Collaboration diagram for chrono::ChLineCam:

Public Types

enum  CamType {
  SLIDEFOLLOWER, ROTATEFOLLOWER, ECCENTRICFOLLOWER, FLAT,
  FLATOSCILLATE
}
 Cam types.
 
- Public Types inherited from chrono::ChGeometry
enum  Type {
  NONE, SPHERE, ELLIPSOID, BOX,
  CYLINDER, TRIANGLE, CAPSULE, CONE,
  LINE, LINE_ARC, LINE_BEZIER, LINE_CAM,
  LINE_PATH, LINE_POLY, LINE_SEGMENT, ROUNDED_BOX,
  ROUNDED_CYLINDER, TRIANGLEMESH, TRIANGLEMESH_CONNECTED, TRIANGLEMESH_SOUP
}
 Enumeration of geometric object types.
 

Public Member Functions

 ChLineCam (const ChLineCam &source)
 
virtual ChLineCamClone () const override
 "Virtual" copy constructor (covariant return type).
 
virtual Type GetType () const override
 Get the class type as an enum.
 
void SetCamType (CamType t)
 Set the cam type.
 
CamType GetCamType () const
 Get the cam type.
 
virtual void SetClosed (bool closed) override
 
virtual bool IsClosed () const override
 Tell if the curve is closed.
 
void SetPhase (double f)
 
double GetPhase () const
 
void SetCamRadius (double r)
 Base radius of cam.
 
double GetCamRadius () const
 
void SetWheelRadius (double r)
 Radius of contact wheel.
 
double GetWheelRadius () const
 
void SetMotionLaw (std::shared_ptr< ChFunction > motion_law)
 The motion law, as a ChFunction.
 
std::shared_ptr< ChFunctionGetMotionLaw () const
 
void SetCenter (ChVector3d mc)
 Position of center of cam in 3d space.
 
ChVector3d GetCenter () const
 
void SetNegative (bool val)
 If true, create a negative cam.
 
bool IsNegative () const
 
void SetInternal (bool val)
 If true, creates an internal cam.
 
bool IsInternal () const
 
void SetRotatingFollower (double mp, double md, double mb0)
 Sets the data for the rotating follower (length, distance from cam center, initial phase mb0)
 
double GetVal () const
 
double GetFollowerDistance () const
 
double GetFollowerInitPhase () const
 
void SetSlidingEccentrical (double me)
 Sets the data for the sliding follower (if eccentric, with me eccentricity)
 
void SetFlatOscillate (double me, double md, double mb0)
 Sets the data for the flat rotating follower (length, distance from cam center, initial phase mb0)
 
ChVector3d EvaluateCamPoint (double par, double &g, double &q) const
 Evaluate at once all important properties of cam, function of rotation 'par' (par in range 0..1, with 1 corresponding to 360 degrees): Also returns the pressure angle g and curvature radius q.
 
virtual ChVector3d Evaluate (double U) const override
 Return a point on the line, given parametric coordinate U (in [0,1]).
 
double GetWeight (double par) const
 Weight evaluation. More...
 
virtual void ArchiveOut (ChArchiveOut &archive_out) override
 Method to allow serialization of transient data to archives.
 
virtual void ArchiveIn (ChArchiveIn &archive_in) override
 Method to allow de-serialization of transient data from archives.
 
- Public Member Functions inherited from chrono::ChLine
 ChLine (const ChLine &source)
 
virtual ChVector3d GetTangent (double parU) const
 Return the tangent unit vector at the parametric coordinate U (in [0,1]). More...
 
virtual int GetComplexity () const
 Tell the complexity.
 
virtual void SetComplexity (int mc)
 
virtual int GetManifoldDimension () const override
 This is a line.
 
bool FindNearestLinePoint (ChVector3d &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 ChVector3d GetEndA () const
 Return the start point of the line. More...
 
virtual ChVector3d 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 (does not 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...
 
double CurveSegmentDistMax (ChLine *complinesegm, int samples) const
 
- Public Member Functions inherited from chrono::ChGeometry
 ChGeometry (const ChGeometry &other)
 
virtual ChAABB GetBoundingBox () const
 Compute bounding box along the directions of the shape definition frame. More...
 
void InflateBoundingBox (ChAABB &bbox) const
 Enlarge the given existing bounding box with the bounding box of this object.
 
virtual double GetBoundingSphereRadius () const
 Returns the radius of a bounding sphere for this geometry. More...
 
virtual ChVector3d Baricenter () const
 Compute center of mass.
 
virtual void Update ()
 Generic update of internal data.
 

Additional Inherited Members

- Protected Attributes inherited from chrono::ChLine
bool closed
 
int complexityU
 

Member Function Documentation

◆ GetWeight()

double chrono::ChLineCam::GetWeight ( double  par) const
inline

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)


The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono/geometry/ChLineCam.h
  • /builds/uwsbel/chrono/src/chrono/geometry/ChLineCam.cpp