1 #ifndef GEOMETRY_COLLISION_MESH_H 2 #define GEOMETRY_COLLISION_MESH_H 4 #include <KrisLibrary/meshing/TriMeshTopology.h> 5 #include <KrisLibrary/math3d/geometry3d.h> 13 class ApproximatePenetrationDepth;
35 void InitCollisions();
36 inline void UpdateTransform(
const RigidTransform& f) {currentTransform = f;}
64 Real
Distance(Real absErr,Real relErr,Real bound=Inf);
65 Real Distance_Coherent(Real absErr,Real relErr,Real bound=Inf);
66 bool WithinDistance(Real tol);
67 bool WithinDistanceAll(Real tol);
68 Real PenetrationDepth();
70 Real Distance_Cached()
const;
71 Real PenetrationDepth_Cached()
const;
75 void ClosestPair(
int& t1,
int& t2)
const;
79 void TolerancePair(
int& t1,
int& t2)
const;
83 void CollisionPairs(std::vector<int>& t1,std::vector<int>& t2)
const;
85 void TolerancePoints(std::vector<Vector3>& p1,std::vector<Vector3>& t2)
const;
87 void TolerancePairs(std::vector<int>& t1,std::vector<int>& t2)
const;
93 std::vector<int> tc1,tc2;
112 Real
Distance(Real absErr,Real relErr,Real bound=Inf);
113 Real Distance_Coherent(Real absErr,Real relErr,Real bound=Inf);
114 bool WithinDistance(Real tol);
115 bool WithinDistanceAll(Real tol);
116 Real PenetrationDepth();
118 Real Distance_Cached()
const;
119 Real PenetrationDepth_Cached()
const;
125 void CollisionPairs(std::vector<int>& t1,std::vector<int>& t2)
const;
126 void TolerancePairs(std::vector<int>& t1,std::vector<int>& t2)
const;
127 void TolerancePoints(std::vector<Vector3>& p1,std::vector<Vector3>& t2)
const;
128 Real margin1,margin2;
void GetBB(const CollisionMesh &m, Box3D &bb)
Returns the bounding box containing m.
Definition: CollisionMesh.cpp:1856
A generic 3D geometric primitive class.
Definition: geometry3d.h:33
Real Distance(const CollisionImplicitSurface &s, const Vector3 &pt)
Definition: CollisionImplicitSurface.cpp:140
A 3D vector class.
Definition: math3d/primitives.h:136
Definition: CollisionMesh.h:102
A triangle mesh that contains connectivity relations between vertices and triangles.
Definition: TriMeshTopology.h:31
A 3D axis-aligned bounding box.
Definition: AABB3D.h:13
Definition: CollisionMesh.cpp:17
A 3D sphere class.
Definition: Sphere3D.h:21
int RayCastLocal(const CollisionMesh &mesh, const Ray3D &r, Vector3 &pt)
Definition: CollisionMesh.cpp:1848
int ClosestPointAndNormal(const TriMesh &m, Real pWeight, Real nWeight, const Vector3 &p, const Vector3 &n, Vector3 &cp)
Definition: CollisionMesh.cpp:1726
Contains all the definitions in the Math3D package.
Definition: AnyGeometry.h:13
void NearbyTriangles(const CollisionMesh &m, const Vector3 &p, Real d, vector< int > &tris, int max)
Computes the triangles in m within distance d to p on m.
Definition: CollisionMesh.cpp:1544
A triangle mesh along with PQP bounding volume structures that enable fast collision and other proxim...
Definition: CollisionMesh.h:26
int ClosestPoint(const CollisionMesh &mesh, const Vector3 &p, Vector3 &cp, Real bound)
Definition: CollisionMesh.cpp:1309
Uses a propagation method to calculate an approximate penetration distance of mesh m1 inside m2...
Definition: PenetrationDepth.h:22
A basic triangle mesh.
Definition: TriMesh.h:41
Real RayCast(const Meshing::VolumeGrid &grid, const Ray3D &ray, Real levelSet, Real tmax)
Definition: CollisionImplicitSurface.cpp:527
void CollideAll(const CollisionMesh &m, const Sphere3D &s, vector< int > &tris, int max)
Computes a list of triangles that overlap the geometry.
Definition: CollisionMesh.cpp:1459
A general-purpose distance querying class.
Definition: CollisionMesh.h:53
A 3D boxThe box is the unit cube [0,1]^3 set in the scaled local coordinate system. That is, one corner is at the origin, and it has dimensions [dims.x,dims.y,dims.z] in the coordinates given by {xbasis,ybasis,zbasis}.
Definition: Box3D.h:21
Contains all definitions in the Geometry package.
Definition: AnyGeometry.cpp:26
Definition: Segment3D.h:12