def test_bspline_curve(self): # 1. Prepare the data p = 3 p_list = np.array([[0, 1], [2, 4], [4, 1], [5, 2], [7, 3], [10, 8], [12, 7], [14, 0]], dtype='d') u_list = np.array([0, 0, 0, 0, 1, 2, 3, 3, 4, 4, 4, 4], dtype='d') u = np.linspace(u_list[0], u_list[-1], 100) # 2. Compute reference values curve_ref = occ_utils.bspline(p_list, u_list) points_ref = occ_utils.curve_dn( curve_ref, u, 0) # zero order derivative = curve points derivatives_ref = occ_utils.curve_dn(curve_ref, u, 1) points_ref = points_ref[:, 0:2] derivatives_ref = derivatives_ref[:, 0:2] # 3. Compute test values curve = Bspline(p, p_list, u_list) points = curve.points(u) derivatives = curve.derivatives(u, 1) # 4. Do the comparative points_test = np.isclose(points_ref, points, atol=1e-10) derivatives_test = np.isclose(derivatives_ref, derivatives, atol=1e-10) self.assertTrue(np.all(points_test) and np.all(derivatives_test))