coal/broadphase/broadphase_collision_manager.h
Go to the documentation of this file.
1 /*
2  * Software License Agreement (BSD License)
3  *
4  * Copyright (c) 2011-2014, Willow Garage, Inc.
5  * Copyright (c) 2014-2016, Open Source Robotics Foundation
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * * Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  * * Redistributions in binary form must reproduce the above
15  * copyright notice, this list of conditions and the following
16  * disclaimer in the documentation and/or other materials provided
17  * with the distribution.
18  * * Neither the name of Open Source Robotics Foundation nor the names of its
19  * contributors may be used to endorse or promote products derived
20  * from this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33  * POSSIBILITY OF SUCH DAMAGE.
34  */
35 
38 #ifndef COAL_BROADPHASE_BROADPHASECOLLISIONMANAGER_H
39 #define COAL_BROADPHASE_BROADPHASECOLLISIONMANAGER_H
40 
41 #include <set>
42 #include <vector>
43 #include <boost/function.hpp>
44 
45 #include "coal/collision_object.h"
47 
48 namespace coal {
49 
53 class COAL_DLLAPI BroadPhaseCollisionManager {
54  public:
56 
57  virtual ~BroadPhaseCollisionManager();
58 
60  virtual void registerObjects(const std::vector<CollisionObject*>& other_objs);
61 
63  virtual void registerObject(CollisionObject* obj) = 0;
64 
66  virtual void unregisterObject(CollisionObject* obj) = 0;
67 
69  virtual void setup() = 0;
70 
72  virtual void update() = 0;
73 
75  virtual void update(CollisionObject* updated_obj);
76 
78  virtual void update(const std::vector<CollisionObject*>& updated_objs);
79 
81  virtual void clear() = 0;
82 
84  virtual void getObjects(std::vector<CollisionObject*>& objs) const = 0;
85 
87  virtual std::vector<CollisionObject*> getObjects() const {
88  std::vector<CollisionObject*> res(size());
89  getObjects(res);
90  return res;
91  };
92 
95  virtual void collide(CollisionObject* obj,
96  CollisionCallBackBase* callback) const = 0;
97 
100  virtual void distance(CollisionObject* obj,
101  DistanceCallBackBase* callback) const = 0;
102 
105  virtual void collide(CollisionCallBackBase* callback) const = 0;
106 
109  virtual void distance(DistanceCallBackBase* callback) const = 0;
110 
112  virtual void collide(BroadPhaseCollisionManager* other_manager,
113  CollisionCallBackBase* callback) const = 0;
114 
116  virtual void distance(BroadPhaseCollisionManager* other_manager,
117  DistanceCallBackBase* callback) const = 0;
118 
120  virtual bool empty() const = 0;
121 
123  virtual size_t size() const = 0;
124 
125  protected:
129  mutable std::set<std::pair<CollisionObject*, CollisionObject*> > tested_set;
130  mutable bool enable_tested_set_;
131 
132  bool inTestedSet(CollisionObject* a, CollisionObject* b) const;
133 
134  void insertTestedSet(CollisionObject* a, CollisionObject* b) const;
135 };
136 
137 } // namespace coal
138 
139 #endif
setup
collision_manager.callback
callback
Definition: collision_manager.py:27
coal::BroadPhaseCollisionManager
Base class for broad phase collision. It helps to accelerate the collision/distance between N objects...
Definition: coal/broadphase/broadphase_collision_manager.h:53
coal
Main namespace.
Definition: coal/broadphase/broadphase_bruteforce.h:44
coal::BroadPhaseCollisionManager::getObjects
virtual std::vector< CollisionObject * > getObjects() const
return the objects managed by the manager
Definition: coal/broadphase/broadphase_collision_manager.h:87
coal::BroadPhaseCollisionManager::enable_tested_set_
bool enable_tested_set_
Definition: coal/broadphase/broadphase_collision_manager.h:130
coal::distance
COAL_DLLAPI CoalScalar distance(const Matrix3s &R0, const Vec3s &T0, const kIOS &b1, const kIOS &b2, Vec3s *P=NULL, Vec3s *Q=NULL)
Approximate distance between two kIOS bounding volumes.
Definition: kIOS.cpp:180
collision_object.h
res
res
coal::DistanceCallBackBase
Base callback class for distance queries. This class can be supersed by child classes to provide desi...
Definition: coal/broadphase/broadphase_callbacks.h:72
coal::CollisionObject
the object for collision or distance computation, contains the geometry and the transform information
Definition: coal/collision_object.h:214
coal::BroadPhaseCollisionManager::tested_set
std::set< std::pair< CollisionObject *, CollisionObject * > > tested_set
tools help to avoid repeating collision or distance callback for the pairs of objects tested before....
Definition: coal/broadphase/broadphase_collision_manager.h:129
generate_distance_plot.b
float b
Definition: generate_distance_plot.py:7
broadphase_callbacks.h
coal::collide
COAL_DLLAPI std::size_t collide(const CollisionObject *o1, const CollisionObject *o2, const CollisionRequest &request, CollisionResult &result)
Main collision interface: given two collision objects, and the requirements for contacts,...
Definition: src/collision.cpp:61
coal::CollisionCallBackBase
Base callback class for collision queries. This class can be supersed by child classes to provide des...
Definition: coal/broadphase/broadphase_callbacks.h:49


hpp-fcl
Author(s):
autogenerated on Sat Nov 23 2024 03:44:57