Skip to content

Commit 3295893

Browse files
authored
Merge pull request #665 from lmontaut/topic/float
Float precision
2 parents 6b9804a + b56caa5 commit 3295893

File tree

181 files changed

+3657
-3611
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

181 files changed

+3657
-3611
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
88

99
### Changed
1010
- Formatted all CMake listfiles using gersemi, add gersemi to pre-commit configuration ([#657](https://github.com/coal-library/coal/pull/657/files))
11+
- Float precision ([#665](https://github.com/coal-library/coal/pull/665))
12+
- Rename `CoalScalar` to `Scalar`
13+
- Add option to switch between (default) double precision and float precision
14+
- Changed all the uses of `double` to `Scalar` in Coal
15+
- Fixed all the compilation warnings when compiling the library using float precision
1116

1217
## [3.0.1] - 2025-02-12
1318

CMakeLists.txt

+5
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@ option(
7272
"Make Coal retro-compatible with HPP-FCL."
7373
FALSE
7474
)
75+
option(
76+
COAL_USE_FLOAT_PRECISION
77+
"Use float precision (32-bit) instead of the default double precision (64-bit)"
78+
FALSE
79+
)
7580

7681
# Check if the submodule cmake have been initialized
7782
set(JRL_CMAKE_MODULES "${CMAKE_CURRENT_LIST_DIR}/cmake")

doc/gjk.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -447,26 +447,26 @@ def printOrder(order, indent="", start=True, file=sys.stdout, curTests=[]):
447447
+ "const Vec3s& {} (current.vertex[{}]->w);".format(v.upper(), v),
448448
file=file,
449449
)
450-
print(indent + "const CoalScalar aa = A.squaredNorm();".format(), file=file)
450+
print(indent + "const Scalar aa = A.squaredNorm();".format(), file=file)
451451
for v in "dcb":
452452
for m in "abcd":
453453
if m <= v:
454454
print(
455455
indent
456-
+ "const CoalScalar {0}{1} = {2}.dot({3});".format(
456+
+ "const Scalar {0}{1} = {2}.dot({3});".format(
457457
v, m, v.upper(), m.upper()
458458
),
459459
file=file,
460460
)
461461
else:
462462
print(
463-
indent + "const CoalScalar& {0}{1} = {1}{0};".format(v, m),
463+
indent + "const Scalar& {0}{1} = {1}{0};".format(v, m),
464464
file=file,
465465
)
466-
print(indent + "const CoalScalar {0}a_aa = {0}a - aa;".format(v), file=file)
466+
print(indent + "const Scalar {0}a_aa = {0}a - aa;".format(v), file=file)
467467
for l0, l1 in zip("bcd", "cdb"):
468468
print(
469-
indent + "const CoalScalar {0}a_{1}a = {0}a - {1}a;".format(l0, l1),
469+
indent + "const Scalar {0}a_{1}a = {0}a - {1}a;".format(l0, l1),
470470
file=file,
471471
)
472472
for v in "bc":

doc/mesh-mesh-collision-call.dot

+25-25
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,34 @@ digraph CD {
55
size = 11.7
66

77
"std::size_t BVHCollide(const CollisionGeometry* o1,\nconst Transform3s& tf1, const CollisionGeometry* o2,\nconst Transform3s& tf2, const CollisionRequest& request,\nCollisionResult& result)" [shape = box]
8-
"bool OBB::overlap(const OBB& other,\nconst CollisionRequest& request,\nCoalScalar& sqrDistLowerBound) const" [shape = box]
9-
"bool OBBRSS::overlap(const OBBRSS& other,\nconst CollisionRequest& request,\nCoalScalar& sqrDistLowerBound) const" [shape = box]
10-
"bool overlap(const Matrix3s& R0, const Vec3s& T0,\n const OBB& b1, const OBB& b2,\n const CollisionRequest& request, CoalScalar& sqrDistLowerBound)" [shape = box]
11-
"bool overlap(const Matrix3s& R0, const Vec3s& T0,\n const OBBRSS& b1, const OBBRSS& b2,\nconst CollisionRequest& request, CoalScalar& sqrDistLowerBound)" [shape = box]
12-
"bool BVNode::overlap(const BVNode& other,\nconst CollisionRequest& request,\nCoalScalar& sqrDistLowerBound) const" [shape = box]
13-
"bool BVHCollisionTraversalNode::BVTesting\n(int b1, int b2, CoalScalar& sqrDistLowerBound) const\n -request\n - result" [shape = box]
14-
"bool MeshCollisionTraversalNode<T_BVH>::BVTesting\n(int b1, int b2, CoalScalar& sqrDistLowerBound) const\n -request\n - result" [shape = box]
8+
"bool OBB::overlap(const OBB& other,\nconst CollisionRequest& request,\nScalar& sqrDistLowerBound) const" [shape = box]
9+
"bool OBBRSS::overlap(const OBBRSS& other,\nconst CollisionRequest& request,\nScalar& sqrDistLowerBound) const" [shape = box]
10+
"bool overlap(const Matrix3s& R0, const Vec3s& T0,\n const OBB& b1, const OBB& b2,\n const CollisionRequest& request, Scalar& sqrDistLowerBound)" [shape = box]
11+
"bool overlap(const Matrix3s& R0, const Vec3s& T0,\n const OBBRSS& b1, const OBBRSS& b2,\nconst CollisionRequest& request, Scalar& sqrDistLowerBound)" [shape = box]
12+
"bool BVNode::overlap(const BVNode& other,\nconst CollisionRequest& request,\nScalar& sqrDistLowerBound) const" [shape = box]
13+
"bool BVHCollisionTraversalNode::BVTesting\n(int b1, int b2, Scalar& sqrDistLowerBound) const\n -request\n - result" [shape = box]
14+
"bool MeshCollisionTraversalNode<T_BVH>::BVTesting\n(int b1, int b2, Scalar& sqrDistLowerBound) const\n -request\n - result" [shape = box]
1515
"void collide(MeshCollisionTraversalNode<T_BVH>* node,\n const CollisionRequest& request, CollisionResult& result,\nBVHFrontList* front_list)" [shape = box]
16-
"void collisionRecurse(MeshCollisionTraversalNode<T_BVH>* node,\n int b1, int b2, BVHFrontList* front_list, CoalScalar& sqrDistLowerBound)" [shape = box]
16+
"void collisionRecurse(MeshCollisionTraversalNode<T_BVH>* node,\n int b1, int b2, BVHFrontList* front_list, Scalar& sqrDistLowerBound)" [shape = box]
1717
"void propagateBVHFrontListCollisionRecurse(MeshCollisionTraversalNode<T_BVH>* node\n, BVHFrontList* front_list, const CollisionRequest& request, CollisionResult& result)" [shape = box]
18-
"bool MeshCollisionTraversalNodeOBBRSS::BVTesting\n(int b1, int b2, CoalScalar& sqrDistLowerBound) const\n -request\n - result" [shape = box]
19-
"MeshCollisionTraversalNode<T_BVH>::leafTesting\n(int b1, int b2, CoalScalar& sqrDistLowerBound) const\n -request\n - result" [shape = box]
20-
"bool obbDisjointAndLowerBoundDistance\n(const Matrix3s& B, const Vec3s& T, const Vec3s& a, const Vec3s& b,\n CoalScalar& squaredLowerBoundDistance)" [shape = box]
18+
"bool MeshCollisionTraversalNodeOBBRSS::BVTesting\n(int b1, int b2, Scalar& sqrDistLowerBound) const\n -request\n - result" [shape = box]
19+
"MeshCollisionTraversalNode<T_BVH>::leafTesting\n(int b1, int b2, Scalar& sqrDistLowerBound) const\n -request\n - result" [shape = box]
20+
"bool obbDisjointAndLowerBoundDistance\n(const Matrix3s& B, const Vec3s& T, const Vec3s& a, const Vec3s& b,\n Scalar& squaredLowerBoundDistance)" [shape = box]
2121

2222
"std::size_t BVHCollide(const CollisionGeometry* o1,\nconst Transform3s& tf1, const CollisionGeometry* o2,\nconst Transform3s& tf2, const CollisionRequest& request,\nCollisionResult& result)" -> "void collide(MeshCollisionTraversalNode<T_BVH>* node,\n const CollisionRequest& request, CollisionResult& result,\nBVHFrontList* front_list)"
23-
"bool OBB::overlap(const OBB& other,\nconst CollisionRequest& request,\nCoalScalar& sqrDistLowerBound) const" -> "bool obbDisjointAndLowerBoundDistance\n(const Matrix3s& B, const Vec3s& T, const Vec3s& a, const Vec3s& b,\n CoalScalar& squaredLowerBoundDistance)"
24-
"bool overlap(const Matrix3s& R0, const Vec3s& T0,\n const OBB& b1, const OBB& b2,\n const CollisionRequest& request, CoalScalar& sqrDistLowerBound)" -> "bool obbDisjointAndLowerBoundDistance\n(const Matrix3s& B, const Vec3s& T, const Vec3s& a, const Vec3s& b,\n CoalScalar& squaredLowerBoundDistance)"
25-
"bool overlap(const Matrix3s& R0, const Vec3s& T0,\n const OBBRSS& b1, const OBBRSS& b2,\nconst CollisionRequest& request, CoalScalar& sqrDistLowerBound)" -> "bool overlap(const Matrix3s& R0, const Vec3s& T0,\n const OBB& b1, const OBB& b2,\n const CollisionRequest& request, CoalScalar& sqrDistLowerBound)"
23+
"bool OBB::overlap(const OBB& other,\nconst CollisionRequest& request,\nScalar& sqrDistLowerBound) const" -> "bool obbDisjointAndLowerBoundDistance\n(const Matrix3s& B, const Vec3s& T, const Vec3s& a, const Vec3s& b,\n Scalar& squaredLowerBoundDistance)"
24+
"bool overlap(const Matrix3s& R0, const Vec3s& T0,\n const OBB& b1, const OBB& b2,\n const CollisionRequest& request, Scalar& sqrDistLowerBound)" -> "bool obbDisjointAndLowerBoundDistance\n(const Matrix3s& B, const Vec3s& T, const Vec3s& a, const Vec3s& b,\n Scalar& squaredLowerBoundDistance)"
25+
"bool overlap(const Matrix3s& R0, const Vec3s& T0,\n const OBBRSS& b1, const OBBRSS& b2,\nconst CollisionRequest& request, Scalar& sqrDistLowerBound)" -> "bool overlap(const Matrix3s& R0, const Vec3s& T0,\n const OBB& b1, const OBB& b2,\n const CollisionRequest& request, Scalar& sqrDistLowerBound)"
2626
"void collide(MeshCollisionTraversalNode<T_BVH>* node,\n const CollisionRequest& request, CollisionResult& result,\nBVHFrontList* front_list)"-> "void propagateBVHFrontListCollisionRecurse(MeshCollisionTraversalNode<T_BVH>* node\n, BVHFrontList* front_list, const CollisionRequest& request, CollisionResult& result)"
27-
"void collide(MeshCollisionTraversalNode<T_BVH>* node,\n const CollisionRequest& request, CollisionResult& result,\nBVHFrontList* front_list)" -> "void collisionRecurse(MeshCollisionTraversalNode<T_BVH>* node,\n int b1, int b2, BVHFrontList* front_list, CoalScalar& sqrDistLowerBound)"
28-
"void collisionRecurse(MeshCollisionTraversalNode<T_BVH>* node,\n int b1, int b2, BVHFrontList* front_list, CoalScalar& sqrDistLowerBound)" -> "bool MeshCollisionTraversalNode<T_BVH>::BVTesting\n(int b1, int b2, CoalScalar& sqrDistLowerBound) const\n -request\n - result"
29-
"void collisionRecurse(MeshCollisionTraversalNode<T_BVH>* node,\n int b1, int b2, BVHFrontList* front_list, CoalScalar& sqrDistLowerBound)" -> "MeshCollisionTraversalNode<T_BVH>::leafTesting\n(int b1, int b2, CoalScalar& sqrDistLowerBound) const\n -request\n - result"
30-
"void propagateBVHFrontListCollisionRecurse(MeshCollisionTraversalNode<T_BVH>* node\n, BVHFrontList* front_list, const CollisionRequest& request, CollisionResult& result)" -> "void collisionRecurse(MeshCollisionTraversalNode<T_BVH>* node,\n int b1, int b2, BVHFrontList* front_list, CoalScalar& sqrDistLowerBound)"
31-
"void propagateBVHFrontListCollisionRecurse(MeshCollisionTraversalNode<T_BVH>* node\n, BVHFrontList* front_list, const CollisionRequest& request, CollisionResult& result)" -> "bool MeshCollisionTraversalNode<T_BVH>::BVTesting\n(int b1, int b2, CoalScalar& sqrDistLowerBound) const\n -request\n - result"
32-
"bool MeshCollisionTraversalNodeOBBRSS::BVTesting\n(int b1, int b2, CoalScalar& sqrDistLowerBound) const\n -request\n - result" -> "bool overlap(const Matrix3s& R0, const Vec3s& T0,\n const OBBRSS& b1, const OBBRSS& b2,\nconst CollisionRequest& request, CoalScalar& sqrDistLowerBound)"
33-
"bool MeshCollisionTraversalNode<T_BVH>::BVTesting\n(int b1, int b2, CoalScalar& sqrDistLowerBound) const\n -request\n - result" -> "bool MeshCollisionTraversalNodeOBBRSS::BVTesting\n(int b1, int b2, CoalScalar& sqrDistLowerBound) const\n -request\n - result" [color=red]
34-
"bool MeshCollisionTraversalNode<T_BVH>::BVTesting\n(int b1, int b2, CoalScalar& sqrDistLowerBound) const\n -request\n - result" -> "bool BVHCollisionTraversalNode::BVTesting\n(int b1, int b2, CoalScalar& sqrDistLowerBound) const\n -request\n - result" [color = red]
35-
"bool OBBRSS::overlap(const OBBRSS& other,\nconst CollisionRequest& request,\nCoalScalar& sqrDistLowerBound) const" -> "bool OBB::overlap(const OBB& other,\nconst CollisionRequest& request,\nCoalScalar& sqrDistLowerBound) const"
36-
"bool BVNode::overlap(const BVNode& other,\nconst CollisionRequest& request,\nCoalScalar& sqrDistLowerBound) const" -> "bool OBB::overlap(const OBB& other,\nconst CollisionRequest& request,\nCoalScalar& sqrDistLowerBound) const"
37-
"bool BVHCollisionTraversalNode::BVTesting\n(int b1, int b2, CoalScalar& sqrDistLowerBound) const\n -request\n - result" -> "bool BVNode::overlap(const BVNode& other,\nconst CollisionRequest& request,\nCoalScalar& sqrDistLowerBound) const"
27+
"void collide(MeshCollisionTraversalNode<T_BVH>* node,\n const CollisionRequest& request, CollisionResult& result,\nBVHFrontList* front_list)" -> "void collisionRecurse(MeshCollisionTraversalNode<T_BVH>* node,\n int b1, int b2, BVHFrontList* front_list, Scalar& sqrDistLowerBound)"
28+
"void collisionRecurse(MeshCollisionTraversalNode<T_BVH>* node,\n int b1, int b2, BVHFrontList* front_list, Scalar& sqrDistLowerBound)" -> "bool MeshCollisionTraversalNode<T_BVH>::BVTesting\n(int b1, int b2, Scalar& sqrDistLowerBound) const\n -request\n - result"
29+
"void collisionRecurse(MeshCollisionTraversalNode<T_BVH>* node,\n int b1, int b2, BVHFrontList* front_list, Scalar& sqrDistLowerBound)" -> "MeshCollisionTraversalNode<T_BVH>::leafTesting\n(int b1, int b2, Scalar& sqrDistLowerBound) const\n -request\n - result"
30+
"void propagateBVHFrontListCollisionRecurse(MeshCollisionTraversalNode<T_BVH>* node\n, BVHFrontList* front_list, const CollisionRequest& request, CollisionResult& result)" -> "void collisionRecurse(MeshCollisionTraversalNode<T_BVH>* node,\n int b1, int b2, BVHFrontList* front_list, Scalar& sqrDistLowerBound)"
31+
"void propagateBVHFrontListCollisionRecurse(MeshCollisionTraversalNode<T_BVH>* node\n, BVHFrontList* front_list, const CollisionRequest& request, CollisionResult& result)" -> "bool MeshCollisionTraversalNode<T_BVH>::BVTesting\n(int b1, int b2, Scalar& sqrDistLowerBound) const\n -request\n - result"
32+
"bool MeshCollisionTraversalNodeOBBRSS::BVTesting\n(int b1, int b2, Scalar& sqrDistLowerBound) const\n -request\n - result" -> "bool overlap(const Matrix3s& R0, const Vec3s& T0,\n const OBBRSS& b1, const OBBRSS& b2,\nconst CollisionRequest& request, Scalar& sqrDistLowerBound)"
33+
"bool MeshCollisionTraversalNode<T_BVH>::BVTesting\n(int b1, int b2, Scalar& sqrDistLowerBound) const\n -request\n - result" -> "bool MeshCollisionTraversalNodeOBBRSS::BVTesting\n(int b1, int b2, Scalar& sqrDistLowerBound) const\n -request\n - result" [color=red]
34+
"bool MeshCollisionTraversalNode<T_BVH>::BVTesting\n(int b1, int b2, Scalar& sqrDistLowerBound) const\n -request\n - result" -> "bool BVHCollisionTraversalNode::BVTesting\n(int b1, int b2, Scalar& sqrDistLowerBound) const\n -request\n - result" [color = red]
35+
"bool OBBRSS::overlap(const OBBRSS& other,\nconst CollisionRequest& request,\nScalar& sqrDistLowerBound) const" -> "bool OBB::overlap(const OBB& other,\nconst CollisionRequest& request,\nScalar& sqrDistLowerBound) const"
36+
"bool BVNode::overlap(const BVNode& other,\nconst CollisionRequest& request,\nScalar& sqrDistLowerBound) const" -> "bool OBB::overlap(const OBB& other,\nconst CollisionRequest& request,\nScalar& sqrDistLowerBound) const"
37+
"bool BVHCollisionTraversalNode::BVTesting\n(int b1, int b2, Scalar& sqrDistLowerBound) const\n -request\n - result" -> "bool BVNode::overlap(const BVNode& other,\nconst CollisionRequest& request,\nScalar& sqrDistLowerBound) const"
3838
}

0 commit comments

Comments
 (0)