コード例 #1
0
def draw_angle2(image,
                angle,
                offset=(0, 0),
                color=(0, 0, 255),
                thickness=1,
                color2=(255, 0, 0),
                thickness2=1):
    line0 = instantiators['line'](angle.b, angle.a)
    line1 = instantiators['line'](angle.b, angle.c)
    # draw_line(image, line0, offset=offset, color=color, thickness=thickness)
    # draw_line(image, line1, offset=offset, color=color, thickness=thickness)
    # radius = 0.3 * min(line_length(line0), line_length(line1))
    radius = 12
    circle = instantiators['circle'](angle.b, radius)
    # FIXME : this arc definition is broken. Okay for now, but needs to fix.

    arc = instantiators['arc'](circle, angle.a, angle.c)
    caa = cartesian_angle(arc.circle.center, arc.a) * 180 / np.pi
    cab = cartesian_angle(arc.circle.center, arc.b) * 180 / np.pi
    if caa > cab:
        caa -= 360
    if cab - caa > 95:
        return image
    center = tuple(round_vector(np.array(arc.circle.center) + offset))
    radius = int(round(arc.circle.radius))
    return cv2.ellipse(image, center, (radius, radius), 0, caa, cab, color2,
                       thickness2)
コード例 #2
0
ファイル: draw_on_image.py プロジェクト: synpon/geosolver
def draw_arc(image, arc, offset=(0, 0), color=(0, 0, 255), thickness=1):
    caa = cartesian_angle(arc.circle.center, arc.a) * 180/np.pi
    cab = cartesian_angle(arc.circle.center, arc.b) * 180/np.pi
    if caa > cab:
        caa -= 360
    center = tuple(round_vector(np.array(arc.circle.center) + offset))
    radius = int(round(arc.circle.radius))
    cv2.ellipse(image, center, (radius, radius), 0, caa, cab, color, thickness)
コード例 #3
0
def label_distance_to_angle(label_point, angle):
    """
    If outside of the convex area, then distance is very high.
    :param point:
    :param angle:
    :return:
    """
    caa = cartesian_angle(angle.b, angle.a)
    cam = cartesian_angle(angle.b, label_point)
    cac = cartesian_angle(angle.b, angle.c)
    dm = signed_distance_between_cartesian_angles(cam, caa)
    dc = signed_distance_between_cartesian_angles(cac, caa)
    cav = caa + dc/2.0
    if cav > 2*np.pi:
        cav -= 2*np.pi
    cad = min(signed_distance_between_cartesian_angles(cam, cav), signed_distance_between_cartesian_angles(cav, cam))
    dist = distance_between_points(label_point, angle.b)
    if dc > dm:
        return dist*(1+cad+dc)
    else:
        return 100*dist  # effectively infinite
コード例 #4
0
ファイル: label_distances.py プロジェクト: IshJ/EquationTree
def label_distance_to_angle(label_point, angle):
    """
    If outside of the convex area, then distance is very high.
    :param point:
    :param angle:
    :return:
    """
    caa = cartesian_angle(angle.b, angle.a)
    cam = cartesian_angle(angle.b, label_point)
    cac = cartesian_angle(angle.b, angle.c)
    dm = signed_distance_between_cartesian_angles(cam, caa)
    dc = signed_distance_between_cartesian_angles(cac, caa)
    cav = caa + dc / 2.0
    if cav > 2 * np.pi:
        cav -= 2 * np.pi
    cad = min(signed_distance_between_cartesian_angles(cam, cav),
              signed_distance_between_cartesian_angles(cav, cam))
    dist = distance_between_points(label_point, angle.b)
    if dc > dm:
        return dist * (1 + cad + dc)
    else:
        return 100 * dist  # effectively infinite
コード例 #5
0
def Parallel(line_0, line_1):
    a0 = cartesian_angle(*line_0)
    a1 = cartesian_angle(*line_1) + np.pi / 2
    da = horizontal_angle(signed_distance_between_cartesian_angles(a0, a1))
    return Equals(da, np.pi / 2)
コード例 #6
0
def Perpendicular(l0, l1):
    # return Equals((l0.b.y-l0.a.y)*(l1.b.y-l1.a.y), (l0.a.x-l0.b.x)*(l1.b.x-l1.a.x))
    a0 = cartesian_angle(*l0)
    a1 = cartesian_angle(*l1)
    da = horizontal_angle(signed_distance_between_cartesian_angles(a0, a1))
    return Equals(da, np.pi / 2)