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
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
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))