KrisLibrary  1.0.0
CollisionImplicitSurface.h
1 #ifndef COLLISION_IMPLICIT_SURFACE_H
2 #define COLLISION_IMPLICIT_SURFACE_H
3 
4 #include <KrisLibrary/meshing/VolumeGrid.h>
5 #include <KrisLibrary/math3d/geometry3d.h>
6 
7 namespace Geometry {
8 
9  class CollisionPointCloud;
10 
11  using namespace Math3D;
12 
17 {
18  public:
25  void InitCollisions();
26 
29  void DistanceRangeLocal(const AABB3D& bb,Real& vmin,Real& vmax) const;
30 
36  std::vector<Meshing::VolumeGrid> minHierarchy,maxHierarchy;
37  std::vector<Real> resolutionMap;
38 };
39 
40 
43 Real Distance(const CollisionImplicitSurface& s,const Vector3& pt);
44 
54 Real Distance(const CollisionImplicitSurface& s,const Vector3& pt,Vector3& surfacePt,Vector3& direction);
55 
61 Real Distance(const CollisionImplicitSurface& s,const GeometricPrimitive3D& geom,Vector3& surfacePt,Vector3& geomPt,Vector3& direction);
62 
65 bool Collides(const CollisionImplicitSurface& s,const CollisionPointCloud& pc,Real margin,std::vector<int>& collidingPoints,size_t maxContacts=1);
66 
68 Real Distance(const CollisionImplicitSurface& s,const CollisionPointCloud& pc,int& closestPoint,Real upperBound=Inf);
69 
70 
71 } //namespace Geometry
72 
73 #endif
A generic geometric primitive class.
Definition: geometry3d.h:32
Meshing::VolumeGrid baseGrid
The original implicit surface.
Definition: CollisionImplicitSurface.h:32
Real Distance(const CollisionImplicitSurface &s, const Vector3 &pt)
Definition: CollisionImplicitSurface.cpp:141
A 3D vector class.
Definition: math3d/primitives.h:136
std::vector< Meshing::VolumeGrid > minHierarchy
A hierarchy of volume grids of decreasing resolution.
Definition: CollisionImplicitSurface.h:36
A 3D axis-aligned bounding box.
Definition: AABB3D.h:13
A rigid-body transformation.
Definition: math3d/primitives.h:820
Contains all the definitions in the Math3D package.
Definition: AnyGeometry.h:12
RigidTransform currentTransform
The transformation of the implicit surface in space.
Definition: CollisionImplicitSurface.h:34
An implicit surface (usually signed-distance function) with a fast collision detection data structure...
Definition: CollisionImplicitSurface.h:16
A point cloud with a fast collision detection data structure.
Definition: CollisionPointCloud.h:17
A 3D array over an axis-aligned 3D volume, containing Real values.
Definition: AnyGeometry.h:10
bool Collides(const CollisionImplicitSurface &s, const CollisionPointCloud &pc, Real margin, vector< int > &collidingPoints, size_t maxContacts)
Definition: CollisionImplicitSurface.cpp:196
Contains all definitions in the Geometry package.
Definition: AnyGeometry.h:11