BGLのGraph Layoutは名前そのままグラフのレイアウトを行うアルゴリズム群.
Random LayoutやCircle Layoutなど基本的なものから,Kameda Kawaiアルゴリズムといったものまで揃ってる.
これらのアルゴリズムはTopologyと呼ばれるTraitsを持つことで,いろいろなグラフに適用可能となっている.
Topologyが満たすべき要件はたぶんこれ↓
http://www.boost.org/doc/libs/1_48_0/libs/graph/doc/topology.html
なのだが,これだけだとコンパイルエラーになるアルゴリズムがある.
graph/topology.hppのソースを見ると多分Valid Expressioは多分こんな感じになる
Expression | Type | Description |
---|---|---|
Topology::point_type | type | 空間内の座標を表す型 |
space.random_point() | point_type | 戻り値:空間内からランダムに選択した点 |
space.distance(p1, p2) | double | 戻り値:座標間の距離 |
space.move_position_toward(p1, fraction, p2) | point_type | 戻り値:p1,p2線分上の点p.p1,p:p:p2 = fraction : 1-fraction となる |
point_type::dimension | int型に変換可能な型 | 空間の次数 |
Topology::point_difference_type | type | 二つのpoint_type p1,p2の差を表す型 |
point_difference_type::dimension | int型に変換可能な型 | 空間の次数 |
space.difference(p1, p2) | point_difference_type | 戻り値:p1とp2の差 |
space.adjust(p1, delta) | point_type | 戻り値:difference(p, p1) == deltaとなるようなp |
space.pointwise_min(p1, p2) | point_type | 戻り値:成分iがmin(p1[i], p1[i])となるようなp |
space.pointwise_max(p1, p2) | point_type | 戻り値:成分iがmax(p1[i], p1[i])となるようなp |
space.norm(delta) | double | 戻り値:deltaのユークリッドノルム sqrt(delta[0]^2 + delta[1]^2 + ...) |
space.volume(delta) | double | 戻り値:deltaの各成分の積? |
あってるかは知らん
追記
これだけじゃ動かん...boundとかextendがいる模様