Description

A triangle geometric shape for collisions and visualization.

#include <ChTriangle.h>

Inheritance diagram for chrono::geometry::ChTriangle:
Collaboration diagram for chrono::geometry::ChTriangle:

Public Member Functions

 ChTriangle (const ChVector<> &mp1, const ChVector<> &mp2, const ChVector<> &mp3)
 
 ChTriangle (const ChTriangle &source)
 
virtual ChTriangleClone () const override
 "Virtual" copy constructor (covariant return type).
 
ChTriangleoperator= (const ChTriangle &source)
 Assignment operator: copy from another triangle.
 
virtual GeometryType GetClassType () const override
 Get the class type as unique numerical ID (faster than using ChronoRTTI mechanism). More...
 
virtual void GetBoundingBox (double &xmin, double &xmax, double &ymin, double &ymax, double &zmin, double &zmax, ChMatrix33<> *Rot=NULL) const override
 Compute bounding box. More...
 
virtual ChVector Baricenter () const override
 Compute center of mass It should be overridden by inherited classes.
 
virtual void CovarianceMatrix (ChMatrix33<> &C) const override
 Compute the 3x3 covariance matrix (only the diagonal and upper part) It should be overridden by inherited classes.
 
virtual int GetManifoldDimension () const override
 This is a surface.
 
bool IsDegenerated () const
 
bool Normal (ChVector<> &N) const
 
ChVector GetNormal () const
 
double PointTriangleDistance (ChVector<> B, double &mu, double &mv, bool &is_into, ChVector<> &Bprojected)
 Given point B, computes the distance from this triangle plane, returning also the projection of point on the plane and other infos. 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::ChGeometry
 ChGeometry (const ChGeometry &source)
 
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 Evaluate (ChVector<> &pos, const double parU, const double parV=0., const double parW=0.) const
 Evaluates a point on a geometry, given parametric coordinates, if possible. More...
 
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 void Update ()
 Generic update of internal data. More...
 

Static Public Member Functions

static double PointTriangleDistance (ChVector<> B, ChVector<> &A1, ChVector<> &A2, ChVector<> &A3, double &mu, double &mv, bool &is_into, ChVector<> &Bprojected)
 Given point B and a generic triangle, computes the distance from the triangle plane, returning also the projection of point on the plane and other infos. More...
 
static double PointLineDistance (ChVector<> &p, ChVector<> &dA, ChVector<> &dB, double &mu, bool &is_insegment)
 Calculate distance between a point p and a line identified with segment dA,dB. More...
 

Public Attributes

ChVector p1
 first triangle vertex
 
ChVector p2
 second triangle vertex
 
ChVector p3
 third triangle vertex
 

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.
 

Member Function Documentation

void chrono::geometry::ChTriangle::GetBoundingBox ( double &  xmin,
double &  xmax,
double &  ymin,
double &  ymax,
double &  zmin,
double &  zmax,
ChMatrix33<> *  Rot = NULL 
) const
overridevirtual

Compute bounding box.

If a matrix Rot is not null, it should compute bounding box along the rotated directions represented by that transformation matrix Rot. It must be overridden by inherited classes.

Reimplemented from chrono::geometry::ChGeometry.

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

Get the class type as unique numerical ID (faster than using ChronoRTTI mechanism).

Each inherited class must return an unique ID.

Reimplemented from chrono::geometry::ChGeometry.

double chrono::geometry::ChTriangle::PointLineDistance ( ChVector<> &  p,
ChVector<> &  dA,
ChVector<> &  dB,
double &  mu,
bool &  is_insegment 
)
static

Calculate distance between a point p and a line identified with segment dA,dB.

Returns distance. Also, the mu value reference tells if the nearest projection of point on line falls into segment (for mu 0...1)

Returns
the distance
Parameters
ppoint to be measured
dAa point on the line
dBanother point on the line
muparametric coord: if in 0..1 interval, projection is between dA and dB
is_insegmentreturns true if projected point is between dA and dB
double chrono::geometry::ChTriangle::PointTriangleDistance ( ChVector<>  B,
ChVector<> &  A1,
ChVector<> &  A2,
ChVector<> &  A3,
double &  mu,
double &  mv,
bool &  is_into,
ChVector<> &  Bprojected 
)
static

Given point B and a generic triangle, computes the distance from the triangle plane, returning also the projection of point on the plane and other infos.

Returns
the signed distance
Parameters
Bpoint to be measured
A1point of triangle
A2point of triangle
A3point of triangle
mureturns U parametric coord of projection
mvreturns V parametric coord of projection
is_intoreturns true if projection falls on the triangle
Bprojectedreturns the position of the projected point
double chrono::geometry::ChTriangle::PointTriangleDistance ( ChVector<>  B,
double &  mu,
double &  mv,
bool &  is_into,
ChVector<> &  Bprojected 
)

Given point B, computes the distance from this triangle plane, returning also the projection of point on the plane and other infos.

Returns
the signed distance
Parameters
Bpoint to be measured
mureturns U parametric coord of projection
mvreturns V parametric coord of projection
is_intoreturns true if projection falls on the triangle
Bprojectedreturns the position of the projected point