hpp-fcl 2.3.6
HPP fork of FCL -- The Flexible Collision Library
Loading...
Searching...
No Matches
default_broadphase_callbacks.h
Go to the documentation of this file.
1/*
2 * Software License Agreement (BSD License)
3 *
4 * Copyright (c) 2020, Toyota Research Institute
5 * Copyright (c) 2022, INRIA
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 the copyright holder 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
39#ifndef HPP_FCL_BROADPHASE_DEFAULT_BROADPHASE_CALLBACKS_H
40#define HPP_FCL_BROADPHASE_DEFAULT_BROADPHASE_CALLBACKS_H
41
43#include "hpp/fcl/collision.h"
44#include "hpp/fcl/distance.h"
45// #include "hpp/fcl/narrowphase/continuous_collision.h"
46// #include "hpp/fcl/narrowphase/continuous_collision_request.h"
47// #include "hpp/fcl/narrowphase/continuous_collision_result.h"
48// #include "hpp/fcl/narrowphase/distance_request.h"
49// #include "hpp/fcl/narrowphase/distance_result.h"
50
51namespace hpp {
52namespace fcl {
53
57 CollisionData() { done = false; }
58
61
64
66 bool done;
67};
68
72 DistanceData() { done = false; }
73
76
79
81 bool done;
82};
83
107 void* data);
108
113// struct DefaultContinuousCollisionData {
114// ContinuousCollisionRequest request;
115// ContinuousCollisionResult result;
116//
117// /// If `true`, requests that the broadphase evaluation stop.
118// bool done{false};
119// };
120
143// bool DefaultContinuousCollisionFunction(ContinuousCollisionObject* o1,
144// ContinuousCollisionObject* o2,
145// void* data) {
146// assert(data != nullptr);
147// auto* cdata = static_cast<DefaultContinuousCollisionData*>(data);
148//
149// if (cdata->done) return true;
150//
151// const ContinuousCollisionRequest& request = cdata->request;
152// ContinuousCollisionResult& result = cdata->result;
153// collide(o1, o2, request, result);
154//
155// return cdata->done;
156// }
157
181 void* data, FCL_REAL& dist);
182
187
189
191};
192
197
199
201};
202
205 typedef std::pair<CollisionObject*, CollisionObject*> CollisionPair;
206
208 CollisionCallBackCollect(const size_t max_size);
209
211
213 size_t numCollisionPairs() const;
214
216 const std::vector<CollisionPair>& getCollisionPairs() const;
217
219 void init();
220
222 bool exist(const CollisionPair& pair) const;
223
225
226 protected:
227 std::vector<CollisionPair> collision_pairs;
228 size_t max_size;
229};
230
231} // namespace fcl
232
233} // namespace hpp
234
235#endif // HPP_FCL_BROADPHASE_DEFAULT_BROADPHASE_CALLBACKS_H
the object for collision or distance computation, contains the geometry and the transform information
Definition: collision_object.h:215
#define HPP_FCL_DLLAPI
Definition: config.hh:64
bool defaultCollisionFunction(CollisionObject *o1, CollisionObject *o2, void *data)
Provides a simple callback for the collision query in the BroadPhaseCollisionManager....
double FCL_REAL
Definition: data_types.h:65
bool defaultDistanceFunction(CollisionObject *o1, CollisionObject *o2, void *data, FCL_REAL &dist)
Collision data for use with the DefaultContinuousCollisionFunction. It stores the collision request a...
Main namespace.
Definition: broadphase_bruteforce.h:44
Base callback class for collision queries. This class can be supersed by child classes to provide des...
Definition: broadphase_callbacks.h:50
Collision callback to collect collision pairs potentially in contacts.
Definition: default_broadphase_callbacks.h:204
const std::vector< CollisionPair > & getCollisionPairs() const
Returns a const reference to the active collision_pairs to check.
std::vector< CollisionPair > collision_pairs
Definition: default_broadphase_callbacks.h:227
bool collide(CollisionObject *o1, CollisionObject *o2)
Collision evaluation between two objects in collision. This callback will cause the broadphase evalua...
virtual ~CollisionCallBackCollect()
Definition: default_broadphase_callbacks.h:224
std::pair< CollisionObject *, CollisionObject * > CollisionPair
Definition: default_broadphase_callbacks.h:205
size_t max_size
Definition: default_broadphase_callbacks.h:228
size_t numCollisionPairs() const
Returns the number of registered collision pairs.
bool exist(const CollisionPair &pair) const
Check wether a collision pair exists.
void init()
Reset the callback.
CollisionCallBackCollect(const size_t max_size)
Default constructor.
Default collision callback to check collision between collision objects.
Definition: default_broadphase_callbacks.h:185
virtual ~CollisionCallBackDefault()
Definition: default_broadphase_callbacks.h:190
bool collide(CollisionObject *o1, CollisionObject *o2)
Collision evaluation between two objects in collision. This callback will cause the broadphase evalua...
CollisionData data
Definition: default_broadphase_callbacks.h:188
Collision data stores the collision request and the result given by collision algorithm.
Definition: default_broadphase_callbacks.h:56
CollisionResult result
Collision result.
Definition: default_broadphase_callbacks.h:63
CollisionRequest request
Collision request.
Definition: default_broadphase_callbacks.h:60
bool done
Whether the collision iteration can stop.
Definition: default_broadphase_callbacks.h:66
CollisionData()
Definition: default_broadphase_callbacks.h:57
request to the collision algorithm
Definition: collision_data.h:235
collision result
Definition: collision_data.h:302
Base callback class for distance queries. This class can be supersed by child classes to provide desi...
Definition: broadphase_callbacks.h:73
Default distance callback to check collision between collision objects.
Definition: default_broadphase_callbacks.h:195
virtual ~DistanceCallBackDefault()
Definition: default_broadphase_callbacks.h:200
DistanceData data
Definition: default_broadphase_callbacks.h:198
bool distance(CollisionObject *o1, CollisionObject *o2, FCL_REAL &dist)
Distance evaluation between two objects in collision. This callback will cause the broadphase evaluat...
Distance data stores the distance request and the result given by distance algorithm.
Definition: default_broadphase_callbacks.h:71
DistanceData()
Definition: default_broadphase_callbacks.h:72
DistanceResult result
Distance result.
Definition: default_broadphase_callbacks.h:78
bool done
Whether the distance iteration can stop.
Definition: default_broadphase_callbacks.h:81
DistanceRequest request
Distance request.
Definition: default_broadphase_callbacks.h:75
request to the distance computation
Definition: collision_data.h:392
distance result
Definition: collision_data.h:420