chrono::collision::ChCollisionUtils Class Reference

Description

Class with some utility functions for collision detection, as static functions.

#include <ChCollisionUtils.h>

Static Public Member Functions

static bool LineLineIntersect (Vector p1, Vector p2, Vector p3, Vector p4, Vector *pa, Vector *pb, double *mua, double *mub)
 Calculate the line segment PaPb that is the shortest route between two lines P1P2 and P3P4. More...
 
static double PointLineDistance (Vector p, Vector dA, Vector dB, double &mu, int &is_insegment)
 Calculate distance between a point p and a line identified with segment dA,dB. More...
 
static double PointTriangleDistance (Vector B, Vector A1, Vector A2, Vector A3, double &mu, double &mv, int &is_into, Vector &Bprojected)
 Calculate distance of a point from a triangle surface. More...
 

Member Function Documentation

◆ LineLineIntersect()

bool chrono::collision::ChCollisionUtils::LineLineIntersect ( Vector  p1,
Vector  p2,
Vector  p3,
Vector  p4,
Vector pa,
Vector pb,
double *  mua,
double *  mub 
)
static

Calculate the line segment PaPb that is the shortest route between two lines P1P2 and P3P4.

Calculate also the values of mua and mub where Pa = P1 + mua (P2 - P1) Pb = P3 + mub (P4 - P3) Return false if no solution exists.

◆ PointLineDistance()

double chrono::collision::ChCollisionUtils::PointLineDistance ( Vector  p,
Vector  dA,
Vector  dB,
double &  mu,
int &  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)

◆ PointTriangleDistance()

double chrono::collision::ChCollisionUtils::PointTriangleDistance ( Vector  B,
Vector  A1,
Vector  A2,
Vector  A3,
double &  mu,
double &  mv,
int &  is_into,
Vector Bprojected 
)
static

Calculate distance of a point from a triangle surface.

Also computes if projection is inside the triangle. If is_into = true, Bprojected is also computed. Returns distance (positive if 'out' side, out is where points A1 A2 A3 can be read in clockwise fashion)


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