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 
75 Real RayCast(const Meshing::VolumeGrid& grid,const Ray3D& ray,Real levelSet=0,Real tmax=Inf);
76 
81 Real RayCast(const CollisionImplicitSurface& s,const Ray3D& ray,Real levelSet=0,Real tmax=Inf);
82 
83 } //namespace Geometry
84 
85 #endif
A generic 3D geometric primitive class.
Definition: geometry3d.h:33
Meshing::VolumeGrid baseGrid
The original implicit surface.
Definition: CollisionImplicitSurface.h:32
Real Distance(const CollisionImplicitSurface &s, const Vector3 &pt)
Definition: CollisionImplicitSurface.cpp:140
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:13
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:20
Real RayCast(const Meshing::VolumeGrid &grid, const Ray3D &ray, Real levelSet, Real tmax)
Definition: CollisionImplicitSurface.cpp:527
bool Collides(const CollisionImplicitSurface &s, const CollisionPointCloud &pc, Real margin, vector< int > &collidingPoints, size_t maxContacts)
Definition: CollisionImplicitSurface.cpp:195
Contains all definitions in the Geometry package.
Definition: AnyGeometry.cpp:26
Definition: Ray3D.h:8