Ejemplo n.º 1
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
Ejemplo n.º 2
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
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)
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)