KrisLibrary  1.0.0
CollisionPointCloud.h
1 #ifndef COLLISION_POINT_CLOUD_H
2 #define COLLISION_POINT_CLOUD_H
3 
4 #include <KrisLibrary/meshing/PointCloud.h>
5 #include <KrisLibrary/math3d/geometry3d.h>
6 #include <memory>
7 #include <limits>
8 #include "GridSubdivision.h"
9 #include "Octree.h"
10 
11 namespace Geometry {
12 
13  using namespace Math3D;
14 
18 {
19  public:
26  void InitCollisions();
27 
33  GridSubdivision3D grid;
34  shared_ptr<OctreePointSet> octree;
35 };
36 
38 void GetBB(const CollisionPointCloud& pc,Box3D& b);
39 
43 bool WithinDistance(const CollisionPointCloud& pc,const GeometricPrimitive3D& g,Real tol);
45 Real Distance(const CollisionPointCloud& pc,const GeometricPrimitive3D& g);
49 Real Distance(const CollisionPointCloud& pc,const GeometricPrimitive3D& g,int& closestPoint,Real upperBound=Inf);
53 void NearbyPoints(const CollisionPointCloud& pc,const GeometricPrimitive3D& g,Real tol,std::vector<int>& points,size_t maxContacts=std::numeric_limits<size_t>::max());
54 
58 bool Collides(const CollisionPointCloud& pc1,const CollisionPointCloud& pc2,Real margin,std::vector<int>& points1,std::vector<int>& points2,size_t maxContacts=1);
59 
63 int RayCast(const CollisionPointCloud& pc,Real rad,const Ray3D& r,Vector3& pt);
64 
67 int RayCastLocal(const CollisionPointCloud& pc,Real rad,const Ray3D& r,Vector3& pt);
68 
69 } //namespace Geometry
70 
71 #endif
void GetBB(const CollisionMesh &m, Box3D &bb)
Returns the bounding box containing m.
Definition: CollisionMesh.cpp:1769
A generic geometric primitive class.
Definition: geometry3d.h:32
Real Distance(const CollisionImplicitSurface &s, const Vector3 &pt)
Definition: CollisionImplicitSurface.cpp:141
A 3D vector class.
Definition: math3d/primitives.h:136
A 3D point cloud class.
Definition: PointCloud.h:47
A 3D axis-aligned bounding box.
Definition: AABB3D.h:13
A rigid-body transformation.
Definition: math3d/primitives.h:820
AABB3D bblocal
The local bounding box of the point cloud.
Definition: CollisionPointCloud.h:29
int RayCastLocal(const CollisionMesh &mesh, const Ray3D &r, Vector3 &pt)
Definition: CollisionMesh.cpp:1761
Contains all the definitions in the Math3D package.
Definition: AnyGeometry.h:12
RigidTransform currentTransform
The transformation of the point cloud in space.
Definition: CollisionPointCloud.h:31
int RayCast(const CollisionMesh &mesh, const Ray3D &r, Vector3 &pt)
Definition: CollisionMesh.cpp:1749
Real gridResolution
default value is 0, which auto-determines from point cloud
Definition: CollisionPointCloud.h:32
void NearbyPoints(const CollisionPointCloud &pc, const GeometricPrimitive3D &g, Real tol, std::vector< int > &pointIds, size_t maxContacts)
Definition: CollisionPointCloud.cpp:236
A point cloud with a fast collision detection data structure.
Definition: CollisionPointCloud.h:17
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
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
A grid with a list of arbitrary objects (given by void pointers)
Definition: GridSubdivision.h:98
Definition: Ray3D.h:8