def _get_arc_graph(core_parse, circle, circle_variable, circle_points):
    """
    Directional arc graph.

    :param core_parse:
    :param circle:
    :return:
    """
    eps = CIRCLE_EPS
    arc_graph = nx.DiGraph()
    for key0, key1 in itertools.permutations(circle_points, 2):
        p0, p1 = circle_points[key0], circle_points[key1]
        arc = instantiators['arc'](circle, p0, p1)
        v0, v1 = core_parse.point_variables[key0], core_parse.point_variables[
            key1]
        var = FormulaNode(signatures['Arc'], [circle_variable, v0, v1])
        if instance_exists(core_parse, arc):
            arc_points = {}
            for key in set(circle_points).difference({key0, key1}):
                point = circle_points[key]
                if distance_between_arc_and_point(arc, point) <= eps:
                    arc_points[key] = point
            arc_graph.add_edge(key0,
                               key1,
                               instance=arc,
                               points=arc_points,
                               variable=var)
    return arc_graph
Ejemplo n.º 2
0
def _arc_exists(diagram_parse, arc):
    eps = 4
    multiplier = 1
    assert isinstance(diagram_parse, CoreParse)
    pixels = diagram_parse.primitive_parse.image_segment_parse.diagram_image_segment.pixels
    near_pixels = set(pixel for pixel in pixels if distance_between_arc_and_point(arc, pixel) <= eps)
    length = arc_length(arc)
    ratio = float(len(near_pixels))/length
    if ratio < multiplier:
        return False
    return True
Ejemplo n.º 3
0
def _arc_exists(diagram_parse, arc):
    eps = 4
    multiplier = 1
    assert isinstance(diagram_parse, CoreParse)
    pixels = diagram_parse.primitive_parse.image_segment_parse.diagram_image_segment.pixels
    near_pixels = set(pixel for pixel in pixels
                      if distance_between_arc_and_point(arc, pixel) <= eps)
    length = arc_length(arc)
    ratio = float(len(near_pixels)) / length
    if ratio < multiplier:
        return False
    return True
Ejemplo n.º 4
0
def _get_arc_graph(diagram_parse, circle, circle_points):
    """
    Directional arc graph.

    :param diagram_parse:
    :param circle:
    :return:
    """
    eps = CIRCLE_EPS
    arc_graph = nx.DiGraph()
    for key0, key1 in itertools.permutations(circle_points, 2):
        p0, p1 = circle_points[key0], circle_points[key1]
        arc = instantiators['arc'](circle, p0, p1)
        if instance_exists(diagram_parse, arc):
            arc_points = {}
            for key in set(circle_points).difference({key0, key1}):
                point = circle_points[key]
                if distance_between_arc_and_point(arc, point) <= eps:
                    arc_points[key] = point
            arc_graph.add_edge(key0, key1, instance=arc, points=arc_points)
    return arc_graph
Ejemplo n.º 5
0
def _get_arc_graph(core_parse, circle, circle_variable, circle_points):
    """
    Directional arc graph.

    :param core_parse:
    :param circle:
    :return:
    """
    eps = CIRCLE_EPS
    arc_graph = nx.DiGraph()
    for key0, key1 in itertools.permutations(circle_points, 2):
        p0, p1 = circle_points[key0], circle_points[key1]
        arc = instantiators['arc'](circle, p0, p1)
        v0, v1 = core_parse.point_variables[key0], core_parse.point_variables[key1]
        var = FormulaNode(signatures['Arc'], [circle_variable, v0, v1])
        if instance_exists(core_parse, arc):
            arc_points = {}
            for key in set(circle_points).difference({key0, key1}):
                point = circle_points[key]
                if distance_between_arc_and_point(arc, point) <= eps:
                    arc_points[key] = point
            arc_graph.add_edge(key0, key1, instance=arc, points=arc_points, variable=var)
    return arc_graph