Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EPA endless loops #9

Open
ilia-glushchenko opened this issue Feb 2, 2018 · 2 comments
Open

EPA endless loops #9

ilia-glushchenko opened this issue Feb 2, 2018 · 2 comments
Assignees
Labels
bug something in the current code base has to be fixed

Comments

@ilia-glushchenko
Copy link
Member

Create a scene with only two following bodies:

Position:
x	9.3000000000000007	
y	6.7000000000000002	
z	6	
Size vectors:
x	0.40000000596046448	
y	0.20000000298023224	
z	0.69999998807907104	
Sphere
Position:
x	8.9000000000000004	
y	6.9000000000000004	
z	6.7000000000000002	
Radius	1	

EPA will fall into the endless loop.

@ilia-glushchenko ilia-glushchenko self-assigned this Feb 2, 2018
@ilia-glushchenko ilia-glushchenko added the bug something in the current code base has to be fixed label Feb 2, 2018
@ilia-glushchenko
Copy link
Member Author

Workaround for this issue.
Godlike/Pegasus@72c8c9b

@ilia-glushchenko ilia-glushchenko changed the title GJK endless loops EPA endless loops Feb 2, 2018
@ilia-glushchenko
Copy link
Member Author

ilia-glushchenko commented Feb 20, 2018

pegasus::mechanics::Body box;
box.linearMotion.position = { 8.1999999999999993, 5.0000000000000000, 1.0000000000000000 };
glm::dvec3 iAxis{ 0.60000002384185791, 0.00000000000000000, 0.00000000000000000 };
glm::dvec3 jAxis{ 0.00000000000000000, 0.40000000596046448, 0.00000000000000000 };
glm::dvec3 kAxis{ 0.00000000000000000, 0.00000000000000000, 0.50000000000000000 };
g_objects.push_back(&demo.MakeBox(
    box, iAxis, jAxis, kAxis, pegasus::scene::Primitive::Type::DYNAMIC
));
        
pegasus::mechanics::Body sphere;
sphere.linearMotion.position = { 7.5999999999999996, 5.4000000000000004, 0.69999999999999996 };
g_objects.push_back(&demo.MakeSphere(
    sphere, 0.5, pegasus::scene::Primitive::Type::DYNAMIC
));

Will create an endless loop condition where the EPA would approach the round edge of the CSO but the time it takes it actually get to the termination is appears to grow exponentially.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug something in the current code base has to be fixed
Projects
None yet
Development

No branches or pull requests

1 participant