Exit GJK early if geom distance doesn't need to be recovered.
PiperOrigin-RevId: 672334991 Change-Id: I4af582c799140ccf3ac4d51952e547b08ab5d55e
This commit is contained in:
committed by
Copybara-Service
parent
61721f8d3c
commit
44145742a7
@@ -49,12 +49,19 @@ void mjccd_support(const void *obj, const ccd_vec3_t *_dir, ccd_vec3_t *vec) {
|
||||
|
||||
mjtNum GeomDist(mjModel* m, mjData* d, int g1, int g2, mjtNum x1[3],
|
||||
mjtNum x2[3]) {
|
||||
mjCCDConfig config = {kMaxIterations, kTolerance};
|
||||
mjCCDConfig config;
|
||||
mjCCDStatus status;
|
||||
|
||||
// set config
|
||||
config.max_iterations = kMaxIterations,
|
||||
config.tolerance = kTolerance,
|
||||
config.contacts = 0; // no geom contacts needed
|
||||
config.distances = 1; // no geom distances needed
|
||||
|
||||
mjCCDObj obj1 = {m, d, g1, -1, -1, -1, -1, 0, {1, 0, 0, 0}, mjc_center,
|
||||
mjc_support};
|
||||
mjCCDObj obj2 = {m, d, g2, -1, -1, -1, -1, 0, {1, 0, 0, 0}, mjc_center,
|
||||
mjc_support};
|
||||
mjCCDStatus status;
|
||||
mjtNum dist = mjc_ccd(&config, &status, &obj1, &obj2);
|
||||
if (x1 != nullptr) mju_copy3(x1, status.x1);
|
||||
if (x2 != nullptr) mju_copy3(x2, status.x2);
|
||||
|
||||
Reference in New Issue
Block a user