void random_graph_layout (const Graph& g, PositionMap position_map, typename property_traits<PositionMap>::value_type const& origin, typename property_traits<PositionMap>::value_type const& extent, RandomNumberGenerator& gen) { typedef typename property_traits<PositionMap>::value_type Point; typedef typename graph::point_traits<Point>::component_type Dimension; typedef typename mpl::if_<is_integral<Dimension>, uniform_int<Dimension>, uniform_real<Dimension> >::type distrib_t; typedef typename mpl::if_<is_integral<Dimension>, RandomNumberGenerator&, uniform_01<RandomNumberGenerator, Dimension> > ::type gen_t; gen_t my_gen(gen); distrib_t x(origin[0], origin[0] + extent[0]); distrib_t y(origin[1], origin[1] + extent[1]); typename graph_traits<Graph>::vertex_iterator vi, vi_end; for(tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi) { position_map[*vi][0] = x(my_gen); position_map[*vi][1] = y(my_gen); } }
void random_graph_layout(const Graph& g, PositionMap position_map, Dimension minX, Dimension maxX, Dimension minY, Dimension maxY, RandomNumberGenerator& gen) { typedef typename mpl::if_<is_integral<Dimension>, uniform_int<Dimension>, uniform_real<Dimension> >::type distrib_t; typedef typename mpl::if_<is_integral<Dimension>, RandomNumberGenerator&, uniform_01<RandomNumberGenerator, Dimension> > ::type gen_t; gen_t my_gen(gen); distrib_t x(minX, maxX); distrib_t y(minY, maxY); typename graph_traits<Graph>::vertex_iterator vi, vi_end; for(tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi) { position_map[*vi].x = x(my_gen); position_map[*vi].y = y(my_gen); } }