def test_flattening(): curve = Bezier([(0, 0), (1, 1), (2, -1), (3, 0)]) assert len(list(curve.flattening(1.0, segments=4))) == 5 assert len(list(curve.flattening(0.1, segments=4))) == 7
def test_reverse(): curve = Bezier(DEFPOINTS3D) new = curve.reverse() assert curve.control_points[0] == new.control_points[-1]
def test_transform_interface(): curve = Bezier(DEFPOINTS3D) new = curve.transform(Matrix44.translate(1, 2, 3)) assert new.control_points[0] == curve.control_points[0] + (1, 2, 3)
def dbezier(): curve = Bezier(DEFPOINTS3D) return list(curve.derivatives(curve.params(40)))
def test_points_3d(): bcurve = Bezier(DEFPOINTS3D) points = list(bcurve.approximate(40)) for point, chk in zip(points, iter_dbezier(DBEZIER3D, 0)): assert point.isclose(chk)
def test_point_and_tangent_2d(): dbcurve = Bezier(DEFPOINTS2D) for index, (chk_pnt, chk_d1) in enumerate(zip(POINTS2D, TANGENTS2D)): pnt, d1, d2 = dbcurve.derivative(index * .1) assert pnt.isclose(chk_pnt) assert d1.isclose(chk_d1)
def test_bezier_objects_are_immutable(): curve = Bezier(DEFPOINTS3D) with pytest.raises(TypeError): curve.control_points[0] = (1, 2, 3)
def test_points_2d(): bcurve = Bezier(DEFPOINTS2D) for index, chk in enumerate(POINTS2D): assert bcurve.point(index * .1).isclose(chk)