@@ -951,6 +951,46 @@ TEST_F(MjGjkTest, BoxBoxMultiCCD9) {
951
951
mj_deleteModel (model);
952
952
}
953
953
954
+ TEST_F (MjGjkTest, BoxBoxMultiCCD10) {
955
+ static constexpr char xml[] = R"(
956
+ <mujoco>
957
+ <worldbody>
958
+ <geom name="geom1" type="box" pos="0 0 0" size="0.025 0.025 0.025"/>
959
+ <geom name="geom2" type="box" pos="0 0 0" size="0.025 0.025 0.025"/>
960
+ </worldbody>
961
+ </mujoco>)" ;
962
+
963
+ std::array<char , 1000 > error;
964
+ mjModel* model = LoadModelFromString (xml, error.data (), error.size ());
965
+ ASSERT_THAT (model, NotNull ()) << " Failed to load model: " << error.data ();
966
+
967
+ mjData* data = mj_makeData (model);
968
+ mj_forward (model, data);
969
+
970
+ mjtNum* xpos = data->geom_xpos ;
971
+
972
+ xpos[0 ] = -0.1034859999999999946584949839234468527138 ;
973
+ xpos[1 ] = -0.0765140000000000264357424839545274153352 ;
974
+ xpos[2 ] = 0.1257628745456405572333835607423679903150 ;
975
+
976
+ xpos = data->geom_xpos + 3 ;
977
+
978
+ xpos[0 ] = -0.1034859999999999946584949839234468527138 ;
979
+ xpos[1 ] = -0.0765140000000000264357424839545274153352 ;
980
+ xpos[2 ] = 0.1751399999999999623767621415026951581240 ;
981
+
982
+ int geom1 = mj_name2id (model, mjOBJ_GEOM, " geom1" );
983
+ int geom2 = mj_name2id (model, mjOBJ_GEOM, " geom2" );
984
+ std::vector<mjtNum> dir, pos;
985
+ mjtNum dist;
986
+ int ncons = Penetration (dist, dir, pos, model, data, geom1, geom2, 0 , 8 );
987
+
988
+ EXPECT_EQ (ncons, 4 );
989
+
990
+ mj_deleteData (data);
991
+ mj_deleteModel (model);
992
+ }
993
+
954
994
TEST_F (MjGjkTest, SmallBoxMesh) {
955
995
static constexpr char xml[] = R"(
956
996
<mujoco>
0 commit comments