def set_open_uniform(self, control_points: Sequence['Vertex'], degree: int = 3) -> None: """ Open B-spline with uniform knot vector, start and end at your first and last control points. """ self.dxf.flags = 0 # clear all flags self.dxf.degree = degree self.control_points = control_points self.knots = open_uniform_knot_vector(len(control_points), degree + 1)
def test_bspline_basis_vector(): degree = 3 count = 10 knots = list(open_uniform_knot_vector(count, order=degree + 1)) max_t = max(knots) basis_func = Basis(knots=knots, order=degree + 1, count=count) for u in (0, 2., 2.5, 3.5, 4., max_t): basis = bspline_basis_vector(u, count=count, degree=degree, knots=knots) basis2 = basis_func.basis_vector(u) assert len(basis) == len(basis2) for v1, v2 in zip(basis, basis2): assert isclose(v1, v2)
def make_knots(count, degree): return tuple(open_uniform_knot_vector(count, order=degree + 1))
def test_open_uniform_knot_order_4(): result = open_uniform_knot_vector(9, 4, normalize=False) assert len(result) == required_knot_values(9, 4) assert result == open_uniform_order4 assert open_uniform_knot_vector(9, 4, normalize=True) == _normalize( open_uniform_order4, 6.0)
def test_open_uniform_knot_order_3(): result = open_uniform_knot_vector(7, 3, normalize=False) assert len(result) == required_knot_values(7, 3) assert result == open_uniform_order3 assert open_uniform_knot_vector(7, 3, normalize=True) == _normalize( open_uniform_order3, 5.0)
def test_open_uniform_knot_order_2(): result = open_uniform_knot_vector(5, 2, normalize=False) assert len(result) == required_knot_values(5, 2) assert result == open_uniform_order2 assert open_uniform_knot_vector(5, 2, normalize=True) == _normalize( open_uniform_order2, 4.0)
def test_open_uniform_knot_order_4(): result = open_uniform_knot_vector(9, 4) assert len(result) == required_knot_values(9, 4) assert result == open_uniform_order4