12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #ifndef BOOST_GRAPH_CIRCLE_LAYOUT_HPP
- #define BOOST_GRAPH_CIRCLE_LAYOUT_HPP
- #include <boost/config/no_tr1/cmath.hpp>
- #include <boost/math/constants/constants.hpp>
- #include <utility>
- #include <boost/graph/graph_traits.hpp>
- #include <boost/graph/iteration_macros.hpp>
- #include <boost/graph/topology.hpp>
- #include <boost/static_assert.hpp>
- namespace boost {
-
- template<typename VertexListGraph, typename PositionMap, typename Radius>
- void
- circle_graph_layout(const VertexListGraph& g, PositionMap position,
- Radius radius)
- {
- BOOST_STATIC_ASSERT (property_traits<PositionMap>::value_type::dimensions >= 2);
- const double pi = boost::math::constants::pi<double>();
- #ifndef BOOST_NO_STDC_NAMESPACE
- using std::sin;
- using std::cos;
- #endif
- typedef typename graph_traits<VertexListGraph>::vertices_size_type
- vertices_size_type;
- vertices_size_type n = num_vertices(g);
-
- vertices_size_type i = 0;
- double two_pi_over_n = 2. * pi / n;
- BGL_FORALL_VERTICES_T(v, g, VertexListGraph) {
- position[v][0] = radius * cos(i * two_pi_over_n);
- position[v][1] = radius * sin(i * two_pi_over_n);
- ++i;
- }
- }
- }
- #endif
|