def getRel(tri1, tri2): rels = set() ## get triangle center center = triangle_center(*tri1) #print 'center:' , center for i in xrange(3): #print 'vertex: ', tri2[i] angle = __calAngle__(center, tri2[i]) rels.add(__getRel__(angle)) if len(rels) >= 2: scenter = Point(center) #point in shapely form edges = [[tri2[0], tri2[1]], [tri2[1], tri2[2]], [tri2[0],tri2[2]]] for edge in edges: line = LineString(edge) isectPnt = line.interpolate(line.project(scenter)) angle = __calAngle__(center, (isectPnt.x, isectPnt.y)) rels.add(__getRel__(angle)) x_direction = set() y_direction = set() for rel in rels: if rel == WEST or rel == EAST: x_direction.add(rel) else: y_direction.add(rel) return [x_direction, y_direction]
#triangle.plot.compare(plt, dic, tri) #plt.show() #print tri # create the graph based on the scenario file #graph = createGraph(tri["triangles"], tri["vertices"], tri["segments"]) segments_froset = [frozenset(v) for v in tri['segments']] graph, edges_index, edges_dirs, edges_by_tri, vertices_of_edges, edges_surface_dic, tri_by_surface, tri_neighbor_by_edge = create_graph_advanced(tri["triangles"], tri["vertices"], segments_froset, scenario_width, scenario_height) ################### Arrange graph according to the position of triangles ######### triangles_by_vertices = tri["vertices"][tri["triangles"]] pos = {} for index, triangle in enumerate(triangles_by_vertices): pos[index] = triangle_center(*triangle) edge_text_labels = {} edge_lists = [] for edge in graph.edges(): # if edge[0] > edge[1]: edge_lists.append(edge) label = graph.get_edge_data(*edge) #edge_text_labels[edge] = printRels(label['rel']) #print "label: ", label['rel'] edge_text_labels[edge] = [rel for rel in label['rel']] ################## END ########################################## #print graph.edges() #print graph.nodes()