Since we are building one particular environment (probably), to speedup slow EPA (and not-so slow GJK) we could implement pairwise collision resolution between all types of bodies:
Robot - Robot
Ball - Robot
Goal - Ball
Goal - Robot
Field - Robot
Field - Ball
Out area - Robot
Out area - Ball
Goal area - Robot
Goal area - Ball
Central area - Robot
Central area - Ball
Field is a 'strict' constraint on position, aka robot/ball cannot physically go further, while out area is a 'soft' not-really-a-constraint, it just tells when is something in out area
This would take a loooot of time, and will be really hard to support/improve/debug, but also would improve performance of collision detection/resolution by a factor of 10-40, probably.
The problem with support stops being a problem after we have stable implementation of EPA/GJK/everything else, since they allow to do an inadequately-largely-scale randomized testing with these functions. Something in the lines of, running a test for few hours with random field configurations, and checking whether all the algorithm results are approximately the same.
For now we don't care, but at some point the low performance of EPA might become an issue. Will see though....
Since we are building one particular environment (probably), to speedup slow EPA (and not-so slow GJK) we could implement pairwise collision resolution between all types of bodies: Robot - Robot Ball - Robot Goal - Ball Goal - Robot Field - Robot Field - Ball Out area - Robot Out area - Ball Goal area - Robot Goal area - Ball Central area - Robot Central area - Ball
Field is a 'strict' constraint on position, aka robot/ball cannot physically go further, while out area is a 'soft' not-really-a-constraint, it just tells when is something in out area
This would take a loooot of time, and will be really hard to support/improve/debug, but also would improve performance of collision detection/resolution by a factor of 10-40, probably.
The problem with support stops being a problem after we have stable implementation of EPA/GJK/everything else, since they allow to do an inadequately-largely-scale randomized testing with these functions. Something in the lines of, running a test for few hours with random field configurations, and checking whether all the algorithm results are approximately the same.
For now we don't care, but at some point the low performance of EPA might become an issue. Will see though....