ここでは簡単に仕組みを説明します。そうしないと、使い方がわからないと思いますので。
このアプレットで作るグラフは、上の条件のものしか作れないようになっています。(そのはずです。)
さて、実際の使い方を説明します。
上半分が、グラフを作る部分、下半分が、実際の絵が表示される部分です。
右のCLEARボタンは、グラフを初期状態に戻します。
DRAWボタンは、Circle
Packingの絵を描きます。
グラフについて説明します。
まず、グラフの点(■)について説明します。
緑色の点は、内部の点を表します。
水色の点は、内部の点と直接つながっている外側の点を表します。
黄色の点は、内部の点と直接つながっていない外側の点を表します。
次に、辺について説明します。
青色の辺は、内部の辺を表します。
赤色の辺は、外部の辺を表します。
次に、どのようにグラフを作っていくのかを説明します。
深いことは考えず、適当にいろいろ試してみてください。
特に、描く円の数が多い時などには、時々円同士が離れてしまったり、重なってしまったりすることがあります。そのような時は、もう何回かDRAWボタンを押してみて下さい。どんどん正確になっていきます。
同じグラフでも、グラフの点をドラッグしていろいろ形を変えてみてください。このアルゴリズムでは、あらかじめ中心や半径が分かっている二つの円から、それらに接する円の中心や半径を求めます。どの円から求めていくかによって、描かれる絵は全く違ったものになります。このアプレットでは、元のグラフの真ん中にあるものから優先的に円を求めていくようになっています。そのため、辺同士を交わらせたり、一つだけはずれた所に点を持ってきたりすると、おかしなものが出来るかもしれません。(円が一つしかないなど。)逆に、そのようにならないようにグラフを作れば、結構きれいに出来ると思います。
CPApp.java |
CPGraph.java |
NodeArray.java |
Node.java |
EdgeArray.java |
Edge.java |
GCanvas.java |
RCanvas.java |
Complex.java |