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])
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])
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
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
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])
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])