【やってみた】リーマン多様体へのグラフ描画アルゴリズムの実装【実装してみた】...
TRANSCRIPT
元論文
Kobourov, S. G., and Wampler, K. Non-Euclidean Spring Embedders.
IEEE Trans. Vis. Comput. Graph. 11, 6 (2005), 757‒767.
4
元論文の説明(1)リーマン多様体 M は,すべての点 x ∈ M で
接ベクトル空間を持つ
リーマン多様体上の a と b を結ぶ 連続曲線 γ: [a, b] → M の長さは
length(γ) =b
a||γ(t) ||dt
となり,任意の点 a, b 間を最小とする曲線の長さが 点 a, b 間の距離と定義され d(a, b) と表す
10
元論文の説明(2)
1. 全ての y ∈M に対してτ-1x (τx(y)) = y2. ||τx(y) || = d(x, y )3. τx は原点に対する角度を維持する4. Range(τx) = M5. Range(τ-1x ) = TxM
ここで,すべての点 x ∈ M でリーマン多様体と 接ベクトル空間への写像を
τx: M → Tx M,τx-1: Tx M → Mと定義する. ただし,τx とτx-1 は以下の条件を満たすとする.
11
元論文の説明(3)
generateinitial layout(G)while not donedofor n∈G dox := position[n]G := τx(G )x := force directedplacement(n, G )position[n] := τ-1x (x )
endend
すると,リーマン多様体上における バネモデルレイアウトのアルゴリズムは以下のようになる
12
球面幾何上へのグラフレイアウト(1) 極座標表記
x
y
z
φ
θ
a
半径1の単位球面を考えると 球面上にある任意の点 a (x, y, z)は θ∈ [0, 2π) とφ∈ [0, π)
で表せる
19
球面幾何上へのグラフレイアウト(3) 接ベクトル空間
x
y
za
ua va任意の点 a の接ベクトル ua, va は
ua = (-cosθcosφ, sinθsinφ, sinθ)va = (sinφ, cosφ, 0)
と表わせ,点 a に及ぼす力は この接ベクトル空間で考えることができる
21
球面幾何上へのグラフレイアウト(4) 2点間に及ぼす力
x
y
za
b
いま点 a, b があり 点 a が b へ,ある力 F(a, b)で 引き寄せられているとする
このときの F(a, b)について考える
引き合う力
22
球面幾何上へのグラフレイアウト(5) 接ベクトル空間への写像と力の向き
まず,点 b から 点 a の 接ベクトル空間への写像 b’
について考える
ベクトル a b’ が 局所空間で
点 b が 点 a に 及ぼす力の向きとなるx
y
za
b
b’
力の向き
23
球面幾何上へのグラフレイアウト(6) 直線 b b’
点 b を通りベクトル a と 平行な直線 b b’ を考えると
この直線 b b’ は
x
y
za
b
b’
x -bxax = y-byay = z-bzaz
と表せ,媒介変数 t を使うとx = bx+ ax ty = by+ ay tz = bz+ az tとなる
aと平行な直線
24
球面幾何上へのグラフレイアウト(8) b’の導出(A)
x
y
za
b
b’
ax (x - ax) + ay (y - ay) + az (z - az)x = bx+ ax ty = by+ ay tz = bz+ az t
を
へ代入すると t が求まる
t を x = bx+ ax ty = by+ ay tz = bz+ az t
へ代入すると b’ が求まる
26
球面幾何上へのグラフレイアウト(9) b’の導出(B)
x
y
za
b
b’
ax (bx+ ax t-ax ) + ay (by+ ay t-ay ) + az (bz+ az t-az ) = 0(a2x + a2y + a2z )t = a2x + a2y + a2z -axbx-ayby-azbz
t = a2x + a2y + a2z -axbx-ayby-azbz
a2x + a2y + a2z
すなわち t は
となる.ただし単位球面なので
t = 1-axbx-ayby-azbz
となり,b’つまり力の向きが求まる
27
球面幾何上へのグラフレイアウト(10) 力の大きさ
点 a, b 間の力の大きさは 点 a, b の球面上の距離 d(a, b)
で表される
x
y
z a
bψ
ただし,球面幾何なので d(a, b)は 点 a, b のなす角ψで表される
28
球面幾何上へのグラフレイアウト(11) 点 a, b のなす角ψ
点 a, b のなす角ψは 球面三角法の余弦定理より
となるx
y
z a
b
N
ψ
cosψ= cosθa cosθb+ sinθa sinθbcos(φa-φb)ψ= cos-1(cosθacosθb+ sinθa sinθbcos(φa-φb))
29
球面幾何上へのグラフレイアウト(12) 力の向きと大きさ
力の向き b’ - a と 力の大きさψ が得られた
x
y
za
b
b’
ψ
力の向き
力の大きさ
あとは点 a を実際に動かすのみ
30
球面幾何上へのグラフレイアウト(12) 点 a の動き
x
y
za
b
b’
ψ
力の向き
力の大きさ
点 a の球面幾何上の動きは, ベクトル (b’ - a) と a の外積
(b’ - a)☓a を軸として
角度cψだけ回転させれば良い (cは定数)
b’ - a
外積(回転軸) (b’ - a)☓a
任意軸の回転はクォータニオンで 実現可能
31