Comments (4)
from mathgeolib.
Thanks for the test case! Debugged this a bit, and lifted the assertion checks to utilize double precision floating point in the above commit. That causes the assertion failure to not fire - however the collision test still reports wrong result - no collision even though the AABB and Capsule should collide (if I interpreted the numbers correctly?)
The commit above at least avoids the math assume failure. Not sure if there is a bug in the GJK algorithm implementation or if this is a limitation of single precision floating point - the numbers have relatively large range, and some of the intermediate computations exceed the scale 1e6
, so the issue may be that single precision floats do not have enough resolution to detect the collision.
from mathgeolib.
{
gte::Vector<3, float> minPoint({ 438.420929, 805.586670, 493.709167 });
gte::Vector<3, float> maxPoint({ 443.420929, 810.586670, 498.709167 });
gte::AlignedBox3<float> aabb(minPoint, maxPoint);
gte::Vector<3, float> a({ 479.665222, -30.0000000, 509.737244 });
gte::Vector<3, float> b({ 479.665222, 1530.00000, 509.737244 });
gte::Vector<3, float> dir = a - b; gte::Normalize(dir);
float height = gte::Length(a - b);
gte::Line3<float> axis( a, dir);
gte::Cylinder3<float> cylinder(axis, 37.6882935f, height);
gte::TIQuery<float, gte::AlignedBox3<float>, gte::Cylinder3<float> > query;
gte::TIQuery<float, gte::AlignedBox3<float>, gte::Cylinder3<float> >::Result res = query(aabb, cylinder);
if (res.intersect)
{
std::cout << "gte intersects\n";
}
}
The image above shows that AABB and Capsule should not collide(OSG). I also test this case with GeometricToolsEngine3p25. It reports no collision.
from mathgeolib.
Oh, thanks! Then it looks like MathGeoLib does compute the proper result after the commit above. Updated the test and closed as fixed.
from mathgeolib.
Related Issues (20)
- MathGeoLibJS live interpreter gives HTTP 404
- Documentation Website is not working(?) HOT 3
- Triangle - AABB Intersection bug? HOT 2
- Polyhedron.cpp // TODO: Do 2D convex hull. HOT 2
- When will the new version be released? HOT 1
- bug:aabb capsule intersection, gjk.cpp wrong assert,wrong calculation result HOT 3
- KdTree not working with a single item/multiple items that cannot be split HOT 2
- Unexpected results with Polyhedron::Triangulate() HOT 2
- Forward-declared float2x2 & float2x3 do not exist HOT 2
- Set3x3PartRotateEulerYZX and ExtractEulerYZX need to modify in Matrix.inl HOT 2
- Missing Feature in Quadtree? HOT 2
- support multiplication of two float3 operands HOT 2
- How to build the lib with visual studio 2017 HOT 3
- Does not compile with /std:c++20 in msvc HOT 1
- Polyhedron against plane split
- float3::ProjectTo assumes that given direction is normalized
- math::Sphere::OptimalEnclosingSphere() breaks down for torus with sufficient detail HOT 6
- Including Triangle2D.h and Triangle.h in the same file can't work because of TRIANGLE
- struct hash_edge should be defined outside of OBB.cpp and Polyhedron.cpp
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mathgeolib.