Beispiel #1
0
def test_bezire4p_tangents_2d():
    dbcurve = Bezier4P(DEFPOINTS2D)
    for index, epoint in enumerate(TANGENTS2D):
        etx, ety = epoint
        d1 = dbcurve.tangent(index * .1)
        assert equals_almost(etx, d1[0], places=3)
        assert equals_almost(ety, d1[1], places=3)
Beispiel #2
0
def test_derivative_1(dbezier):
    for rpoint, epoint in iter_data(dbezier, 1):
        epx, epy, epz = epoint
        rpx, rpy, rpz = rpoint
        assert equals_almost(epx, rpx)
        assert equals_almost(epy, rpy)
        assert equals_almost(epz, rpz)
Beispiel #3
0
def test_points_2d_2():
    dbcurve = DBezier(DEFPOINTS2D)
    for index, epoint in enumerate(POINTS2D):
        epx, epy = epoint
        pnt, d1, d2 = dbcurve.point(index * .1)
        assert equals_almost(epx, pnt[0], places=3)
        assert equals_almost(epy, pnt[1], places=3)
Beispiel #4
0
def test_bezier4p_points_2d():
    bcurve = Bezier4P(DEFPOINTS2D)
    for index, epoint in enumerate(POINTS2D):
        epx, epy = epoint
        rpx, rpy, rpz = bcurve.point(index * .1)
        assert equals_almost(epx, rpx, places=3) is True
        assert equals_almost(epy, rpy, places=3) is True
Beispiel #5
0
def test_dbspline_derivative_2(dbspline):
    for rpoint, epoint in iter_data(dbspline, 2):
        epx, epy, epz = epoint
        rpx, rpy, rpz = rpoint
        assert equals_almost(epx, rpx)
        assert equals_almost(epy, rpy)
        assert equals_almost(epz, rpz)
Beispiel #6
0
def test_tangents_2d():
    dbcurve = DBezier(DEFPOINTS2D)
    for index, epoint in enumerate(TANGENTS2D):
        etx, ety = epoint
        pnt, d1, d2 = dbcurve.point(index * .1)
        assert equals_almost(etx, d1[0], places=3)
        assert equals_almost(ety, d1[1], places=3)
Beispiel #7
0
def test_points(dbezier):
    for rpoint, epoint in iter_data(dbezier, 0):
        epx, epy, epz = epoint
        rpx, rpy, rpz = rpoint
        assert equals_almost(epx, rpx)
        assert equals_almost(epy, rpy)
        assert equals_almost(epz, rpz)
Beispiel #8
0
def test_dbspline_points(dbspline):
    for rpoint, epoint in iter_data(dbspline, 0):
        epx, epy, epz = epoint
        rpx, rpy, rpz = rpoint
        assert equals_almost(epx, rpx)
        assert equals_almost(epy, rpy)
        assert equals_almost(epz, rpz)
Beispiel #9
0
def test_check_values():
    test_points = [(0., 0.), (1., 2.), (3., 1.), (5., 3.)]
    spline = bspline_control_frame(test_points, degree=3, method='distance')
    result = list(spline.approximate(49))
    assert len(result) == 50
    for p1, p2 in zip(result, expected):
        assert equals_almost(p1[0], p2[0], 4)
        assert equals_almost(p1[1], p2[1], 4)
Beispiel #10
0
 def check(y, x1, x2):
     result = circle.get_x(y)
     self.assertTrue(result)
     # order of results unknown
     v1 = equals_almost(result[0], x1, 4) and equals_almost(
         result[1], x2, 4)
     v2 = equals_almost(result[0], x2, 4) and equals_almost(
         result[1], x1, 4)
     return v1 or v2
Beispiel #11
0
 def check(x, y1, y2):
     result = circle.get_y(x)
     self.assertTrue(result)
     # order of results unknown
     v1 = equals_almost(result[0], y1, 4) and equals_almost(
         result[1], y2, 4)
     v2 = equals_almost(result[0], y2, 4) and equals_almost(
         result[1], y1, 4)
     return v1 or v2
Beispiel #12
0
def test_points_3d():
    bcurve = Bezier(DEFPOINTS3D)
    points = list(bcurve.approximate(40))

    for rpoint, epoint in zip(points, iter_dbezier(DBEZIER3D, 0)):
        epx, epy, epz = epoint
        rpx, rpy, rpz = rpoint
        assert equals_almost(epx, rpx)
        assert equals_almost(epy, rpy)
        assert equals_almost(epz, rpz)
Beispiel #13
0
def test_bspine_points():
    curve = BSpline(DEFPOINTS, order=3)
    points = list(curve.approximate(40))

    for rpoint, epoint in zip(points, iter_points(DBSPLINE, 0)):
        epx, epy, epz = epoint
        rpx, rpy, rpz = rpoint
        assert equals_almost(epx, rpx)
        assert equals_almost(epy, rpy)
        assert equals_almost(epz, rpz)
Beispiel #14
0
def test_rbsplineu():
    curve = BSplineU(DEFPOINTS, order=3, weights=DEFWEIGHTS)
    expected = RBSPLINEU
    points = list(curve.approximate(40))

    for rpoint, epoint in zip(points, expected):
        epx, epy, epz = epoint
        rpx, rpy, rpz = rpoint
        assert equals_almost(epx, rpx)
        assert equals_almost(epy, rpy)
        assert equals_almost(epz, rpz)
