Use designated initializers for mjCCDObj.

PiperOrigin-RevId: 676794693
Change-Id: Ie8a35415232e8a9f619713763c5d5a37a6f82935
This commit is contained in:
Yuval Tassa
2024-09-20 04:31:00 -07:00
committed by Copybara-Service
parent 7a92423cf2
commit 78832db53f
+71 -16
View File
@@ -396,10 +396,22 @@ static void mju_rotateFrame(const mjtNum origin[3], const mjtNum rot[9],
int mjc_Convex(const mjModel* m, const mjData* d,
mjContact* con, int g1, int g2, mjtNum margin) {
ccd_t ccd;
mjCCDObj obj1 = {m, d, g1, m->geom_type[g1], -1, -1, -1, -1, margin, {1, 0, 0, 0},
mjc_center, mjc_support};
mjCCDObj obj2 = {m, d, g2, m->geom_type[g2], -1, -1, -1, -1, margin, {1, 0, 0, 0},
mjc_center, mjc_support};
mjCCDObj obj1 = {.model = m, .data = d,
.geom = g1,
.geom_type = m->geom_type[g1],
.meshindex = -1, .flex = -1, .elem = -1, .vert = -1,
.margin = margin,
.rotate = {1, 0, 0, 0},
.center = mjc_center,
.support = mjc_support};
mjCCDObj obj2 = {.model = m, .data = d,
.geom = g2,
.geom_type = m->geom_type[g2],
.meshindex = -1, .flex = -1, .elem = -1, .vert = -1,
.margin = margin,
.rotate = {1, 0, 0, 0},
.center = mjc_center,
.support = mjc_support};
// init ccd structure
mjc_initCCD(&ccd, m);
@@ -527,7 +539,12 @@ int mjc_PlaneConvex(const mjModel* m, const mjData* d,
mjGETINFO
mjtNum dist, dif[3], normal[3] = {mat1[2], mat1[5], mat1[8]};
ccd_vec3_t dir, vec;
mjCCDObj obj = {m, d, g2, m->geom_type[g2], -1, -1, -1, -1, 0, {1, 0, 0, 0}};
mjCCDObj obj = {.model = m, .data = d,
.geom = g2,
.geom_type = m->geom_type[g2],
.meshindex = -1, .flex = -1, .elem = -1, .vert = -1,
.margin = 0,
.rotate = {1, 0, 0, 0}};
// get support point in -normal direction
ccdVec3Set(&dir, -mat1[2], -mat1[5], -mat1[8]);
@@ -702,14 +719,26 @@ int mjc_ConvexHField(const mjModel* m, const mjData* d,
int ncol = m->hfield_ncol[hid];
int dr[2], cnt, rmin, rmax, cmin, cmax;
const float* data = m->hfield_data + m->hfield_adr[hid];
mjCCDObj obj1 = {m, d, -1, mjGEOM_HFIELD, -1, -1, -1, -1, 0, {1, 0, 0, 0},
mjc_prism_center, mjc_prism_support};
mjCCDObj obj1 = {.model = m, .data = d,
.geom = -1,
.geom_type = mjGEOM_HFIELD,
.meshindex = -1, .flex = -1, .elem = -1, .vert = -1,
.margin = 0,
.rotate = {1, 0, 0, 0},
.center = mjc_prism_center,
.support = mjc_prism_support};
// ccd-related
ccd_vec3_t dirccd, vecccd;
ccd_real_t depth;
mjCCDObj obj2 = {m, d, g2, m->geom_type[g2], -1, -1, -1, -1, 0, {1, 0, 0, 0},
mjc_center, mjc_support};
mjCCDObj obj2 = {.model = m, .data = d,
.geom = g2,
.geom_type = m->geom_type[g2],
.meshindex = -1, .flex = -1, .elem = -1, .vert = -1,
.margin = 0,
.rotate = {1, 0, 0, 0},
.center = mjc_center,
.support = mjc_support};
ccd_t ccd;
// point size1 to hfield size instead of geom1 size
@@ -1143,11 +1172,28 @@ void mjc_fixNormal(const mjModel* m, const mjData* d, mjContact* con, int g1, in
int mjc_ConvexElem(const mjModel* m, const mjData* d, mjContact* con,
int g1, int f1, int e1, int v1, int f2, int e2, mjtNum margin) {
ccd_t ccd;
int geom_type = (g1 >= 0) ? m->geom_type[g1] : mjGEOM_FLEX;
mjCCDObj obj1 = {m, d, g1, geom_type, -1, f1, e1, v1, margin, {1, 0, 0, 0},
mjc_center, mjc_support};
mjCCDObj obj2 = {m, d, -1, mjGEOM_FLEX, -1, f2, e2, -1, margin, {1, 0, 0, 0},
mjc_center, mjc_support};
mjCCDObj obj1 = {.model = m, .data = d,
.geom = g1,
.geom_type = (g1 >= 0) ? m->geom_type[g1] : mjGEOM_FLEX,
.meshindex = -1,
.flex = f1,
.elem = e1,
.vert = v1,
.margin = margin,
.rotate = {1, 0, 0, 0},
.center = mjc_center,
.support = mjc_support};
mjCCDObj obj2 = {.model = m, .data = d,
.geom = -1,
.geom_type = mjGEOM_FLEX,
.meshindex = -1,
.flex = f2,
.elem = e2,
.vert = -1,
.margin = margin,
.rotate = {1, 0, 0, 0},
.center = mjc_center,
.support = mjc_support};
// init ccd structure
mjc_initCCD(&ccd, m);
@@ -1196,8 +1242,17 @@ int mjc_HFieldElem(const mjModel* m, const mjData* d, mjContact* con,
// ccd-related
ccd_vec3_t dirccd, vecccd;
ccd_real_t depth;
mjCCDObj obj2 = {m, d, -1, mjGEOM_FLEX, -1, f, e, -1, margin, {1, 0, 0, 0},
mjc_center, mjc_support};
mjCCDObj obj2 = {.model = m, .data = d,
.geom = -1,
.geom_type = mjGEOM_FLEX,
.meshindex = -1,
.flex = f,
.elem = e,
.vert = -1,
.margin = margin,
.rotate = {1, 0, 0, 0},
.center = mjc_center,
.support = mjc_support};
ccd_t ccd;
//------------------------------------- AABB computation, box-box test