def test_gn_f(self): alpha = F.gn_f(self.N_cur, F.assign_ub(self.points), self.points, np.nan) fun_val = F.gn_f(self.N_cur, F.assign_ub(self.points), self.points, alpha) r = len(self.points) n = len(self.N_cur.ctrlptsw) (rows, ) = np.shape(np.array(fun_val)) self.assertTrue(rows == (2 * r + n)) self.assertTrue(isinstance(alpha, float)) self.assertTrue(isinstance(fun_val, list))
def test_gn_jacobi(self): J = F.gn_jacobi(self.N_cur, F.assign_ub(self.points), self.points, 1.0) r = len(self.points) n = len(self.N_cur.ctrlptsw) (rows, cols) = np.shape(np.array(J)) self.assertTrue(rows == (2 * r + n)) self.assertTrue(cols == (r + 3 * n)) self.assertTrue(isinstance(J, list))
def test_update_curve(self): # Initialize x CP_list = list() for CP in self.N_cur.ctrlptsw: for each in CP[:-1]: CP_list.append(each) W = [] for elem in self.N_cur.ctrlptsw: W.append(elem[-1]) ub = F.assign_ub(self.points) # Should be same as for the B-spline! x = ub + CP_list + W r = len(self.points) New_c = F.update_curve(self.N_cur, x, r) N_res = self.N_cur.evalpts N_new_res = New_c.evalpts W_fix = copy.deepcopy(W) # Change the weights W_fix[0] = W_fix[0] + 2 CP_list_fix = CP_list # Change the controlpoints CP_list_fix[0] = CP_list_fix[3] * 3 x_w = ub + CP_list + np.log(W_fix).tolist() x_p = ub + CP_list_fix + np.log(W).tolist() New_w = F.update_curve(self.N_cur, x_w, r) New_p = F.update_curve(self.N_cur, x_p, r) self.assertListAlmostEqual(N_res, N_new_res, 3) # nothing should be changed self.assertFalse( self.N_cur.ctrlptsw[0][-1] == New_w.ctrlptsw[0][-1]) # Changed self.assertTrue( self.N_cur.ctrlptsw[1][-1] == New_w.ctrlptsw[1][-1]) # Unchanged self.assertTrue(self.N_cur.ctrlptsw[2][-1] == New_w.ctrlptsw[2][-1]) self.assertFalse(self.N_cur.ctrlptsw[0][0] == New_p.ctrlptsw[0][0]) self.assertTrue(self.N_cur.ctrlptsw[0][-1] == New_p.ctrlptsw[0][-1])
def test_assign_ub(self): ub = F.assign_ub(self.points) # Just check if the output is correct (and that the functions actually works). self.assertTrue(isinstance(ub, list)) self.assertTrue( isinstance(F.set_knots(4, 2, len(self.points), ub), np.ndarray))