Пример #1
0
def check_dist_to_verts(v, or_verts, or_radius, net, poli_ang_list, modulo, mask_t):
    d = 0
    min_dist = 2.0e-5
    for j in range(modulo):
        rad = or_radius[j]
        if rad < min_dist:
            continue
        vo = or_verts[j]
        vfx = v[0]-vo[0]
        vfy = v[1]-vo[1]
        # dist_to_point = Vector((vfx, vfy)).length
        dist_to_point = length_v2((vfx, vfy))
        if dist_to_point > rad:
            continue

        polig_ang = poli_ang_list[j]
        offset = net[j][1][0]
        if len(net[j][0]) == 3:
            offset += net[j][0][0] - net[j][0][1]
        v_vo_ang = (normal_angle(atan2(vfy, vfx) - offset) % (2 * polig_ang)) - polig_ang
        rad_r = rad * cos(polig_ang)
        dist_lim = (rad_r / cos(v_vo_ang)) * (1 - mask_t)

        if dist_to_point < dist_lim:
            d = 1
            break
    return d
Пример #2
0
def check_dist_to_verts(v, or_verts, or_radius, net, poli_ang_list, poly_ang_cos_list, mask_t):
    d = 0
    min_dist = 2.0e-5
    for rad, vo, polig_ang, polig_ang_cos, v_net in zip(or_radius, or_verts, poli_ang_list, poly_ang_cos_list, net):
        if rad < min_dist:
            continue

        vfx = v[0]-vo[0]
        vfy = v[1]-vo[1]

        dist_to_point = length_v2((vfx, vfy))
        if dist_to_point > rad:
            continue

        offset = v_net[1][0]
        if len(v_net[0]) == 3:
            offset += v_net[0][0] - v_net[0][1]
        v_vo_ang = (normal_angle(atan2(vfy, vfx) - offset) % (2 * polig_ang)) - polig_ang
        rad_r = rad * polig_ang_cos
        dist_lim = (rad_r / cos(v_vo_ang)) * (1 - mask_t)

        if dist_to_point < dist_lim:
            d = 1
            break
    return d
Пример #3
0
def side_edges_angles(net2, verts_in, edges_in, radius):
    for ed in edges_in:
        s0 = ed[0]
        s1 = ed[1]
        if s0 > len(verts_in) - 1 or s1 > len(verts_in) - 1:
            break
        v0 = verts_in[s0]
        v1 = verts_in[s1]
        vfx = v1[0]-v0[0]
        vfy = v1[1]-v0[1]
        an = atan2(vfy, vfx) + pi
        an2 = an + pi
        r1 = radius[s0]
        r2 = radius[s1]
        dist = length_v2((vfx, vfy))
        beta = asin(min(max((r1-r2)/dist, -1), 1))

        net2[s0][0].append(normal_angle(an + 0.5*pi))
        net2[s0][0].append(normal_angle(an + 0.5*pi + beta))
        net2[s0][0].append(normal_angle(an + 1.5*pi - beta))
        net2[s1][0].append(normal_angle(an2 + 0.5*pi))
        net2[s1][0].append(normal_angle(an2 + 0.5*pi - beta))
        net2[s1][0].append(normal_angle(an2 + 1.5*pi + beta))