def test_raise_order(self): # more or less random 2D surface with p=[2,2] and n=[4,3] controlpoints = [[0, 0], [-1, 1], [0, 2], [1, -1], [1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [3, 0], [4, 1], [3, 2]] basis1 = BSplineBasis(3, [0, 0, 0, .4, 1, 1, 1]) basis2 = BSplineBasis(3, [0, 0, 0, 1, 1, 1]) surf = Surface(basis1, basis2, controlpoints) self.assertEqual(surf.order()[0], 3) self.assertEqual(surf.order()[1], 3) evaluation_point1 = surf( 0.23, 0.37) # pick some evaluation point (could be anything) surf.raise_order(1, 2) self.assertEqual(surf.order()[0], 4) self.assertEqual(surf.order()[1], 5) evaluation_point2 = surf(0.23, 0.37) # evaluation before and after RaiseOrder should remain unchanged self.assertAlmostEqual(evaluation_point1[0], evaluation_point2[0]) self.assertAlmostEqual(evaluation_point1[1], evaluation_point2[1]) # test a rational 2D surface controlpoints = [[0, 0, 1], [-1, 1, .96], [0, 2, 1], [1, -1, 1], [1, 0, .8], [1, 1, 1], [2, 1, .89], [2, 2, .9], [2, 3, 1], [3, 0, 1], [4, 1, 1], [3, 2, 1]] basis1 = BSplineBasis(3, [0, 0, 0, .4, 1, 1, 1]) basis2 = BSplineBasis(3, [0, 0, 0, 1, 1, 1]) surf = Surface(basis1, basis2, controlpoints, True) self.assertEqual(surf.order()[0], 3) self.assertEqual(surf.order()[1], 3) evaluation_point1 = surf(0.23, 0.37) surf.raise_order(1, 2) self.assertEqual(surf.order()[0], 4) self.assertEqual(surf.order()[1], 5) evaluation_point2 = surf(0.23, 0.37) # evaluation before and after RaiseOrder should remain unchanged self.assertAlmostEqual(evaluation_point1[0], evaluation_point2[0]) self.assertAlmostEqual(evaluation_point1[1], evaluation_point2[1])