Salut,
je cherche a utiliser la fonction fruchterman_reingold_force_directed_layout de la BGL
Mais je suis un peu perdu, je ne sais pas quel version de la fonction utilisé (elle est surchargée) et je suis perdu avec ses paramètres.
Voila ce que j’ai fait:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | struct vertex_coo_t { //2 is because we are in 2D and point type 'cause fruchterman expect ::point_type in the property convex_topology<2>::point_type position; //correct topology ? }; ... typedef adjacency_list<vecS ,vecS, undirectedS, vertex_coo_t> Graph; ... Graph g; add_edge(0, 1, g); add_edge(0, 2, g); add_edge(1, 3, g); add_edge(2, 3, g); auto propertyMap = get(vertex_coo_t, g); //no matching function auto topo = square_topology<>(600.f); fruchterman_reingold_force_directed_layout(g, propMap, topo); |
Je n’arrive pas à utiliser get pour recevoir ma propertyMap et l’utiliser dans la fonction fruchterman.
Pourtant mon appel respecte la documentation (je crois):
property_map<adjacency_list, PropertyTag>::type get(PropertyTag, adjacency_list& g)
Returns the property map object for the vertex property specified by PropertyTag. The PropertyTag must match one of the properties specified in the graph’s VertexProperty template argument.
Mes questions sont :
- Ma structure vertex_coo_t est-elle correctement utilisé ?
- Pourquoi mon appel à get ne correspond à aucune surcharge ?
- Ma structure doit avoir une valeur de type point_type1 mais convex_topology<2> est correcte ou il faudrait utiliser qqch d’autre.
- La surcharge de fruchterman que j’utilise est correcte ou il en faut une autre pour atteindre mon but ?
Je veux avoir les positions de mes vertices aléatoires avant l’appel et positionés selon la force d’attraction/repulsion après l’appel à la fonction. Problème, le paramètre graph est constant et propertyMap n’est pas une référence et n’est donc pas modifié. de plus la fonction ne retourne rien, donc je ne sais pas ou trouver le résultat (les positions de mes vertices dirigé selon les forces : force-directed)
Merci d’avance pour toute aide
-
The property map that stores the position of each vertex. It should typically be initialized with the vertices at random locations (use random_graph_layout). The type PositionMap must be a model of Lvalue Property Map such that the vertex descriptor type of Graph is convertible to its key type. Its value type must be Topology::point_type, representing the coordinates of the vertex. ↩