Skip to content

Commit eec3068

Browse files
lmontautjcarpent
authored andcommitted
python: expose nearest_points in Contact and DistanceResult
1 parent cf1725d commit eec3068

File tree

4 files changed

+8
-5
lines changed

4 files changed

+8
-5
lines changed

include/hpp/fcl/collision_data.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
#define HPP_FCL_COLLISION_DATA_H
4040

4141
#include <vector>
42+
#include <array>
4243
#include <set>
4344
#include <limits>
4445

@@ -76,7 +77,7 @@ struct HPP_FCL_DLLAPI Contact {
7677

7778
/// @brief nearest points associated to this contact.
7879
/// See \ref CollisionResult::nearest_points.
79-
Vec3f nearest_points[2];
80+
std::array<Vec3f, 2> nearest_points;
8081

8182
/// @brief contact position, in world space
8283
Vec3f pos;
@@ -457,7 +458,7 @@ struct HPP_FCL_DLLAPI DistanceResult : QueryResult {
457458

458459
/// @brief nearest points.
459460
/// See CollisionResult::nearest_points.
460-
Vec3f nearest_points[2];
461+
std::array<Vec3f, 2> nearest_points;
461462

462463
/// Stores the normal, defined as the normalized separation vector:
463464
/// normal = (p2 - p1) / dist(o1, o2), where p1 = nearest_points[0]

include/hpp/fcl/serialization/collision_data.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ void load(Archive& ar, hpp::fcl::Contact& contact,
2727
ar >> make_nvp("b1", contact.b1);
2828
ar >> make_nvp("b2", contact.b2);
2929
ar >> make_nvp("normal", contact.normal);
30+
ar >> make_nvp("nearest_points", contact.nearest_points);
3031
ar >> make_nvp("pos", contact.pos);
3132
ar >> make_nvp("penetration_depth", contact.penetration_depth);
3233
contact.o1 = NULL;
@@ -115,7 +116,7 @@ void save(Archive& ar, const hpp::fcl::DistanceResult& distance_result,
115116
ar& make_nvp("base", boost::serialization::base_object<hpp::fcl::QueryResult>(
116117
distance_result));
117118
ar& make_nvp("min_distance", distance_result.min_distance);
118-
ar& make_nvp("nearest_points", make_array(distance_result.nearest_points, 2));
119+
ar& make_nvp("nearest_points", distance_result.nearest_points);
119120
ar& make_nvp("normal", distance_result.normal);
120121
ar& make_nvp("b1", distance_result.b1);
121122
ar& make_nvp("b2", distance_result.b2);
@@ -128,8 +129,7 @@ void load(Archive& ar, hpp::fcl::DistanceResult& distance_result,
128129
make_nvp("base", boost::serialization::base_object<hpp::fcl::QueryResult>(
129130
distance_result));
130131
ar >> make_nvp("min_distance", distance_result.min_distance);
131-
ar >>
132-
make_nvp("nearest_points", make_array(distance_result.nearest_points, 2));
132+
ar >> make_nvp("nearest_points", distance_result.nearest_points);
133133
ar >> make_nvp("normal", distance_result.normal);
134134
ar >> make_nvp("b1", distance_result.b1);
135135
ar >> make_nvp("b2", distance_result.b2);

python/collision.cc

+1
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ void exposeCollisionAPI() {
168168
.DEF_RW_CLASS_ATTRIB(Contact, b1)
169169
.DEF_RW_CLASS_ATTRIB(Contact, b2)
170170
.DEF_RW_CLASS_ATTRIB(Contact, normal)
171+
.DEF_RW_CLASS_ATTRIB(Contact, nearest_points)
171172
.DEF_RW_CLASS_ATTRIB(Contact, pos)
172173
.DEF_RW_CLASS_ATTRIB(Contact, penetration_depth)
173174
.def(self == self)

python/distance.cc

+1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ void exposeDistanceAPI() {
8888
doxygen::class_attrib_doc<DistanceResult>("nearest_points"))
8989
.def("getNearestPoint2", &DistanceRequestWrapper::getNearestPoint2,
9090
doxygen::class_attrib_doc<DistanceResult>("nearest_points"))
91+
.DEF_RO_CLASS_ATTRIB(DistanceResult, nearest_points)
9192
.DEF_RO_CLASS_ATTRIB(DistanceResult, o1)
9293
.DEF_RO_CLASS_ATTRIB(DistanceResult, o2)
9394
.DEF_RW_CLASS_ATTRIB(DistanceResult, b1)

0 commit comments

Comments
 (0)