Beispiel #15
0
 def test_touch(testnum, x, y, _angle, places=7):
     result = True
     ray = Ray2D((x, y), angle=_angle)
     points = circle.intersect_ray(ray, places)
     if len(points) != 1:
         result = False
     else:
         point = points[0]
         # print ("{0}: x= {1:.{places}f} y= {2:.{places}f} : x'= {3:.{places}f} y' = {4:.{places}f}".format(testnum, x, y, point[0], point[1], places=places))
         if not equals_almost(point[0], x, 4): result = False
         if not equals_almost(point[1], y, 4): result = False
     return result
Beispiel #16
0
def equal_vector(v1, v2, precision=4):
    if len(v1) != len(v2):
        return False
    for index in range(len(v1)):
        if not equals_almost(v1[index], v2[index], precision):
            return False
    return True
Beispiel #17
0
def test_arc_from_2p_angle_complex():
    p1 = (-15.73335, 10.98719)
    p2 = (-12.67722, 8.76554)
    angle = 55.247230
    arc = Arc.from_2p_angle(start_point=p1, end_point=p2, angle=angle)

    arc_result = Arc(
        center=(-12.08260, 12.79635),
        radius=4.07443,
        start_angle=-153.638906,
        end_angle=-98.391676,
    )

    assert almost_equal_points(arc.center, arc_result.center, places=5)
    assert equals_almost(arc.radius, arc_result.radius, places=5)
    assert equals_almost(arc.start_angle, arc_result.start_angle, places=3)
    assert equals_almost(arc.end_angle, arc_result.end_angle, places=3)
Beispiel #18
0
def test_arc_from_3p():
    p1 = (-15.73335, 10.98719)
    p2 = (-12.67722, 8.76554)
    p3 = (-8.00817, 12.79635)
    arc = Arc.from_3p(start_point=p1, end_point=p2, def_point=p3)

    arc_result = Arc(
        center=(-12.08260, 12.79635),
        radius=4.07443,
        start_angle=-153.638906,
        end_angle=-98.391676,
    )

    assert almost_equal_points(arc.center, arc_result.center, places=5)
    assert equals_almost(arc.radius, arc_result.radius, places=5)
    assert equals_almost(arc.start_angle, arc_result.start_angle, places=3)
    assert equals_almost(arc.end_angle, arc_result.end_angle, places=3)
Beispiel #19
0
def test_spatial_arc_from_3p():
    start_point_wcs = Vector(0, 1, 0)
    end_point_wcs = Vector(1, 0, 0)
    def_point_wcs = Vector(0, 0, 1)

    ucs = UCS.from_x_axis_and_point_in_xy(origin=def_point_wcs,
                                          axis=end_point_wcs - def_point_wcs,
                                          point=start_point_wcs)
    start_point_ucs = ucs.from_wcs(start_point_wcs)
    end_point_ucs = ucs.from_wcs(end_point_wcs)
    def_point_ucs = Vector(0, 0)

    arc = Arc.from_3p(start_point_ucs, end_point_ucs, def_point_ucs)
    dwg = ezdxf.new('R12')
    msp = dwg.modelspace()

    dxf_arc = arc.add_to_layout(msp, ucs)
    assert dxf_arc.dxftype() == 'ARC'
    assert equals_almost(dxf_arc.dxf.radius, 0.81649658)
    assert equals_almost(dxf_arc.dxf.start_angle, -30.)
    assert equals_almost(dxf_arc.dxf.end_angle, -150.)
    assert almost_equal_points(dxf_arc.dxf.extrusion,
                               (0.57735027, 0.57735027, 0.57735027))
Beispiel #20
0
def test_arc_from_2p_angle_simple():
    p1 = (2, 1)
    p2 = (0, 3)
    angle = 90

    arc = Arc.from_2p_angle(start_point=p1, end_point=p2, angle=angle)
    assert almost_equal_points(arc.center, Vector(0, 1))
    assert equals_almost(arc.radius, 2)
    assert equals_almost(arc.start_angle, 0)
    assert equals_almost(arc.end_angle, 90)

    arc = Arc.from_2p_angle(start_point=p2, end_point=p1, angle=angle)
    assert almost_equal_points(arc.center, Vector(2, 3))
    assert equals_almost(arc.radius, 2)
    assert equals_almost(arc.start_angle, 180)
    assert equals_almost(arc.end_angle, -90)
Beispiel #21
0
def test_arc_from_2p_radius():
    p1 = (2, 1)
    p2 = (0, 3)
    radius = 2

    arc = Arc.from_2p_radius(start_point=p1, end_point=p2, radius=radius)
    assert almost_equal_points(arc.center, Vector(0, 1))
    assert equals_almost(arc.radius, radius)
    assert equals_almost(arc.start_angle, 0)
    assert equals_almost(arc.end_angle, 90)

    arc = Arc.from_2p_radius(start_point=p2, end_point=p1, radius=radius)
    assert almost_equal_points(arc.center, Vector(2, 3))
    assert equals_almost(arc.radius, radius)
    assert equals_almost(arc.start_angle, 180)
    assert equals_almost(arc.end_angle, -90)
Beispiel #22
0
def equal_matrix(m1, m2, precision=4):
    for row in range(4):
        for col in range(4):
            if not equals_almost(m1[row, col], m2[row, col], precision):
                return False
    return True
Beispiel #23
0
def equal_points_almost(p1, p2, places=7):
    return equals_almost(p1[0], p2[0], places) and equals_almost(
        p1[1], p2[1], places)