Пример #1
0
    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)
Пример #2
0
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)
Пример #3
0
def make_knots(count, degree):
    return tuple(open_uniform_knot_vector(count, order=degree + 1))
Пример #4
0
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)
Пример #5
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)
Пример #6
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)
Пример #7
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