Пример #1
0
def  route_with_lines(e,pts):
    assert hasattr(e,'view')
    tail_pos = intersectR(e.v[0].view,topt=pts[1])
    head_pos = intersectR(e.v[1].view,topt=pts[-2])
    pts[0] = tail_pos
    pts[-1] = head_pos
    e.view.head_angle = getangle(pts[-2],pts[-1])
Пример #2
0
def route_with_lines(e, pts):
    assert hasattr(e, "view")
    tail_pos = intersectR(e.v[0].view, topt=pts[1])
    head_pos = intersectR(e.v[1].view, topt=pts[-2])
    pts[0] = tail_pos
    pts[-1] = head_pos
    e.view.head_angle = getangle(pts[-2], pts[-1])
Пример #3
0
def _gen_point(p1, p2, new_distance):
    from grandalf.utils.geometry import new_point_at_distance
    initial_distance = distance = sqrt((p2[0] - p1[0]) ** 2 + (p2[1] - p1[1]) ** 2)
    if initial_distance < 1e-10:
        return None
    if distance > new_distance:
        distance = distance - new_distance
    else:
        return None
    angle = getangle(p1, p2)
    new = new_point_at_distance(p1, distance, angle)
    return new
Пример #4
0
def _gen_point(p1, p2, new_distance):
    from grandalf.utils.geometry import new_point_at_distance
    initial_distance = distance = sqrt((p2[0] - p1[0])**2 + (p2[1] - p1[1])**2)
    if initial_distance < 1e-10:
        return None
    if distance > new_distance:
        distance = distance - new_distance
    else:
        return None
    angle = getangle(p1, p2)
    new = new_point_at_distance(p1, distance, angle)
    return new
Пример #5
0
def  route_with_lines(e,pts):
    assert hasattr(e,'view')
    try:
        tail_pos = intersectR(e.v[0].view, topt=pts[1])
    except ValueError:
        # TODO: Create a test case to reproduce it and submit upstream.
        tail_pos = pts[1]
    try:
        head_pos = intersectR(e.v[1].view, topt=pts[-2])
    except ValueError:
        # TODO: Create a test case to reproduce it and submit upstream.
        head_pos = pts[-2]

    pts[0] = tail_pos
    pts[-1] = head_pos
    e.view.head_angle = getangle(pts[-2],pts[-1])
Пример #6
0
    def _route_edges(edge, points):
        """
        A simple edge routing algorithm.

        :param edge:
        :param points:
        :return:
        """

        # compute new beginning and ending
        src = edge.v[0].view
        src_width, src_height, (src_x, src_y) = src.w, src.h, src.xy

        dst = edge.v[1].view
        dst_width, dst_height, (dst_x, dst_y) = dst.w, dst.h, dst.xy

        start_point = (src_x, src_y + src_height / 2)
        end_point = (dst_x, dst_y - dst_height / 2)

        points[-1] = start_point
        points[0] = end_point

        edge.view.head_angle = getangle(points[-2], points[-1])