def test_invalid_order_count_combination(): count = 4 order = 5 with pytest.raises(ezdxf.DXFValueError): required_knot_values(count, order) with pytest.raises(ezdxf.DXFValueError): list(control_frame_knots(n=count - 1, p=order - 1, t_vector=[]))
def test_invalid_order_count_combination(): count = 4 order = 5 with pytest.raises(ezdxf.DXFValueError): required_knot_values(count, order) with pytest.raises(ezdxf.DXFValueError): list(knots_from_parametrization(n=count - 1, p=order - 1, t=[]))
def test_nurbs_arc_parameter_quarter_arc_4_segments(): control_points, weights, knots = nurbs_arc_parameters(start_angle=0, end_angle=math.pi / 2, segments=4) assert len(control_points) == 9 assert len(weights) == len(control_points) assert len(knots) == required_knot_values(len(control_points), order=3)
def check_knots(count: int, order: int, knots: List[float]): assert len(knots) == required_knot_values(count, order) assert len(set( knots[:order])) == 1, "first order elements have to be equal" assert len(set( knots[-order:])) == 1, "last order elements have to be equal" for k1, k2 in zip(knots, knots[1:]): assert k1 <= k2
def test_control_frame_knot_values(fit_points): count = len(fit_points) n = count - 1 degrees = (2, 3, 4) if len(fit_points) > 4 else (2, 3) for p in degrees: # degree order = p + 1 t_vector = uniform_t_vector(fit_points) knots = list(control_frame_knots(n, p, t_vector)) assert len(knots) == required_knot_values(count, order) assert len(set( knots[:order])) == 1, 'first order elements have to be equal' assert len(set( knots[-order:])) == 1, 'last order elements have to be equal' for k1, k2 in zip(knots, knots[1:]): assert k1 <= k2
def test_nurbs_arc_parameter_quarter_arc_1_segment(): control_points, weights, knots = nurbs_arc_parameters(start_angle=0, end_angle=math.pi / 2, segments=1) assert len(control_points) == 3 assert len(weights) == len(control_points) assert len(knots) == required_knot_values(len(control_points), order=3) assert control_points[0].isclose((1, 0, 0)) assert control_points[1].isclose((1, 1, 0)) assert control_points[2].isclose((0, 1, 0)) assert weights[0] == 1.0 assert weights[1] == math.cos(math.pi / 4) assert weights[2] == 1.0
def test_uniform_knot_order_4(): result = uniform_knot_vector(9, 4, normalize=False) assert len(result) == required_knot_values(9, 4) assert result == uniform_order4 assert uniform_knot_vector(9, 4, normalize=True) == _normalize( uniform_order4, 12.0)
def test_uniform_knot_order_3(): result = uniform_knot_vector(7, 3, normalize=False) assert len(result) == required_knot_values(7, 3) assert result == uniform_order3 assert uniform_knot_vector(7, 3, normalize=True) == _normalize( uniform_order3, 9.0)
def test_uniform_knot_order_2(): result = uniform_knot_vector(5, 2, normalize=False) assert len(result) == required_knot_values(5, 2) assert result == uniform_order2 assert uniform_knot_vector(5, 2, normalize=True) == _normalize( uniform_order2, 6.0)
def test_uniform_knot_order_4(): result = knot_uniform(9, 4) assert len(result) == required_knot_values(9, 4) assert result == uniform_order4
def test_uniform_knot_order_3(): result = knot_uniform(7, 3) assert len(result) == required_knot_values(7, 3) assert result == uniform_order3
def test_uniform_knot_order_2(): result = knot_uniform(5, 2) assert len(result) == required_knot_values(5, 2) assert result == uniform_order2
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