Exemplo n.º 1
0
 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))