GCC Code Coverage Report


Directory: ./
File: python/doxygen_autodoc/coal/collision_data.h
Date: 2025-04-01 09:23:31
Exec Total Coverage
Lines: 150 172 87.2%
Branches: 114 174 65.5%

Line Branch Exec Source
1 #ifndef DOXYGEN_AUTODOC_COAL_COLLISION_DATA_H
2 #define DOXYGEN_AUTODOC_COAL_COLLISION_DATA_H
3
4 #include "/root/robotpkg/path/py-coal/work/coal-3.0.1/doc/python/doxygen.hh"
5
6 #include <coal/collision_data.h>
7
8 namespace doxygen {
9
10 template <>
11 struct class_doc_impl< coal::CollisionRequest >
12 {
13 5 static inline const char* run ()
14 {
15 5 return "request to the collision algorithm ";
16 }
17 30 static inline const char* attribute (const char* attrib)
18 {
19
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 25 times.
30 if (strcmp(attrib, "num_max_contacts") == 0)
20 5 return "The maximum number of contacts that can be returned. ";
21
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 20 times.
25 if (strcmp(attrib, "enable_contact") == 0)
22 5 return "whether the contact information (normal, penetration depth and contact position) will return. ";
23
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 15 times.
20 if (strcmp(attrib, "enable_distance_lower_bound") == 0)
24 5 return "Whether a lower bound on distance is returned when objects are disjoint. ";
25
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
15 if (strcmp(attrib, "security_margin") == 0)
26 return "Distance below which objects are considered in collision. See Collision. \n"
27 "\n"
28 5 "Note: If set to -inf, the objects tested for collision are considered as collision free and no test is actually performed by functions coal::collide of class coal::ComputeCollision. ";
29
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
10 if (strcmp(attrib, "break_distance") == 0)
30 5 return "Distance below which bounding volumes are broken down. See Collision. ";
31
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 if (strcmp(attrib, "distance_upper_bound") == 0)
32 return "Distance above which GJK solver makes an early stopping. GJK stops searching for the closest points when it proves that the distance between two geometries is above this threshold. \n"
33 "\n"
34 5 "Remark: Consequently, the closest points might be incorrect, but allows to save computational resources. ";
35 (void)attrib; // turn off unused parameter warning.
36 return "";
37 }
38 };
39
40 template <>
41 struct constructor_2_impl< coal::CollisionRequest, const coal::CollisionRequestFlag, size_t >
42 {
43 5 static inline const char* doc ()
44 {
45 return "Constructor from a flag and a maximal number of contacts. \n"
46 "\n"
47 "\n"
48 "Param\n"
49 " - flag Collision request flag \n"
50 5 " - num_max_contacts Maximal number of allowed contacts ";
51 }
52 5 static inline boost::python::detail::keywords<2+1> args ()
53 {
54
4/8
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 5 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 5 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 5 times.
✗ Branch 12 not taken.
10 return (boost::python::arg("self"), boost::python::arg("flag"), boost::python::arg("num_max_contacts_"));
55 }
56 };
57
58 template <>
59 struct constructor_0_impl< coal::CollisionRequest >
60 {
61 5 static inline const char* doc ()
62 {
63 5 return "Default constructor. ";
64 }
65 5 static inline boost::python::detail::keywords<0+1> args ()
66 {
67 5 return (boost::python::arg("self"));
68 }
69 };
70
71 inline const char* member_func_doc (bool (coal::CollisionRequest::*function_ptr) (const coal::CollisionResult &) const)
72 {
73 if (function_ptr == static_cast<bool (coal::CollisionRequest::*) (const coal::CollisionResult &) const>(&coal::CollisionRequest::isSatisfied))
74 return "";
75 return "";
76 }
77
78 inline boost::python::detail::keywords<2> member_func_args (bool (coal::CollisionRequest::*function_ptr) (const coal::CollisionResult &) const)
79 {
80 if (function_ptr == static_cast<bool (coal::CollisionRequest::*) (const coal::CollisionResult &) const>(&coal::CollisionRequest::isSatisfied))
81 return (boost::python::arg("self"), boost::python::arg("result"));
82 return (boost::python::arg("self"), boost::python::arg("arg0"));
83 }
84
85 inline const char* member_func_doc (bool (coal::CollisionRequest::*function_ptr) (const coal::CollisionRequest &) const)
86 {
87 if (function_ptr == static_cast<bool (coal::CollisionRequest::*) (const coal::CollisionRequest &) const>(&coal::CollisionRequest::operator==))
88 return "whether two coal::CollisionRequest are the same or not ";
89 return "";
90 }
91
92 inline boost::python::detail::keywords<2> member_func_args (bool (coal::CollisionRequest::*function_ptr) (const coal::CollisionRequest &) const)
93 {
94 if (function_ptr == static_cast<bool (coal::CollisionRequest::*) (const coal::CollisionRequest &) const>(&coal::CollisionRequest::operator==))
95 return (boost::python::arg("self"), boost::python::arg("other"));
96 return (boost::python::arg("self"), boost::python::arg("arg0"));
97 }
98 } // namespace doxygen
99 #include <coal/collision_data.h>
100
101 namespace doxygen {
102
103 template <>
104 struct class_doc_impl< coal::CollisionResult >
105 {
106 5 static inline const char* run ()
107 {
108 5 return "collision result ";
109 }
110 5 static inline const char* attribute (const char* attrib)
111 {
112
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 if (strcmp(attrib, "distance_lower_bound") == 0)
113 5 return "Lower bound on distance between objects if they are disjoint. See Collision Note: Always computed. If CollisionRequest::distance_upper_bound is set to infinity, distance_lower_bound is the actual distance between the shapes. ";
114 if (strcmp(attrib, "normal") == 0)
115 return "normal associated to nearest_points. Same as CollisionResult::nearest_points but for the normal. ";
116 if (strcmp(attrib, "nearest_points") == 0)
117 return "nearest points. A coal::CollisionResult can have multiple contacts. The nearest points in CollisionResults correspond to the witness points associated with the smallest distance i.e the distance_lower_bound. For bounding volumes and BVHs, these nearest points are available only when distance_lower_bound is inferior to CollisionRequest::break_distance. ";
118 (void)attrib; // turn off unused parameter warning.
119 return "";
120 }
121 };
122
123 template <>
124 struct constructor_0_impl< coal::CollisionResult >
125 {
126 5 static inline const char* doc ()
127 {
128 5 return "";
129 }
130 5 static inline boost::python::detail::keywords<0+1> args ()
131 {
132 5 return (boost::python::arg("self"));
133 }
134 };
135
136 inline const char* member_func_doc (void (coal::CollisionResult::*function_ptr) (const coal::Scalar &))
137 {
138 if (function_ptr == static_cast<void (coal::CollisionResult::*) (const coal::Scalar &)>(&coal::CollisionResult::updateDistanceLowerBound))
139 return "Update the lower bound only if the distance is inferior. ";
140 return "";
141 }
142
143 inline boost::python::detail::keywords<2> member_func_args (void (coal::CollisionResult::*function_ptr) (const coal::Scalar &))
144 {
145 if (function_ptr == static_cast<void (coal::CollisionResult::*) (const coal::Scalar &)>(&coal::CollisionResult::updateDistanceLowerBound))
146 return (boost::python::arg("self"), boost::python::arg("distance_lower_bound_"));
147 return (boost::python::arg("self"), boost::python::arg("arg0"));
148 }
149
150 inline const char* member_func_doc (void (coal::CollisionResult::*function_ptr) (const coal::Contact &))
151 {
152 if (function_ptr == static_cast<void (coal::CollisionResult::*) (const coal::Contact &)>(&coal::CollisionResult::addContact))
153 return "add one contact into result structure ";
154 return "";
155 }
156
157 inline boost::python::detail::keywords<2> member_func_args (void (coal::CollisionResult::*function_ptr) (const coal::Contact &))
158 {
159 if (function_ptr == static_cast<void (coal::CollisionResult::*) (const coal::Contact &)>(&coal::CollisionResult::addContact))
160 return (boost::python::arg("self"), boost::python::arg("c"));
161 return (boost::python::arg("self"), boost::python::arg("arg0"));
162 }
163
164 inline const char* member_func_doc (bool (coal::CollisionResult::*function_ptr) (const coal::CollisionResult &) const)
165 {
166 if (function_ptr == static_cast<bool (coal::CollisionResult::*) (const coal::CollisionResult &) const>(&coal::CollisionResult::operator==))
167 return "whether two coal::CollisionResult are the same or not ";
168 return "";
169 }
170
171 inline boost::python::detail::keywords<2> member_func_args (bool (coal::CollisionResult::*function_ptr) (const coal::CollisionResult &) const)
172 {
173 if (function_ptr == static_cast<bool (coal::CollisionResult::*) (const coal::CollisionResult &) const>(&coal::CollisionResult::operator==))
174 return (boost::python::arg("self"), boost::python::arg("other"));
175 return (boost::python::arg("self"), boost::python::arg("arg0"));
176 }
177
178 inline const char* member_func_doc (bool (coal::CollisionResult::*function_ptr) () const)
179 {
180 if (function_ptr == static_cast<bool (coal::CollisionResult::*) () const>(&coal::CollisionResult::isCollision))
181 return "return binary collision result ";
182 return "";
183 }
184
185 inline boost::python::detail::keywords<1> member_func_args (bool (coal::CollisionResult::*function_ptr) () const)
186 {
187 if (function_ptr == static_cast<bool (coal::CollisionResult::*) () const>(&coal::CollisionResult::isCollision))
188 return (boost::python::arg("self"));
189 return (boost::python::arg("self"));
190 }
191
192 inline const char* member_func_doc (size_t (coal::CollisionResult::*function_ptr) () const)
193 {
194 if (function_ptr == static_cast<size_t (coal::CollisionResult::*) () const>(&coal::CollisionResult::numContacts))
195 return "number of contacts found ";
196 return "";
197 }
198
199 inline boost::python::detail::keywords<1> member_func_args (size_t (coal::CollisionResult::*function_ptr) () const)
200 {
201 if (function_ptr == static_cast<size_t (coal::CollisionResult::*) () const>(&coal::CollisionResult::numContacts))
202 return (boost::python::arg("self"));
203 return (boost::python::arg("self"));
204 }
205
206 5 inline const char* member_func_doc (const coal::Contact & (coal::CollisionResult::*function_ptr) (size_t) const)
207 {
208
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 5 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 if (function_ptr == static_cast<const coal::Contact & (coal::CollisionResult::*) (size_t) const>(&coal::CollisionResult::getContact))
209 5 return "get the i-th contact calculated ";
210 return "";
211 }
212
213 inline boost::python::detail::keywords<2> member_func_args (const coal::Contact & (coal::CollisionResult::*function_ptr) (size_t) const)
214 {
215 if (function_ptr == static_cast<const coal::Contact & (coal::CollisionResult::*) (size_t) const>(&coal::CollisionResult::getContact))
216 return (boost::python::arg("self"), boost::python::arg("i"));
217 return (boost::python::arg("self"), boost::python::arg("arg0"));
218 }
219
220 inline const char* member_func_doc (void (coal::CollisionResult::*function_ptr) (size_t, const coal::Contact &))
221 {
222 if (function_ptr == static_cast<void (coal::CollisionResult::*) (size_t, const coal::Contact &)>(&coal::CollisionResult::setContact))
223 return "set the i-th contact calculated ";
224 return "";
225 }
226
227 inline boost::python::detail::keywords<3> member_func_args (void (coal::CollisionResult::*function_ptr) (size_t, const coal::Contact &))
228 {
229 if (function_ptr == static_cast<void (coal::CollisionResult::*) (size_t, const coal::Contact &)>(&coal::CollisionResult::setContact))
230 return (boost::python::arg("self"), boost::python::arg("i"), boost::python::arg("c"));
231 return (boost::python::arg("self"), boost::python::arg("arg0"), boost::python::arg("arg1"));
232 }
233
234 inline const char* member_func_doc (void (coal::CollisionResult::*function_ptr) (std::vector< coal::Contact > &) const)
235 {
236 if (function_ptr == static_cast<void (coal::CollisionResult::*) (std::vector< coal::Contact > &) const>(&coal::CollisionResult::getContacts))
237 return "get all the contacts ";
238 return "";
239 }
240
241 inline boost::python::detail::keywords<2> member_func_args (void (coal::CollisionResult::*function_ptr) (std::vector< coal::Contact > &) const)
242 {
243 if (function_ptr == static_cast<void (coal::CollisionResult::*) (std::vector< coal::Contact > &) const>(&coal::CollisionResult::getContacts))
244 return (boost::python::arg("self"), boost::python::arg("contacts_"));
245 return (boost::python::arg("self"), boost::python::arg("arg0"));
246 }
247
248 5 inline const char* member_func_doc (const std::vector< coal::Contact > & (coal::CollisionResult::*function_ptr) () const)
249 {
250
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 5 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 if (function_ptr == static_cast<const std::vector< coal::Contact > & (coal::CollisionResult::*) () const>(&coal::CollisionResult::getContacts))
251 5 return "";
252 return "";
253 }
254
255 inline boost::python::detail::keywords<1> member_func_args (const std::vector< coal::Contact > & (coal::CollisionResult::*function_ptr) () const)
256 {
257 if (function_ptr == static_cast<const std::vector< coal::Contact > & (coal::CollisionResult::*) () const>(&coal::CollisionResult::getContacts))
258 return (boost::python::arg("self"));
259 return (boost::python::arg("self"));
260 }
261
262 inline const char* member_func_doc (void (coal::CollisionResult::*function_ptr) ())
263 {
264 if (function_ptr == static_cast<void (coal::CollisionResult::*) ()>(&coal::CollisionResult::clear))
265 return "clear the results obtained ";
266 if (function_ptr == static_cast<void (coal::CollisionResult::*) ()>(&coal::CollisionResult::swapObjects))
267 return "reposition coal::Contact objects when fcl inverts them during their construction. ";
268 return "";
269 }
270
271 inline boost::python::detail::keywords<1> member_func_args (void (coal::CollisionResult::*function_ptr) ())
272 {
273 if (function_ptr == static_cast<void (coal::CollisionResult::*) ()>(&coal::CollisionResult::clear))
274 return (boost::python::arg("self"));
275 if (function_ptr == static_cast<void (coal::CollisionResult::*) ()>(&coal::CollisionResult::swapObjects))
276 return (boost::python::arg("self"));
277 return (boost::python::arg("self"));
278 }
279 } // namespace doxygen
280 #include <coal/collision_data.h>
281
282 namespace doxygen {
283
284 template <>
285 struct class_doc_impl< coal::Contact >
286 {
287 5 static inline const char* run ()
288 {
289 5 return "coal::Contact information returned by collision. ";
290 }
291 50 static inline const char* attribute (const char* attrib)
292 {
293
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 45 times.
50 if (strcmp(attrib, "o1") == 0)
294 5 return "collision object 1 ";
295
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 40 times.
45 if (strcmp(attrib, "o2") == 0)
296 5 return "collision object 2 ";
297
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 35 times.
40 if (strcmp(attrib, "b1") == 0)
298 5 return "contact primitive in object 1 if object 1 is mesh or point cloud, it is the triangle or point id if object 1 is geometry shape, it is NONE (-1), if object 1 is octree, it is the id of the cell ";
299
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 30 times.
35 if (strcmp(attrib, "b2") == 0)
300 5 return "contact primitive in object 2 if object 2 is mesh or point cloud, it is the triangle or point id if object 2 is geometry shape, it is NONE (-1), if object 2 is octree, it is the id of the cell ";
301
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 25 times.
30 if (strcmp(attrib, "normal") == 0)
302 return "contact normal, pointing from o1 to o2. The normal defined as the normalized separation vector: normal = (p2 - p1) / dist(o1, o2), where p1 = nearest_points[0] belongs to o1 and p2 = nearest_points[1] belongs to o2 and dist(o1, o2) is the signed distance between o1 and o2. The normal always points from o1 to o2. \n"
303 "\n"
304 5 "Note: The separation vector is the smallest vector such that if o1 is translated by it, o1 and o2 are in touching contact (they share at least one contact point but have a zero intersection volume). If the shapes overlap, dist(o1, o2) = -((p2-p1).norm()). Otherwise, dist(o1, o2) = (p2-p1).norm(). ";
305
2/2
✓ Branch 0 taken 15 times.
✓ Branch 1 taken 10 times.
25 if (strcmp(attrib, "nearest_points") == 0)
306 return "nearest points associated to this contact. \n"
307 "\n"
308 15 "Note: Also referred as \"witness points\" in other collision libraries. The points p1 = nearest_points[0] and p2 = nearest_points[1] verify the property that dist(o1, o2) * (p1 - p2) is the separation vector between o1 and o2, with dist(o1, o2) being the signed distance separating o1 from o2. See DistanceResult::normal for the definition of the separation vector. If o1 and o2 have multiple contacts, the nearest_points are associated with the contact which has the greatest penetration depth. TODO (louis): rename nearest_points to witness_points. ";
309
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
10 if (strcmp(attrib, "pos") == 0)
310 5 return "contact position, in world space ";
311
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 if (strcmp(attrib, "penetration_depth") == 0)
312 5 return "penetration depth ";
313 if (strcmp(attrib, "NONE") == 0)
314 return "invalid contact primitive information ";
315 (void)attrib; // turn off unused parameter warning.
316 return "";
317 }
318 };
319
320 template <>
321 struct constructor_0_impl< coal::Contact >
322 {
323 static inline const char* doc ()
324 {
325 return "Default constructor. ";
326 }
327 static inline boost::python::detail::keywords<0+1> args ()
328 {
329 return (boost::python::arg("self"));
330 }
331 };
332
333 template <>
334 struct constructor_4_impl< coal::Contact, const coal::CollisionGeometry *, const coal::CollisionGeometry *, int, int >
335 {
336 5 static inline const char* doc ()
337 {
338 5 return "";
339 }
340 5 static inline boost::python::detail::keywords<4+1> args ()
341 {
342
8/16
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 5 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 5 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 5 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 5 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 5 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 5 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 5 times.
✗ Branch 24 not taken.
10 return (boost::python::arg("self"), boost::python::arg("o1_"), boost::python::arg("o2_"), boost::python::arg("b1_"), boost::python::arg("b2_"));
343 }
344 };
345
346 template <>
347 struct constructor_7_impl< coal::Contact, const coal::CollisionGeometry *, const coal::CollisionGeometry *, int, int, const coal::Vec3s &, const coal::Vec3s &, coal::Scalar >
348 {
349 5 static inline const char* doc ()
350 {
351 5 return "";
352 }
353 5 static inline boost::python::detail::keywords<7+1> args ()
354 {
355
14/28
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 5 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 5 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 5 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 5 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 5 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 5 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 5 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 5 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 5 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 5 times.
✗ Branch 33 not taken.
✓ Branch 35 taken 5 times.
✗ Branch 36 not taken.
✓ Branch 38 taken 5 times.
✗ Branch 39 not taken.
✓ Branch 41 taken 5 times.
✗ Branch 42 not taken.
10 return (boost::python::arg("self"), boost::python::arg("o1_"), boost::python::arg("o2_"), boost::python::arg("b1_"), boost::python::arg("b2_"), boost::python::arg("pos_"), boost::python::arg("normal_"), boost::python::arg("depth_"));
356 }
357 };
358
359 template <>
360 struct constructor_8_impl< coal::Contact, const coal::CollisionGeometry *, const coal::CollisionGeometry *, int, int, const coal::Vec3s &, const coal::Vec3s &, const coal::Vec3s &, coal::Scalar >
361 {
362 static inline const char* doc ()
363 {
364 return "";
365 }
366 static inline boost::python::detail::keywords<8+1> args ()
367 {
368 return (boost::python::arg("self"), boost::python::arg("o1_"), boost::python::arg("o2_"), boost::python::arg("b1_"), boost::python::arg("b2_"), boost::python::arg("p1"), boost::python::arg("p2"), boost::python::arg("normal_"), boost::python::arg("depth_"));
369 }
370 };
371
372 inline const char* member_func_doc (bool (coal::Contact::*function_ptr) (const coal::Contact &) const)
373 {
374 if (function_ptr == static_cast<bool (coal::Contact::*) (const coal::Contact &) const>(&coal::Contact::operator<))
375 return "";
376 if (function_ptr == static_cast<bool (coal::Contact::*) (const coal::Contact &) const>(&coal::Contact::operator==))
377 return "";
378 if (function_ptr == static_cast<bool (coal::Contact::*) (const coal::Contact &) const>(&coal::Contact::operator!=))
379 return "";
380 return "";
381 }
382
383 inline boost::python::detail::keywords<2> member_func_args (bool (coal::Contact::*function_ptr) (const coal::Contact &) const)
384 {
385 if (function_ptr == static_cast<bool (coal::Contact::*) (const coal::Contact &) const>(&coal::Contact::operator<))
386 return (boost::python::arg("self"), boost::python::arg("other"));
387 if (function_ptr == static_cast<bool (coal::Contact::*) (const coal::Contact &) const>(&coal::Contact::operator==))
388 return (boost::python::arg("self"), boost::python::arg("other"));
389 if (function_ptr == static_cast<bool (coal::Contact::*) (const coal::Contact &) const>(&coal::Contact::operator!=))
390 return (boost::python::arg("self"), boost::python::arg("other"));
391 return (boost::python::arg("self"), boost::python::arg("arg0"));
392 }
393
394 inline const char* member_func_doc ( coal::Scalar (coal::Contact::*function_ptr) (const coal::CollisionRequest &) const)
395 {
396 if (function_ptr == static_cast< coal::Scalar (coal::Contact::*) (const coal::CollisionRequest &) const>(&coal::Contact::getDistanceToCollision))
397 return "";
398 return "";
399 }
400
401 inline boost::python::detail::keywords<2> member_func_args ( coal::Scalar (coal::Contact::*function_ptr) (const coal::CollisionRequest &) const)
402 {
403 if (function_ptr == static_cast< coal::Scalar (coal::Contact::*) (const coal::CollisionRequest &) const>(&coal::Contact::getDistanceToCollision))
404 return (boost::python::arg("self"), boost::python::arg("request"));
405 return (boost::python::arg("self"), boost::python::arg("arg0"));
406 }
407 } // namespace doxygen
408 #include <coal/collision_data.h>
409
410 namespace doxygen {
411
412 template <>
413 struct class_doc_impl< coal::ContactPatch >
414 {
415 5 static inline const char* run ()
416 {
417 return "This structure allows to encode contact patches. A contact patch is defined by a set of points belonging to a subset of a plane passing by p and supported by n, where n =Contact::normal and p =Contact::pos. If we denote by P this plane and by S1 and S2 the first and second shape of a collision pair, a contact patch is represented as a polytope which vertices all belong to P & S1 & S2, where & denotes the set-intersection. Since a contact patch is a subset of a plane supported by n, it has a preferred direction. In Coal, the Contact::normal points from S1 to S2. In the same way, a contact patch points by default from S1 to S2. \n"
418 "\n"
419 "Note: For now (April 2024), a coal::ContactPatch is a polygon (2D polytope), so the points of the set, forming the convex-hull of the polytope, are stored in a counter-clockwise fashion. \n"
420 "\n"
421 5 "Note: If needed, the internal algorithms of Coal can easily be extended to compute a contact volume instead of a contact patch. ";
422 }
423 15 static inline const char* attribute (const char* attrib)
424 {
425
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
15 if (strcmp(attrib, "tf") == 0)
426 5 return "Frame of the set, expressed in the world coordinates. The z-axis of the frame's rotation is the contact patch normal. ";
427
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
10 if (strcmp(attrib, "direction") == 0)
428 5 return "Direction of this contact patch. ";
429
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 if (strcmp(attrib, "penetration_depth") == 0)
430 return "Penetration depth of the contact patch. This value corresponds to the signed distance d between the shapes. \n"
431 "\n"
432 "Note: For each contact point p in the patch of normal n, p1 = p - 0.5*d*n and p2 = p + 0.5*d*n define a pair of witness points. p1 belongs to the surface of the first shape and p2 belongs to the surface of the second shape. For any pair of witness points, we always have p2 - p1 = d * n. The vector d * n is called a minimum separation vector: if S1 is translated by it, S1 and S2 are not in collision anymore. \n"
433 "\n"
434 5 "Note: Although there may exist multiple minimum separation vectors between two shapes, the term \"minimum\" comes from the fact that it's impossible to find a different separation vector which has a smaller norm than d * n. ";
435 if (strcmp(attrib, "default_preallocated_size") == 0)
436 return "Default maximum size of the polygon representing the contact patch. Used to pre-allocate memory for the patch. ";
437 (void)attrib; // turn off unused parameter warning.
438 return "";
439 }
440 };
441
442 template <>
443 struct constructor_1_impl< coal::ContactPatch, size_t >
444 {
445 static inline const char* doc ()
446 {
447 return "Default constructor. Note: the preallocated size does not determine the maximum number of points in the patch, it only serves as preallocation if the maximum size of the patch is known in advance. Coal will automatically expand/shrink the contact patch if needed. ";
448 }
449 static inline boost::python::detail::keywords<1+1> args ()
450 {
451 return (boost::python::arg("self"), boost::python::arg("preallocated_size"));
452 }
453 };
454
455 inline const char* member_func_doc ( coal::Vec3s (coal::ContactPatch::*function_ptr) () const)
456 {
457 if (function_ptr == static_cast< coal::Vec3s (coal::ContactPatch::*) () const>(&coal::ContactPatch::getNormal))
458 return "Normal of the contact patch, expressed in the WORLD frame. ";
459 return "";
460 }
461
462 inline boost::python::detail::keywords<1> member_func_args ( coal::Vec3s (coal::ContactPatch::*function_ptr) () const)
463 {
464 if (function_ptr == static_cast< coal::Vec3s (coal::ContactPatch::*) () const>(&coal::ContactPatch::getNormal))
465 return (boost::python::arg("self"));
466 return (boost::python::arg("self"));
467 }
468
469 inline const char* member_func_doc (size_t (coal::ContactPatch::*function_ptr) () const)
470 {
471 if (function_ptr == static_cast<size_t (coal::ContactPatch::*) () const>(&coal::ContactPatch::size))
472 return "Returns the number of points in the contact patch. ";
473 return "";
474 }
475
476 inline boost::python::detail::keywords<1> member_func_args (size_t (coal::ContactPatch::*function_ptr) () const)
477 {
478 if (function_ptr == static_cast<size_t (coal::ContactPatch::*) () const>(&coal::ContactPatch::size))
479 return (boost::python::arg("self"));
480 return (boost::python::arg("self"));
481 }
482
483 inline const char* member_func_doc (void (coal::ContactPatch::*function_ptr) (const coal::Vec3s &))
484 {
485 if (function_ptr == static_cast<void (coal::ContactPatch::*) (const coal::Vec3s &)>(&coal::ContactPatch::addPoint))
486 return "Add a 3D point to the set, expressed in the world frame. \n"
487 "\n"
488 "Note: This function takes a 3D point and expresses it in the local frame of the set. It then takes only the x and y components of the vector, effectively doing a projection onto the plane to which the set belongs. TODO(louis): if necessary, we can store the offset to the plane (x, y). ";
489 return "";
490 }
491
492 inline boost::python::detail::keywords<2> member_func_args (void (coal::ContactPatch::*function_ptr) (const coal::Vec3s &))
493 {
494 if (function_ptr == static_cast<void (coal::ContactPatch::*) (const coal::Vec3s &)>(&coal::ContactPatch::addPoint))
495 return (boost::python::arg("self"), boost::python::arg("point_3d"));
496 return (boost::python::arg("self"), boost::python::arg("arg0"));
497 }
498
499 inline const char* member_func_doc ( coal::Vec3s (coal::ContactPatch::*function_ptr) (const size_t) const)
500 {
501 if (function_ptr == static_cast< coal::Vec3s (coal::ContactPatch::*) (const size_t) const>(&coal::ContactPatch::getPoint))
502 return "Get the i-th point of the set, expressed in the 3D world frame. ";
503 if (function_ptr == static_cast< coal::Vec3s (coal::ContactPatch::*) (const size_t) const>(&coal::ContactPatch::getPointShape1))
504 return "Get the i-th point of the contact patch, projected back onto the first shape of the collision pair. This point is expressed in the 3D world frame. ";
505 if (function_ptr == static_cast< coal::Vec3s (coal::ContactPatch::*) (const size_t) const>(&coal::ContactPatch::getPointShape2))
506 return "Get the i-th point of the contact patch, projected back onto the first shape of the collision pair. This 3D point is expressed in the world frame. ";
507 return "";
508 }
509
510 inline boost::python::detail::keywords<2> member_func_args ( coal::Vec3s (coal::ContactPatch::*function_ptr) (const size_t) const)
511 {
512 if (function_ptr == static_cast< coal::Vec3s (coal::ContactPatch::*) (const size_t) const>(&coal::ContactPatch::getPoint))
513 return (boost::python::arg("self"), boost::python::arg("i"));
514 if (function_ptr == static_cast< coal::Vec3s (coal::ContactPatch::*) (const size_t) const>(&coal::ContactPatch::getPointShape1))
515 return (boost::python::arg("self"), boost::python::arg("i"));
516 if (function_ptr == static_cast< coal::Vec3s (coal::ContactPatch::*) (const size_t) const>(&coal::ContactPatch::getPointShape2))
517 return (boost::python::arg("self"), boost::python::arg("i"));
518 return (boost::python::arg("self"), boost::python::arg("arg0"));
519 }
520
521 inline const char* member_func_doc ( coal::ContactPatch::Polygon & (coal::ContactPatch::*function_ptr) ())
522 {
523 if (function_ptr == static_cast< coal::ContactPatch::Polygon & (coal::ContactPatch::*) ()>(&coal::ContactPatch::points))
524 return "Getter for the 2D points in the set. ";
525 return "";
526 }
527
528 inline boost::python::detail::keywords<1> member_func_args ( coal::ContactPatch::Polygon & (coal::ContactPatch::*function_ptr) ())
529 {
530 if (function_ptr == static_cast< coal::ContactPatch::Polygon & (coal::ContactPatch::*) ()>(&coal::ContactPatch::points))
531 return (boost::python::arg("self"));
532 return (boost::python::arg("self"));
533 }
534
535 inline const char* member_func_doc (const coal::ContactPatch::Polygon & (coal::ContactPatch::*function_ptr) () const)
536 {
537 if (function_ptr == static_cast<const coal::ContactPatch::Polygon & (coal::ContactPatch::*) () const>(&coal::ContactPatch::points))
538 return "Const getter for the 2D points in the set. ";
539 return "";
540 }
541
542 inline boost::python::detail::keywords<1> member_func_args (const coal::ContactPatch::Polygon & (coal::ContactPatch::*function_ptr) () const)
543 {
544 if (function_ptr == static_cast<const coal::ContactPatch::Polygon & (coal::ContactPatch::*) () const>(&coal::ContactPatch::points))
545 return (boost::python::arg("self"));
546 return (boost::python::arg("self"));
547 }
548
549 inline const char* member_func_doc ( coal::Vec2s & (coal::ContactPatch::*function_ptr) (const size_t))
550 {
551 if (function_ptr == static_cast< coal::Vec2s & (coal::ContactPatch::*) (const size_t)>(&coal::ContactPatch::point))
552 return "Getter for the i-th 2D point in the set. ";
553 return "";
554 }
555
556 inline boost::python::detail::keywords<2> member_func_args ( coal::Vec2s & (coal::ContactPatch::*function_ptr) (const size_t))
557 {
558 if (function_ptr == static_cast< coal::Vec2s & (coal::ContactPatch::*) (const size_t)>(&coal::ContactPatch::point))
559 return (boost::python::arg("self"), boost::python::arg("i"));
560 return (boost::python::arg("self"), boost::python::arg("arg0"));
561 }
562
563 inline const char* member_func_doc (const coal::Vec2s & (coal::ContactPatch::*function_ptr) (const size_t) const)
564 {
565 if (function_ptr == static_cast<const coal::Vec2s & (coal::ContactPatch::*) (const size_t) const>(&coal::ContactPatch::point))
566 return "Const getter for the i-th 2D point in the set. ";
567 return "";
568 }
569
570 inline boost::python::detail::keywords<2> member_func_args (const coal::Vec2s & (coal::ContactPatch::*function_ptr) (const size_t) const)
571 {
572 if (function_ptr == static_cast<const coal::Vec2s & (coal::ContactPatch::*) (const size_t) const>(&coal::ContactPatch::point))
573 return (boost::python::arg("self"), boost::python::arg("i"));
574 return (boost::python::arg("self"), boost::python::arg("arg0"));
575 }
576
577 inline const char* member_func_doc (void (coal::ContactPatch::*function_ptr) ())
578 {
579 if (function_ptr == static_cast<void (coal::ContactPatch::*) ()>(&coal::ContactPatch::clear))
580 return "Clear the set. ";
581 return "";
582 }
583
584 inline boost::python::detail::keywords<1> member_func_args (void (coal::ContactPatch::*function_ptr) ())
585 {
586 if (function_ptr == static_cast<void (coal::ContactPatch::*) ()>(&coal::ContactPatch::clear))
587 return (boost::python::arg("self"));
588 return (boost::python::arg("self"));
589 }
590
591 inline const char* member_func_doc (bool (coal::ContactPatch::*function_ptr) (const coal::ContactPatch &) const)
592 {
593 if (function_ptr == static_cast<bool (coal::ContactPatch::*) (const coal::ContactPatch &) const>(&coal::ContactPatch::operator==))
594 return "Whether two contact patches are the same or not. \n"
595 "\n"
596 "Note: This compares the two sets terms by terms. However, two contact patches can be identical, but have a different order for their points. Use isEqual in this case. ";
597 return "";
598 }
599
600 inline boost::python::detail::keywords<2> member_func_args (bool (coal::ContactPatch::*function_ptr) (const coal::ContactPatch &) const)
601 {
602 if (function_ptr == static_cast<bool (coal::ContactPatch::*) (const coal::ContactPatch &) const>(&coal::ContactPatch::operator==))
603 return (boost::python::arg("self"), boost::python::arg("other"));
604 return (boost::python::arg("self"), boost::python::arg("arg0"));
605 }
606
607 inline const char* member_func_doc (bool (coal::ContactPatch::*function_ptr) (const coal::ContactPatch &, const coal::Scalar) const)
608 {
609 if (function_ptr == static_cast<bool (coal::ContactPatch::*) (const coal::ContactPatch &, const coal::Scalar) const>(&coal::ContactPatch::isSame))
610 return "Whether two contact patches are the same or not. Checks for different order of the points. ";
611 return "";
612 }
613
614 inline boost::python::detail::keywords<3> member_func_args (bool (coal::ContactPatch::*function_ptr) (const coal::ContactPatch &, const coal::Scalar) const)
615 {
616 if (function_ptr == static_cast<bool (coal::ContactPatch::*) (const coal::ContactPatch &, const coal::Scalar) const>(&coal::ContactPatch::isSame))
617 return (boost::python::arg("self"), boost::python::arg("other"), boost::python::arg("tol"));
618 return (boost::python::arg("self"), boost::python::arg("arg0"), boost::python::arg("arg1"));
619 }
620 } // namespace doxygen
621 #include <coal/collision_data.h>
622
623 namespace doxygen {
624
625 template <>
626 struct class_doc_impl< coal::ContactPatchRequest >
627 {
628 5 static inline const char* run ()
629 {
630 5 return "Request for a contact patch computation. ";
631 }
632 5 static inline const char* attribute (const char* attrib)
633 {
634
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 if (strcmp(attrib, "max_num_patch") == 0)
635 5 return "Maximum number of contact patches that will be computed. ";
636 (void)attrib; // turn off unused parameter warning.
637 return "";
638 }
639 };
640
641 template <>
642 struct constructor_3_impl< coal::ContactPatchRequest, size_t, size_t, coal::Scalar >
643 {
644 static inline const char* doc ()
645 {
646 return "Default constructor. \n"
647 "\n"
648 "\n"
649 "Param\n"
650 " - max_num_patch maximum number of contact patches per collision pair. \n"
651 " - max_sub_patch_size maximum size of each sub contact patch. Each contact patch contains an internal representation for an inscribed sub contact patch. This allows physics simulation to always work with a predetermined maximum size for each contact patch. A sub contact patch is simply a subset of the vertices of a contact patch. \n"
652 " - num_samples_curved_shapes for shapes like cones and cylinders, which have smooth basis (circles in this case), we need to sample a certain amount of point of this basis. \n"
653 " - patch_tolerance the tolerance below which a point of a shape is considered to belong to the support set of this shape in the direction of the normal. Said otherwise, patch_tolerance determines the \"thickness\" of the separating plane between shapes of a collision pair. ";
654 }
655 static inline boost::python::detail::keywords<3+1> args ()
656 {
657 return (boost::python::arg("self"), boost::python::arg("max_num_patch"), boost::python::arg("num_samples_curved_shapes"), boost::python::arg("patch_tolerance"));
658 }
659 };
660
661 template <>
662 struct constructor_3_impl< coal::ContactPatchRequest, const coal::CollisionRequest &, size_t, coal::Scalar >
663 {
664 static inline const char* doc ()
665 {
666 return "Construct a contact patch request from a collision request. ";
667 }
668 static inline boost::python::detail::keywords<3+1> args ()
669 {
670 return (boost::python::arg("self"), boost::python::arg("collision_request"), boost::python::arg("num_samples_curved_shapes"), boost::python::arg("patch_tolerance"));
671 }
672 };
673
674 inline const char* member_func_doc (void (coal::ContactPatchRequest::*function_ptr) (const size_t))
675 {
676 if (function_ptr == static_cast<void (coal::ContactPatchRequest::*) (const size_t)>(&coal::ContactPatchRequest::setNumSamplesCurvedShapes))
677 return "Maximum samples to compute the support sets of curved shapes, i.e. when the normal is perpendicular to the base of a cylinder. For now, only relevant for coal::Cone and coal::Cylinder. In the future this might be extended to coal::Sphere and coal::Ellipsoid. ";
678 return "";
679 }
680
681 inline boost::python::detail::keywords<2> member_func_args (void (coal::ContactPatchRequest::*function_ptr) (const size_t))
682 {
683 if (function_ptr == static_cast<void (coal::ContactPatchRequest::*) (const size_t)>(&coal::ContactPatchRequest::setNumSamplesCurvedShapes))
684 return (boost::python::arg("self"), boost::python::arg("num_samples_curved_shapes"));
685 return (boost::python::arg("self"), boost::python::arg("arg0"));
686 }
687
688 inline const char* member_func_doc (size_t (coal::ContactPatchRequest::*function_ptr) () const)
689 {
690 if (function_ptr == static_cast<size_t (coal::ContactPatchRequest::*) () const>(&coal::ContactPatchRequest::getNumSamplesCurvedShapes))
691 return "Maximum samples to compute the support sets of curved shapes, i.e. when the normal is perpendicular to the base of a cylinder. For now, only relevant for coal::Cone and coal::Cylinder. In the future this might be extended to coal::Sphere and coal::Ellipsoid. ";
692 return "";
693 }
694
695 inline boost::python::detail::keywords<1> member_func_args (size_t (coal::ContactPatchRequest::*function_ptr) () const)
696 {
697 if (function_ptr == static_cast<size_t (coal::ContactPatchRequest::*) () const>(&coal::ContactPatchRequest::getNumSamplesCurvedShapes))
698 return (boost::python::arg("self"));
699 return (boost::python::arg("self"));
700 }
701
702 inline const char* member_func_doc (void (coal::ContactPatchRequest::*function_ptr) (const coal::Scalar))
703 {
704 if (function_ptr == static_cast<void (coal::ContactPatchRequest::*) (const coal::Scalar)>(&coal::ContactPatchRequest::setPatchTolerance))
705 return "Tolerance below which points are added to a contact patch. In details, given two shapes S1 and S2, a contact patch is the triple intersection between the separating plane (P) (passing by Contact::pos and supported by Contact::normal), S1 and S2; i.e. a contact patch is P & S1 & S2 if we denote & the set intersection operator. If a point p1 of S1 is at a distance below patch_tolerance from the separating plane, it is taken into account in the computation of the contact patch. Otherwise, it is not used for the computation. \n"
706 "\n"
707 "Note: Needs to be positive. ";
708 return "";
709 }
710
711 inline boost::python::detail::keywords<2> member_func_args (void (coal::ContactPatchRequest::*function_ptr) (const coal::Scalar))
712 {
713 if (function_ptr == static_cast<void (coal::ContactPatchRequest::*) (const coal::Scalar)>(&coal::ContactPatchRequest::setPatchTolerance))
714 return (boost::python::arg("self"), boost::python::arg("patch_tolerance"));
715 return (boost::python::arg("self"), boost::python::arg("arg0"));
716 }
717
718 inline const char* member_func_doc ( coal::Scalar (coal::ContactPatchRequest::*function_ptr) () const)
719 {
720 if (function_ptr == static_cast< coal::Scalar (coal::ContactPatchRequest::*) () const>(&coal::ContactPatchRequest::getPatchTolerance))
721 return "Tolerance below which points are added to a contact patch. In details, given two shapes S1 and S2, a contact patch is the triple intersection between the separating plane (P) (passing by Contact::pos and supported by Contact::normal), S1 and S2; i.e. a contact patch is P & S1 & S2 if we denote & the set intersection operator. If a point p1 of S1 is at a distance below patch_tolerance from the separating plane, it is taken into account in the computation of the contact patch. Otherwise, it is not used for the computation. \n"
722 "\n"
723 "Note: Needs to be positive. ";
724 return "";
725 }
726
727 inline boost::python::detail::keywords<1> member_func_args ( coal::Scalar (coal::ContactPatchRequest::*function_ptr) () const)
728 {
729 if (function_ptr == static_cast< coal::Scalar (coal::ContactPatchRequest::*) () const>(&coal::ContactPatchRequest::getPatchTolerance))
730 return (boost::python::arg("self"));
731 return (boost::python::arg("self"));
732 }
733
734 inline const char* member_func_doc (bool (coal::ContactPatchRequest::*function_ptr) (const coal::ContactPatchRequest &) const)
735 {
736 if (function_ptr == static_cast<bool (coal::ContactPatchRequest::*) (const coal::ContactPatchRequest &) const>(&coal::ContactPatchRequest::operator==))
737 return "Whether two coal::ContactPatchRequest are identical or not. ";
738 return "";
739 }
740
741 inline boost::python::detail::keywords<2> member_func_args (bool (coal::ContactPatchRequest::*function_ptr) (const coal::ContactPatchRequest &) const)
742 {
743 if (function_ptr == static_cast<bool (coal::ContactPatchRequest::*) (const coal::ContactPatchRequest &) const>(&coal::ContactPatchRequest::operator==))
744 return (boost::python::arg("self"), boost::python::arg("other"));
745 return (boost::python::arg("self"), boost::python::arg("arg0"));
746 }
747 } // namespace doxygen
748 #include <coal/collision_data.h>
749
750 namespace doxygen {
751
752 template <>
753 struct class_doc_impl< coal::ContactPatchResult >
754 {
755 5 static inline const char* run ()
756 {
757 5 return "Result for a contact patch computation. ";
758 }
759 static inline const char* attribute (const char* attrib)
760 {
761 (void)attrib; // turn off unused parameter warning.
762 return "";
763 }
764 };
765
766 template <>
767 struct constructor_0_impl< coal::ContactPatchResult >
768 {
769 static inline const char* doc ()
770 {
771 return "Default constructor. ";
772 }
773 static inline boost::python::detail::keywords<0+1> args ()
774 {
775 return (boost::python::arg("self"));
776 }
777 };
778
779 template <>
780 struct constructor_1_impl< coal::ContactPatchResult, const coal::ContactPatchRequest & >
781 {
782 static inline const char* doc ()
783 {
784 return "Constructor using a coal::ContactPatchRequest. ";
785 }
786 static inline boost::python::detail::keywords<1+1> args ()
787 {
788 return (boost::python::arg("self"), boost::python::arg("request"));
789 }
790 };
791
792 inline const char* member_func_doc (size_t (coal::ContactPatchResult::*function_ptr) () const)
793 {
794 if (function_ptr == static_cast<size_t (coal::ContactPatchResult::*) () const>(&coal::ContactPatchResult::numContactPatches))
795 return "Number of contact patches in the result. ";
796 return "";
797 }
798
799 inline boost::python::detail::keywords<1> member_func_args (size_t (coal::ContactPatchResult::*function_ptr) () const)
800 {
801 if (function_ptr == static_cast<size_t (coal::ContactPatchResult::*) () const>(&coal::ContactPatchResult::numContactPatches))
802 return (boost::python::arg("self"));
803 return (boost::python::arg("self"));
804 }
805
806 inline const char* member_func_doc ( coal::ContactPatchResult::ContactPatchRef (coal::ContactPatchResult::*function_ptr) ())
807 {
808 if (function_ptr == static_cast< coal::ContactPatchResult::ContactPatchRef (coal::ContactPatchResult::*) ()>(&coal::ContactPatchResult::getUnusedContactPatch))
809 return "Returns a new unused contact patch from the internal data vector. ";
810 return "";
811 }
812
813 inline boost::python::detail::keywords<1> member_func_args ( coal::ContactPatchResult::ContactPatchRef (coal::ContactPatchResult::*function_ptr) ())
814 {
815 if (function_ptr == static_cast< coal::ContactPatchResult::ContactPatchRef (coal::ContactPatchResult::*) ()>(&coal::ContactPatchResult::getUnusedContactPatch))
816 return (boost::python::arg("self"));
817 return (boost::python::arg("self"));
818 }
819
820 5 inline const char* member_func_doc (const coal::ContactPatch & (coal::ContactPatchResult::*function_ptr) (const size_t) const)
821 {
822
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 5 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 if (function_ptr == static_cast<const coal::ContactPatch & (coal::ContactPatchResult::*) (const size_t) const>(&coal::ContactPatchResult::getContactPatch))
823 5 return "Const getter for the i-th contact patch of the result. ";
824 return "";
825 }
826
827 inline boost::python::detail::keywords<2> member_func_args (const coal::ContactPatch & (coal::ContactPatchResult::*function_ptr) (const size_t) const)
828 {
829 if (function_ptr == static_cast<const coal::ContactPatch & (coal::ContactPatchResult::*) (const size_t) const>(&coal::ContactPatchResult::getContactPatch))
830 return (boost::python::arg("self"), boost::python::arg("i"));
831 return (boost::python::arg("self"), boost::python::arg("arg0"));
832 }
833
834 inline const char* member_func_doc ( coal::ContactPatch & (coal::ContactPatchResult::*function_ptr) (const size_t))
835 {
836 if (function_ptr == static_cast< coal::ContactPatch & (coal::ContactPatchResult::*) (const size_t)>(&coal::ContactPatchResult::contactPatch))
837 return "Getter for the i-th contact patch of the result. ";
838 return "";
839 }
840
841 inline boost::python::detail::keywords<2> member_func_args ( coal::ContactPatch & (coal::ContactPatchResult::*function_ptr) (const size_t))
842 {
843 if (function_ptr == static_cast< coal::ContactPatch & (coal::ContactPatchResult::*) (const size_t)>(&coal::ContactPatchResult::contactPatch))
844 return (boost::python::arg("self"), boost::python::arg("i"));
845 return (boost::python::arg("self"), boost::python::arg("arg0"));
846 }
847
848 inline const char* member_func_doc (void (coal::ContactPatchResult::*function_ptr) ())
849 {
850 if (function_ptr == static_cast<void (coal::ContactPatchResult::*) ()>(&coal::ContactPatchResult::clear))
851 return "Clears the contact patch result. ";
852 if (function_ptr == static_cast<void (coal::ContactPatchResult::*) ()>(&coal::ContactPatchResult::swapObjects))
853 return "Repositions the coal::ContactPatch when they get inverted during their construction. ";
854 return "";
855 }
856
857 inline boost::python::detail::keywords<1> member_func_args (void (coal::ContactPatchResult::*function_ptr) ())
858 {
859 if (function_ptr == static_cast<void (coal::ContactPatchResult::*) ()>(&coal::ContactPatchResult::clear))
860 return (boost::python::arg("self"));
861 if (function_ptr == static_cast<void (coal::ContactPatchResult::*) ()>(&coal::ContactPatchResult::swapObjects))
862 return (boost::python::arg("self"));
863 return (boost::python::arg("self"));
864 }
865
866 inline const char* member_func_doc (void (coal::ContactPatchResult::*function_ptr) (const coal::ContactPatchRequest &))
867 {
868 if (function_ptr == static_cast<void (coal::ContactPatchResult::*) (const coal::ContactPatchRequest &)>(&coal::ContactPatchResult::set))
869 return "Set up a coal::ContactPatchResult from a coal::ContactPatchRequest ";
870 return "";
871 }
872
873 inline boost::python::detail::keywords<2> member_func_args (void (coal::ContactPatchResult::*function_ptr) (const coal::ContactPatchRequest &))
874 {
875 if (function_ptr == static_cast<void (coal::ContactPatchResult::*) (const coal::ContactPatchRequest &)>(&coal::ContactPatchResult::set))
876 return (boost::python::arg("self"), boost::python::arg("request"));
877 return (boost::python::arg("self"), boost::python::arg("arg0"));
878 }
879
880 inline const char* member_func_doc (bool (coal::ContactPatchResult::*function_ptr) (const coal::ContactPatchRequest &) const)
881 {
882 if (function_ptr == static_cast<bool (coal::ContactPatchResult::*) (const coal::ContactPatchRequest &) const>(&coal::ContactPatchResult::check))
883 return "Return true if this coal::ContactPatchResult is aligned with the coal::ContactPatchRequest given as input. ";
884 return "";
885 }
886
887 inline boost::python::detail::keywords<2> member_func_args (bool (coal::ContactPatchResult::*function_ptr) (const coal::ContactPatchRequest &) const)
888 {
889 if (function_ptr == static_cast<bool (coal::ContactPatchResult::*) (const coal::ContactPatchRequest &) const>(&coal::ContactPatchResult::check))
890 return (boost::python::arg("self"), boost::python::arg("request"));
891 return (boost::python::arg("self"), boost::python::arg("arg0"));
892 }
893
894 inline const char* member_func_doc (bool (coal::ContactPatchResult::*function_ptr) (const coal::ContactPatchResult &) const)
895 {
896 if (function_ptr == static_cast<bool (coal::ContactPatchResult::*) (const coal::ContactPatchResult &) const>(&coal::ContactPatchResult::operator==))
897 return "Whether two coal::ContactPatchResult are identical or not. ";
898 return "";
899 }
900
901 inline boost::python::detail::keywords<2> member_func_args (bool (coal::ContactPatchResult::*function_ptr) (const coal::ContactPatchResult &) const)
902 {
903 if (function_ptr == static_cast<bool (coal::ContactPatchResult::*) (const coal::ContactPatchResult &) const>(&coal::ContactPatchResult::operator==))
904 return (boost::python::arg("self"), boost::python::arg("other"));
905 return (boost::python::arg("self"), boost::python::arg("arg0"));
906 }
907 } // namespace doxygen
908 #include <coal/collision_data.h>
909
910 namespace doxygen {
911
912 template <>
913 struct class_doc_impl< coal::DistanceRequest >
914 {
915 5 static inline const char* run ()
916 {
917 5 return "request to the distance computation ";
918 }
919 20 static inline const char* attribute (const char* attrib)
920 {
921
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 15 times.
20 if (strcmp(attrib, "enable_nearest_points") == 0)
922 5 return "whether to return the nearest points. Nearest points are always computed and are the points of the shapes that achieve a distance of DistanceResult::min_distance. ";
923
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
15 if (strcmp(attrib, "enable_signed_distance") == 0)
924 return "whether to compute the penetration depth when objects are in collision. Turning this off can save computation time if only the distance when objects are disjoint is needed. \n"
925 "\n"
926 5 "Note: The minimum distance between the shapes is stored in DistanceResult::min_distance. If enable_signed_distance is off, DistanceResult::min_distance is always positive. If enable_signed_distance is on, DistanceResult::min_distance can be positive or negative. The nearest points are the points of the shapes that achieve a distance of DistanceResult::min_distance. ";
927
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
10 if (strcmp(attrib, "rel_err") == 0)
928 5 return "error threshold for approximate distance ";
929 (void)attrib; // turn off unused parameter warning.
930 5 return "";
931 }
932 };
933
934 template <>
935 struct constructor_4_impl< coal::DistanceRequest, bool, bool, coal::Scalar, coal::Scalar >
936 {
937 static inline const char* doc ()
938 {
939 return "Param\n"
940 " - enable_nearest_points_ enables the nearest points computation. \n"
941 " - enable_signed_distance_ allows to compute the penetration depth \n"
942 " - rel_err_ \n"
943 " - abs_err_ ";
944 }
945 static inline boost::python::detail::keywords<4+1> args ()
946 {
947 return (boost::python::arg("self"), boost::python::arg("enable_nearest_points_"), boost::python::arg("enable_signed_distance_"), boost::python::arg("rel_err_"), boost::python::arg("abs_err_"));
948 }
949 };
950
951 inline const char* member_func_doc (bool (coal::DistanceRequest::*function_ptr) (const coal::DistanceResult &) const)
952 {
953 if (function_ptr == static_cast<bool (coal::DistanceRequest::*) (const coal::DistanceResult &) const>(&coal::DistanceRequest::isSatisfied))
954 return "";
955 return "";
956 }
957
958 inline boost::python::detail::keywords<2> member_func_args (bool (coal::DistanceRequest::*function_ptr) (const coal::DistanceResult &) const)
959 {
960 if (function_ptr == static_cast<bool (coal::DistanceRequest::*) (const coal::DistanceResult &) const>(&coal::DistanceRequest::isSatisfied))
961 return (boost::python::arg("self"), boost::python::arg("result"));
962 return (boost::python::arg("self"), boost::python::arg("arg0"));
963 }
964
965 inline const char* member_func_doc ( coal::DistanceRequest & (coal::DistanceRequest::*function_ptr) (const coal::DistanceRequest &))
966 {
967 if (function_ptr == static_cast< coal::DistanceRequest & (coal::DistanceRequest::*) (const coal::DistanceRequest &)>(&coal::DistanceRequest::operator=))
968 return "";
969 return "";
970 }
971
972 inline boost::python::detail::keywords<2> member_func_args ( coal::DistanceRequest & (coal::DistanceRequest::*function_ptr) (const coal::DistanceRequest &))
973 {
974 if (function_ptr == static_cast< coal::DistanceRequest & (coal::DistanceRequest::*) (const coal::DistanceRequest &)>(&coal::DistanceRequest::operator=))
975 return (boost::python::arg("self"), boost::python::arg("other"));
976 return (boost::python::arg("self"), boost::python::arg("arg0"));
977 }
978
979 inline const char* member_func_doc (bool (coal::DistanceRequest::*function_ptr) (const coal::DistanceRequest &) const)
980 {
981 if (function_ptr == static_cast<bool (coal::DistanceRequest::*) (const coal::DistanceRequest &) const>(&coal::DistanceRequest::operator==))
982 return "whether two coal::DistanceRequest are the same or not ";
983 return "";
984 }
985
986 inline boost::python::detail::keywords<2> member_func_args (bool (coal::DistanceRequest::*function_ptr) (const coal::DistanceRequest &) const)
987 {
988 if (function_ptr == static_cast<bool (coal::DistanceRequest::*) (const coal::DistanceRequest &) const>(&coal::DistanceRequest::operator==))
989 return (boost::python::arg("self"), boost::python::arg("other"));
990 return (boost::python::arg("self"), boost::python::arg("arg0"));
991 }
992 } // namespace doxygen
993 #include <coal/collision_data.h>
994
995 namespace doxygen {
996
997 template <>
998 struct class_doc_impl< coal::DistanceResult >
999 {
1000 5 static inline const char* run ()
1001 {
1002 5 return "distance result ";
1003 }
1004 45 static inline const char* attribute (const char* attrib)
1005 {
1006
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 40 times.
45 if (strcmp(attrib, "min_distance") == 0)
1007 return "minimum distance between two objects. If two objects are in collision and DistanceRequest::enable_signed_distance is activated, min_distance <= 0. \n"
1008 "\n"
1009 5 "Note: The nearest points are the points of the shapes that achieve a distance of DistanceResult::min_distance. ";
1010
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 35 times.
40 if (strcmp(attrib, "normal") == 0)
1011 5 return "normal. ";
1012
2/2
✓ Branch 0 taken 15 times.
✓ Branch 1 taken 20 times.
35 if (strcmp(attrib, "nearest_points") == 0)
1013 15 return "nearest points. See CollisionResult::nearest_points. ";
1014
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 15 times.
20 if (strcmp(attrib, "o1") == 0)
1015 5 return "collision object 1 ";
1016
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
15 if (strcmp(attrib, "o2") == 0)
1017 5 return "collision object 2 ";
1018
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
10 if (strcmp(attrib, "b1") == 0)
1019 5 return "information about the nearest point in object 1 if object 1 is mesh or point cloud, it is the triangle or point id if object 1 is geometry shape, it is NONE (-1), if object 1 is octree, it is the id of the cell ";
1020
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 if (strcmp(attrib, "b2") == 0)
1021 5 return "information about the nearest point in object 2 if object 2 is mesh or point cloud, it is the triangle or point id if object 2 is geometry shape, it is NONE (-1), if object 2 is octree, it is the id of the cell ";
1022 if (strcmp(attrib, "NONE") == 0)
1023 return "invalid contact primitive information ";
1024 (void)attrib; // turn off unused parameter warning.
1025 return "";
1026 }
1027 };
1028
1029 template <>
1030 struct constructor_1_impl< coal::DistanceResult, coal::Scalar >
1031 {
1032 static inline const char* doc ()
1033 {
1034 return "";
1035 }
1036 static inline boost::python::detail::keywords<1+1> args ()
1037 {
1038 return (boost::python::arg("self"), boost::python::arg("min_distance_"));
1039 }
1040 };
1041
1042 inline const char* member_func_doc (void (coal::DistanceResult::*function_ptr) ( coal::Scalar, const coal::CollisionGeometry *, const coal::CollisionGeometry *, int, int))
1043 {
1044 if (function_ptr == static_cast<void (coal::DistanceResult::*) ( coal::Scalar, const coal::CollisionGeometry *, const coal::CollisionGeometry *, int, int)>(&coal::DistanceResult::update))
1045 return "add distance information into the result ";
1046 return "";
1047 }
1048
1049 inline boost::python::detail::keywords<6> member_func_args (void (coal::DistanceResult::*function_ptr) ( coal::Scalar, const coal::CollisionGeometry *, const coal::CollisionGeometry *, int, int))
1050 {
1051 if (function_ptr == static_cast<void (coal::DistanceResult::*) ( coal::Scalar, const coal::CollisionGeometry *, const coal::CollisionGeometry *, int, int)>(&coal::DistanceResult::update))
1052 return (boost::python::arg("self"), boost::python::arg("distance"), boost::python::arg("o1_"), boost::python::arg("o2_"), boost::python::arg("b1_"), boost::python::arg("b2_"));
1053 return (boost::python::arg("self"), boost::python::arg("arg0"), boost::python::arg("arg1"), boost::python::arg("arg2"), boost::python::arg("arg3"), boost::python::arg("arg4"));
1054 }
1055
1056 inline const char* member_func_doc (void (coal::DistanceResult::*function_ptr) ( coal::Scalar, const coal::CollisionGeometry *, const coal::CollisionGeometry *, int, int, const coal::Vec3s &, const coal::Vec3s &, const coal::Vec3s &))
1057 {
1058 if (function_ptr == static_cast<void (coal::DistanceResult::*) ( coal::Scalar, const coal::CollisionGeometry *, const coal::CollisionGeometry *, int, int, const coal::Vec3s &, const coal::Vec3s &, const coal::Vec3s &)>(&coal::DistanceResult::update))
1059 return "add distance information into the result ";
1060 return "";
1061 }
1062
1063 inline boost::python::detail::keywords<9> member_func_args (void (coal::DistanceResult::*function_ptr) ( coal::Scalar, const coal::CollisionGeometry *, const coal::CollisionGeometry *, int, int, const coal::Vec3s &, const coal::Vec3s &, const coal::Vec3s &))
1064 {
1065 if (function_ptr == static_cast<void (coal::DistanceResult::*) ( coal::Scalar, const coal::CollisionGeometry *, const coal::CollisionGeometry *, int, int, const coal::Vec3s &, const coal::Vec3s &, const coal::Vec3s &)>(&coal::DistanceResult::update))
1066 return (boost::python::arg("self"), boost::python::arg("distance"), boost::python::arg("o1_"), boost::python::arg("o2_"), boost::python::arg("b1_"), boost::python::arg("b2_"), boost::python::arg("p1"), boost::python::arg("p2"), boost::python::arg("normal_"));
1067 return (boost::python::arg("self"), boost::python::arg("arg0"), boost::python::arg("arg1"), boost::python::arg("arg2"), boost::python::arg("arg3"), boost::python::arg("arg4"), boost::python::arg("arg5"), boost::python::arg("arg6"), boost::python::arg("arg7"));
1068 }
1069
1070 inline const char* member_func_doc (void (coal::DistanceResult::*function_ptr) (const coal::DistanceResult &))
1071 {
1072 if (function_ptr == static_cast<void (coal::DistanceResult::*) (const coal::DistanceResult &)>(&coal::DistanceResult::update))
1073 return "add distance information into the result ";
1074 return "";
1075 }
1076
1077 inline boost::python::detail::keywords<2> member_func_args (void (coal::DistanceResult::*function_ptr) (const coal::DistanceResult &))
1078 {
1079 if (function_ptr == static_cast<void (coal::DistanceResult::*) (const coal::DistanceResult &)>(&coal::DistanceResult::update))
1080 return (boost::python::arg("self"), boost::python::arg("other_result"));
1081 return (boost::python::arg("self"), boost::python::arg("arg0"));
1082 }
1083
1084 5 inline const char* member_func_doc (void (coal::DistanceResult::*function_ptr) ())
1085 {
1086
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 5 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 if (function_ptr == static_cast<void (coal::DistanceResult::*) ()>(&coal::DistanceResult::clear))
1087 5 return "clear the result ";
1088 return "";
1089 }
1090
1091 inline boost::python::detail::keywords<1> member_func_args (void (coal::DistanceResult::*function_ptr) ())
1092 {
1093 if (function_ptr == static_cast<void (coal::DistanceResult::*) ()>(&coal::DistanceResult::clear))
1094 return (boost::python::arg("self"));
1095 return (boost::python::arg("self"));
1096 }
1097
1098 inline const char* member_func_doc (bool (coal::DistanceResult::*function_ptr) (const coal::DistanceResult &) const)
1099 {
1100 if (function_ptr == static_cast<bool (coal::DistanceResult::*) (const coal::DistanceResult &) const>(&coal::DistanceResult::operator==))
1101 return "whether two coal::DistanceResult are the same or not ";
1102 return "";
1103 }
1104
1105 inline boost::python::detail::keywords<2> member_func_args (bool (coal::DistanceResult::*function_ptr) (const coal::DistanceResult &) const)
1106 {
1107 if (function_ptr == static_cast<bool (coal::DistanceResult::*) (const coal::DistanceResult &) const>(&coal::DistanceResult::operator==))
1108 return (boost::python::arg("self"), boost::python::arg("other"));
1109 return (boost::python::arg("self"), boost::python::arg("arg0"));
1110 }
1111 } // namespace doxygen
1112 #include <coal/collision_data.h>
1113
1114 namespace doxygen {
1115
1116 template <>
1117 struct class_doc_impl< coal::QueryRequest >
1118 {
1119 5 static inline const char* run ()
1120 {
1121 5 return "base class for all query requests ";
1122 }
1123 65 static inline const char* attribute (const char* attrib)
1124 {
1125
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 55 times.
65 if (strcmp(attrib, "enable_cached_gjk_guess") == 0)
1126 10 return "whether enable gjk initial guess @Deprecated Use gjk_initial_guess instead ";
1127
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 50 times.
55 if (strcmp(attrib, "cached_gjk_guess") == 0)
1128 5 return "the gjk initial guess set by user ";
1129
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 45 times.
50 if (strcmp(attrib, "cached_support_func_guess") == 0)
1130 5 return "the support function initial guess set by user ";
1131
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 40 times.
45 if (strcmp(attrib, "gjk_max_iterations") == 0)
1132 5 return "maximum iteration for the GJK algorithm ";
1133
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 35 times.
40 if (strcmp(attrib, "gjk_tolerance") == 0)
1134 5 return "tolerance for the GJK algorithm. Note: This tolerance determines the precision on the estimated distance between two geometries which are not in collision. It is recommended to not set this tolerance to less than 1e-6. ";
1135
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 30 times.
35 if (strcmp(attrib, "gjk_variant") == 0)
1136 5 return "whether to enable the Nesterov accleration of GJK ";
1137
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 25 times.
30 if (strcmp(attrib, "gjk_convergence_criterion") == 0)
1138 5 return "convergence criterion used to stop GJK ";
1139
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 20 times.
25 if (strcmp(attrib, "gjk_convergence_criterion_type") == 0)
1140 5 return "convergence criterion used to stop GJK ";
1141
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 15 times.
20 if (strcmp(attrib, "epa_max_iterations") == 0)
1142 5 return "max number of iterations for EPA ";
1143
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
15 if (strcmp(attrib, "epa_tolerance") == 0)
1144 5 return "tolerance for EPA. Note: This tolerance determines the precision on the estimated distance between two geometries which are in collision. It is recommended to not set this tolerance to less than 1e-6. Also, setting EPA's tolerance to less than GJK's is not recommended. ";
1145
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
10 if (strcmp(attrib, "enable_timings") == 0)
1146 5 return "enable timings when performing collision/distance request ";
1147
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
5 if (strcmp(attrib, "collision_distance_threshold") == 0)
1148 return "threshold below which a collision is considered. ";
1149 (void)attrib; // turn off unused parameter warning.
1150 5 return "";
1151 }
1152 };
1153
1154 template <>
1155 struct constructor_0_impl< coal::QueryRequest >
1156 {
1157 static inline const char* doc ()
1158 {
1159 return "Default constructor. ";
1160 }
1161 static inline boost::python::detail::keywords<0+1> args ()
1162 {
1163 return (boost::python::arg("self"));
1164 }
1165 };
1166
1167 template <>
1168 struct constructor_1_impl< coal::QueryRequest, const coal::QueryRequest & >
1169 {
1170 static inline const char* doc ()
1171 {
1172 return "Copy constructor. ";
1173 }
1174 static inline boost::python::detail::keywords<1+1> args ()
1175 {
1176 return (boost::python::arg("self"), boost::python::arg("other"));
1177 }
1178 };
1179
1180 inline const char* member_func_doc ( coal::QueryRequest & (coal::QueryRequest::*function_ptr) (const coal::QueryRequest &))
1181 {
1182 if (function_ptr == static_cast< coal::QueryRequest & (coal::QueryRequest::*) (const coal::QueryRequest &)>(&coal::QueryRequest::operator=))
1183 return "Copy assignment operator. ";
1184 return "";
1185 }
1186
1187 inline boost::python::detail::keywords<2> member_func_args ( coal::QueryRequest & (coal::QueryRequest::*function_ptr) (const coal::QueryRequest &))
1188 {
1189 if (function_ptr == static_cast< coal::QueryRequest & (coal::QueryRequest::*) (const coal::QueryRequest &)>(&coal::QueryRequest::operator=))
1190 return (boost::python::arg("self"), boost::python::arg("other"));
1191 return (boost::python::arg("self"), boost::python::arg("arg0"));
1192 }
1193
1194 inline const char* member_func_doc (void (coal::QueryRequest::*function_ptr) (const coal::QueryResult &) const)
1195 {
1196 if (function_ptr == static_cast<void (coal::QueryRequest::*) (const coal::QueryResult &) const>(&coal::QueryRequest::updateGuess))
1197 return "Updates the guess for the internal GJK algorithm in order to warm-start it when reusing this collision request on the same collision pair. \n"
1198 "\n"
1199 "Note: The option gjk_initial_guess must be set to GJKInitialGuess::CachedGuess for this to work. ";
1200 return "";
1201 }
1202
1203 inline boost::python::detail::keywords<2> member_func_args (void (coal::QueryRequest::*function_ptr) (const coal::QueryResult &) const)
1204 {
1205 if (function_ptr == static_cast<void (coal::QueryRequest::*) (const coal::QueryResult &) const>(&coal::QueryRequest::updateGuess))
1206 return (boost::python::arg("self"), boost::python::arg("result"));
1207 return (boost::python::arg("self"), boost::python::arg("arg0"));
1208 }
1209
1210 inline const char* member_func_doc (bool (coal::QueryRequest::*function_ptr) (const coal::QueryRequest &) const)
1211 {
1212 if (function_ptr == static_cast<bool (coal::QueryRequest::*) (const coal::QueryRequest &) const>(&coal::QueryRequest::operator==))
1213 return "whether two coal::QueryRequest are the same or not ";
1214 return "";
1215 }
1216
1217 inline boost::python::detail::keywords<2> member_func_args (bool (coal::QueryRequest::*function_ptr) (const coal::QueryRequest &) const)
1218 {
1219 if (function_ptr == static_cast<bool (coal::QueryRequest::*) (const coal::QueryRequest &) const>(&coal::QueryRequest::operator==))
1220 return (boost::python::arg("self"), boost::python::arg("other"));
1221 return (boost::python::arg("self"), boost::python::arg("arg0"));
1222 }
1223 } // namespace doxygen
1224 #include <coal/collision_data.h>
1225
1226 namespace doxygen {
1227
1228 template <>
1229 struct class_doc_impl< coal::QueryResult >
1230 {
1231 5 static inline const char* run ()
1232 {
1233 5 return "base class for all query results ";
1234 }
1235 15 static inline const char* attribute (const char* attrib)
1236 {
1237
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
15 if (strcmp(attrib, "cached_gjk_guess") == 0)
1238 5 return "stores the last GJK ray when relevant. ";
1239
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
10 if (strcmp(attrib, "cached_support_func_guess") == 0)
1240 5 return "stores the last support function vertex index, when relevant. ";
1241
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
5 if (strcmp(attrib, "timings") == 0)
1242 5 return "timings for the given request ";
1243 (void)attrib; // turn off unused parameter warning.
1244 return "";
1245 }
1246 };
1247
1248 template <>
1249 struct constructor_0_impl< coal::QueryResult >
1250 {
1251 static inline const char* doc ()
1252 {
1253 return "";
1254 }
1255 static inline boost::python::detail::keywords<0+1> args ()
1256 {
1257 return (boost::python::arg("self"));
1258 }
1259 };
1260 } // namespace doxygen
1261
1262 #endif // DOXYGEN_AUTODOC_COAL_COLLISION_DATA_H
1263
1264