ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【Processing】Hyperbolic Treeを実装する

成果物

www.youtube.com
図書館の本で紹介されていたので作ってみました。初めに見つけたものは、4万行ほどあって萎えていたのですが。シンプルなものを見てみると、意外と簡単だと分かったので実装しました。機能を極力省いて、シンプルにしています。

仕組み

まず、中心の位置を決めておき、端に行くほど小さくなるPoincareDisk上で移動させながら、他の位置を計算しています。それ以外は普通のTreemapと似ています。
移動の数式は、下のコードで使われていたものをそのまま使っています。参照元が特定できなかったのですが、このような式になっているようです。※一度に1以上動かすとうまくいかないので注意してください。
z = (z + t) / (1 + z * conj(t))
GitHub - unused/hyperbolic-tree-browser: A hyperbolic tree browser visualization using D3 v4 (Project at TU Graz)

コード

Simple Hyperbolic Treeという名前で追加しています。
github.com