@@ -146,6 +146,30 @@ unittest(test_solve)
146146 assertEqualFloat (100 , fabrik2D_3_2DOF.getX (2 ), fabrik2D_3_2DOF.getTolerance ());
147147 assertEqualFloat (100 , fabrik2D_3_2DOF.getY (2 ), fabrik2D_3_2DOF.getTolerance ());
148148
149+ // Solve 4 joints, 3DOF
150+ fprintf (stderr, " Solve 4 joints, 3DOF\n " );
151+ Fabrik2D fabrik2D_3_3DOF (3 , lengths_4_joints, 10 );
152+ success = fabrik2D_3_3DOF.solve (150 , 50 , -HALF_PI , lengths_4_joints);
153+ assertEqual (1 , success);
154+
155+ assertEqualFloat (150 , fabrik2D_3_3DOF.getX (3 ), fabrik2D_3_3DOF.getTolerance ());
156+ assertEqualFloat (50 , fabrik2D_3_3DOF.getY (3 ), fabrik2D_3_3DOF.getTolerance ());
157+
158+ assertEqualFloat (150 , fabrik2D_3_3DOF.getX (2 ), fabrik2D_3_3DOF.getTolerance ());
159+ assertEqualFloat (250 , fabrik2D_3_3DOF.getY (2 ), fabrik2D_3_3DOF.getTolerance ());
160+
161+ // Solve 4 joints, 3DOF, Gripping offset
162+ fprintf (stderr, " Solve 4 joints, 3DOF, Gripping offset\n " );
163+ Fabrik2D fabrik2D_3_3DOF_GO (3 , lengths_4_joints, 1 );
164+ success = fabrik2D_3_3DOF_GO.solve (150 , 50 , -HALF_PI , 10 , lengths_4_joints);
165+ assertEqual (1 , success);
166+
167+ assertEqualFloat (150 , fabrik2D_3_3DOF_GO.getX (3 ), fabrik2D_3_3DOF_GO.getTolerance ());
168+ assertEqualFloat (60 , fabrik2D_3_3DOF_GO.getY (3 ), fabrik2D_3_3DOF_GO.getTolerance ());
169+
170+ assertEqualFloat (150 , fabrik2D_3_3DOF_GO.getX (2 ), fabrik2D_3_3DOF_GO.getTolerance ());
171+ assertEqualFloat (260 , fabrik2D_3_3DOF_GO.getY (2 ), fabrik2D_3_3DOF_GO.getTolerance ());
172+
149173 // Solve 4 joints, 3DOF
150174 fprintf (stderr, " Solve 4 joints, 3DOF\n " );
151175 Fabrik2D fabrik2D_4_3DOF (4 , lengths_4_joints, 1 );
0 commit comments