def test_edges(self): (umin, umax, vmin, vmax) = Surface().edges() # check controlpoints self.assertAlmostEqual(umin[0, 0], 0) self.assertAlmostEqual(umin[0, 1], 0) self.assertAlmostEqual(umin[1, 0], 0) self.assertAlmostEqual(umin[1, 1], 1) self.assertAlmostEqual(umax[0, 0], 1) self.assertAlmostEqual(umax[0, 1], 0) self.assertAlmostEqual(umax[1, 0], 1) self.assertAlmostEqual(umax[1, 1], 1) self.assertAlmostEqual(vmin[0, 0], 0) self.assertAlmostEqual(vmin[0, 1], 0) self.assertAlmostEqual(vmin[1, 0], 1) self.assertAlmostEqual(vmin[1, 1], 0) # check a slightly more general surface cp = [[0, 0], [.5, -.5], [1, 0], [-.6, 1], [1, 1], [2, 1.4], [0, 2], [.8, 3], [2, 2.4]] surf = Surface(BSplineBasis(3), BSplineBasis(3), cp) edg = surf.edges() u = np.linspace(0, 1, 9) v = np.linspace(0, 1, 9) pt = surf(0, v) pt2 = edg[0](v) self.assertAlmostEqual(np.linalg.norm(pt - pt2), 0.0) pt = surf(1, v) pt2 = edg[1](v) self.assertAlmostEqual(np.linalg.norm(pt - pt2), 0.0) pt = surf(u, 0).reshape(9, 2) pt2 = edg[2](u) self.assertAlmostEqual(np.linalg.norm(pt - pt2), 0.0) pt = surf(u, 1).reshape(9, 2) pt2 = edg[3](u) self.assertAlmostEqual(np.linalg.norm(pt - pt2), 0.0)