def test_reverse(self): # identity mapping, control points generated from knot vector basis1 = BSplineBasis(4, [2, 2, 2, 2, 3, 6, 12, 12, 12, 12]) basis2 = BSplineBasis(3, [-3, -3, -3, 20, 30, 33, 33, 33]) basis3 = BSplineBasis(5, [0, 0, 0, 0, 0, 8, 8, 8, 8, 8]) vol = Volume(basis1, basis2, basis3) u = np.linspace(2, 12, 5) v = np.linspace(-3, 33, 5) w = np.linspace(0, 8, 5) pt = vol(u, v, w) vol.reverse('v') pt2 = vol(u, v[::-1], w) self.assertAlmostEqual(np.linalg.norm(pt - pt2), 0.0) self.assertAlmostEqual(vol.start('v'), -3) self.assertAlmostEqual(vol.end('v'), 33) vol.reverse(2) pt2 = vol(u, v[::-1], w[::-1]) self.assertAlmostEqual(np.linalg.norm(pt - pt2), 0.0) self.assertAlmostEqual(vol.start('w'), 0) self.assertAlmostEqual(vol.end('w'), 8)
def test_reverse(self): # identity mapping, control points generated from knot vector basis1 = BSplineBasis(4, [2,2,2,2,3,6,12,12,12,12]) basis2 = BSplineBasis(3, [-3,-3,-3,20,30,33,33,33]) basis3 = BSplineBasis(5, [0,0,0,0,0,8,8,8,8,8]) vol = Volume(basis1, basis2, basis3) u = np.linspace( 2,12,5) v = np.linspace(-3,33,5) w = np.linspace( 0, 8,5) pt = vol(u,v,w) vol.reverse('v') pt2 = vol(u,v[::-1],w) self.assertAlmostEqual(np.linalg.norm(pt-pt2), 0.0) self.assertAlmostEqual(vol.start('v'), -3) self.assertAlmostEqual(vol.end('v'), 33) vol.reverse(2) pt2 = vol(u,v[::-1],w[::-1]) self.assertAlmostEqual(np.linalg.norm(pt-pt2), 0.0) self.assertAlmostEqual(vol.start('w'), 0) self.assertAlmostEqual(vol.end('w'), 8)
def test_reparam(self): # identity mapping, control points generated from knot vector basis1 = BSplineBasis(4, [2, 2, 2, 2, 3, 6, 7, 7, 7, 7]) basis2 = BSplineBasis(3, [-3, -3, -3, 20, 30, 31, 31, 31]) basis3 = BSplineBasis(5, [0, 0, 0, 0, 0, 8, 8, 8, 8, 8]) vol = Volume(basis1, basis2, basis3) self.assertAlmostEqual(vol.start(0), 2) self.assertAlmostEqual(vol.end(0), 7) self.assertAlmostEqual(vol.start(1), -3) self.assertAlmostEqual(vol.end(1), 31) self.assertAlmostEqual(vol.start(2), 0) self.assertAlmostEqual(vol.end(2), 8) vol.reparam((4, 10), (0, 9), (2, 3)) self.assertAlmostEqual(vol.start(0), 4) self.assertAlmostEqual(vol.end(0), 10) self.assertAlmostEqual(vol.start(1), 0) self.assertAlmostEqual(vol.end(1), 9) self.assertAlmostEqual(vol.start(2), 2) self.assertAlmostEqual(vol.end(2), 3) vol.reparam((5, 11), direction=0) self.assertAlmostEqual(vol.start(0), 5) self.assertAlmostEqual(vol.end(0), 11) self.assertAlmostEqual(vol.start(1), 0) self.assertAlmostEqual(vol.end(1), 9) self.assertAlmostEqual(vol.start(2), 2) self.assertAlmostEqual(vol.end(2), 3) vol.reparam((5, 11), direction=1) self.assertAlmostEqual(vol.start(0), 5) self.assertAlmostEqual(vol.end(0), 11) self.assertAlmostEqual(vol.start(1), 5) self.assertAlmostEqual(vol.end(1), 11) self.assertAlmostEqual(vol.start(2), 2) self.assertAlmostEqual(vol.end(2), 3) vol.reparam((5, 11), direction=2) self.assertAlmostEqual(vol.start(0), 5) self.assertAlmostEqual(vol.end(0), 11) self.assertAlmostEqual(vol.start(1), 5) self.assertAlmostEqual(vol.end(1), 11) self.assertAlmostEqual(vol.start(2), 5) self.assertAlmostEqual(vol.end(2), 11) vol.reparam((-9, 9)) self.assertAlmostEqual(vol.start(0), -9) self.assertAlmostEqual(vol.end(0), 9) self.assertAlmostEqual(vol.start(1), 0) self.assertAlmostEqual(vol.end(1), 1) self.assertAlmostEqual(vol.start(2), 0) self.assertAlmostEqual(vol.end(2), 1) vol.reparam() self.assertAlmostEqual(vol.start(0), 0) self.assertAlmostEqual(vol.end(0), 1) self.assertAlmostEqual(vol.start(1), 0) self.assertAlmostEqual(vol.end(1), 1) self.assertAlmostEqual(vol.start(2), 0) self.assertAlmostEqual(vol.end(2), 1) vol.reparam((4, 10), (0, 9), (2, 7)) vol.reparam(direction=1) self.assertAlmostEqual(vol.start(0), 4) self.assertAlmostEqual(vol.end(0), 10) self.assertAlmostEqual(vol.start(1), 0) self.assertAlmostEqual(vol.end(1), 1) self.assertAlmostEqual(vol.start(2), 2) self.assertAlmostEqual(vol.end(2), 7)
def test_reparam(self): # identity mapping, control points generated from knot vector basis1 = BSplineBasis(4, [2,2,2,2,3,6,7,7,7,7]) basis2 = BSplineBasis(3, [-3,-3,-3,20,30,31,31,31]) basis3 = BSplineBasis(5, [0,0,0,0,0,8,8,8,8,8]) vol = Volume(basis1, basis2, basis3) self.assertAlmostEqual(vol.start(0), 2) self.assertAlmostEqual(vol.end(0), 7) self.assertAlmostEqual(vol.start(1), -3) self.assertAlmostEqual(vol.end(1), 31) self.assertAlmostEqual(vol.start(2), 0) self.assertAlmostEqual(vol.end(2), 8) vol.reparam((4,10), (0,9), (2,3)) self.assertAlmostEqual(vol.start(0), 4) self.assertAlmostEqual(vol.end(0), 10) self.assertAlmostEqual(vol.start(1), 0) self.assertAlmostEqual(vol.end(1), 9) self.assertAlmostEqual(vol.start(2), 2) self.assertAlmostEqual(vol.end(2), 3) vol.reparam((5,11), direction=0) self.assertAlmostEqual(vol.start(0), 5) self.assertAlmostEqual(vol.end(0), 11) self.assertAlmostEqual(vol.start(1), 0) self.assertAlmostEqual(vol.end(1), 9) self.assertAlmostEqual(vol.start(2), 2) self.assertAlmostEqual(vol.end(2), 3) vol.reparam((5,11), direction=1) self.assertAlmostEqual(vol.start(0), 5) self.assertAlmostEqual(vol.end(0), 11) self.assertAlmostEqual(vol.start(1), 5) self.assertAlmostEqual(vol.end(1), 11) self.assertAlmostEqual(vol.start(2), 2) self.assertAlmostEqual(vol.end(2), 3) vol.reparam((5,11), direction=2) self.assertAlmostEqual(vol.start(0), 5) self.assertAlmostEqual(vol.end(0), 11) self.assertAlmostEqual(vol.start(1), 5) self.assertAlmostEqual(vol.end(1), 11) self.assertAlmostEqual(vol.start(2), 5) self.assertAlmostEqual(vol.end(2), 11) vol.reparam((-9,9)) self.assertAlmostEqual(vol.start(0), -9) self.assertAlmostEqual(vol.end(0), 9) self.assertAlmostEqual(vol.start(1), 0) self.assertAlmostEqual(vol.end(1), 1) self.assertAlmostEqual(vol.start(2), 0) self.assertAlmostEqual(vol.end(2), 1) vol.reparam() self.assertAlmostEqual(vol.start(0), 0) self.assertAlmostEqual(vol.end(0), 1) self.assertAlmostEqual(vol.start(1), 0) self.assertAlmostEqual(vol.end(1), 1) self.assertAlmostEqual(vol.start(2), 0) self.assertAlmostEqual(vol.end(2), 1) vol.reparam((4,10), (0,9), (2,7)) vol.reparam(direction=1) self.assertAlmostEqual(vol.start(0), 4) self.assertAlmostEqual(vol.end(0), 10) self.assertAlmostEqual(vol.start(1), 0) self.assertAlmostEqual(vol.end(1), 1) self.assertAlmostEqual(vol.start(2), 2) self.assertAlmostEqual(vol.end(2), 7)