Boost-Graph
view release on metacpan or search on metacpan
include/boost/graph/gursoy_atun_layout.hpp view on Meta::CPAN
diameter_initial, diameter_final,
learning_constant_initial, learning_constant_final,
vertex_index_map, dummy_property_map());
}
template <typename VertexListAndIncidenceGraph, typename Topology,
typename PositionMap>
void gursoy_atun_layout(const VertexListAndIncidenceGraph& graph,
const Topology& space,
PositionMap position,
int nsteps,
double diameter_initial,
double diameter_final = 1.0,
double learning_constant_initial = 0.8,
double learning_constant_final = 0.2)
{
gursoy_atun_layout(graph, space, position, nsteps, diameter_initial,
diameter_final, learning_constant_initial,
learning_constant_final, get(vertex_index, graph));
}
template <typename VertexListAndIncidenceGraph, typename Topology,
typename PositionMap>
void gursoy_atun_layout(const VertexListAndIncidenceGraph& graph,
const Topology& space,
PositionMap position,
int nsteps)
{
#ifndef BOOST_NO_STDC_NAMESPACE
using std::sqrt;
#endif
gursoy_atun_layout(graph, space, position, nsteps,
sqrt((double)num_vertices(graph)));
}
template <typename VertexListAndIncidenceGraph, typename Topology,
typename PositionMap>
void gursoy_atun_layout(const VertexListAndIncidenceGraph& graph,
const Topology& space,
PositionMap position)
{
gursoy_atun_layout(graph, space, position, num_vertices(graph));
}
template<typename VertexListAndIncidenceGraph, typename Topology,
typename PositionMap, typename P, typename T, typename R>
void
gursoy_atun_layout(const VertexListAndIncidenceGraph& graph,
const Topology& space,
PositionMap position,
const bgl_named_params<P,T,R>& params)
{
#ifndef BOOST_NO_STDC_NAMESPACE
using std::sqrt;
#endif
std::pair<double, double> diam(sqrt(double(num_vertices(graph))), 1.0);
std::pair<double, double> learn(0.8, 0.2);
gursoy_atun_layout(graph, space, position,
choose_param(get_param(params, iterations_t()),
num_vertices(graph)),
choose_param(get_param(params, diameter_range_t()),
diam).first,
choose_param(get_param(params, diameter_range_t()),
diam).second,
choose_param(get_param(params, learning_constant_range_t()),
learn).first,
choose_param(get_param(params, learning_constant_range_t()),
learn).second,
choose_const_pmap(get_param(params, vertex_index), graph,
vertex_index),
choose_param(get_param(params, edge_weight),
dummy_property_map()));
}
/***********************************************************
* Topologies *
***********************************************************/
template<std::size_t Dims>
class convex_topology
{
struct point
{
point() { }
double& operator[](std::size_t i) {return values[i];}
const double& operator[](std::size_t i) const {return values[i];}
private:
double values[Dims];
};
public:
typedef point point_type;
double distance(point a, point b) const
{
double dist = 0;
for (std::size_t i = 0; i < Dims; ++i) {
double diff = b[i] - a[i];
dist += diff * diff;
}
// Exact properties of the distance are not important, as long as
// < on what this returns matches real distances
return dist;
}
point move_position_toward(point a, double fraction, point b) const
{
point result;
for (std::size_t i = 0; i < Dims; ++i)
result[i] = a[i] + (b[i] - a[i]) * fraction;
return result;
}
};
template<std::size_t Dims,
typename RandomNumberGenerator = minstd_rand>
class hypercube_topology : public convex_topology<Dims>
{
typedef uniform_01<RandomNumberGenerator, double> rand_t;
( run in 0.998 second using v1.01-cache-2.11-cpan-71847e10f99 )