def _circle_exists(diagram_parse, circle): eps = 4 multiplier = 2 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_circle_and_point(circle, pixel) <= eps) length = circumference(circle) if len(near_pixels) < multiplier*length: return False return True
def _circle_exists(diagram_parse, circle): eps = 4 multiplier = 2 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_circle_and_point(circle, pixel) <= eps) length = circumference(circle) if len(near_pixels) < multiplier * length: return False return True
def _length_sum(partial_primitives): """ Computes the sum of squareroot of sum of lengths. This way, longer lines / bigger circles are preferred. :param partial_primitives: :return: """ if len(partial_primitives) == 0: return 0 total = 0 for primitive in partial_primitives.values(): if isinstance(primitive, instantiators['circle']): total += circumference(primitive) elif isinstance(primitive, instantiators['line']): pass else: raise Exception() return total