- 数学セミナーの2014年3月号に双曲平面の話があります
- 双曲平面はなかなか「この世」に作るのが面倒くさいと思うのですが、自然界には、サンゴとか、そこらに転がっています
- Rでそれらしく作ろうとすると、それはそれで面倒くさいように思いますが、その理由は、計算機ではユークリッド的に座標を与えたいのに、双曲平面は「余って」しまってその余分なところが「自由きまま」なために、「確定」させにくいからのように思います
- そんな双曲平面ですが鉤針編みなら、どんどん作れるのはこちらの記事にもある通り
- じゃあ、R上で鉤針編みをしてしまえばなんとかなるか…
- スティッチを刻み、それをグラフにして、グラフを3次元座標として表現させるための力学モデル(こちら)とかに座標化の部分をやってもらっては…
- というのがこちら
- 1点から始めて、1段進むごとに各フロントノードは1個か2個の個ノードを生みながら大きくなっていく
- そうやってできたグラフを「描かせる」
x <- c(1)
k <- 11
current <- 1
n.kid <- 1:2
P <- 0.3
p <- c(P,1-P)
el <- matrix(0,0,2)
for(i in 1:k){
n <- sample(n.kid,length(current),replace=TRUE,prob=p)
new.kid <- sum(n)
cumsum.kid <- cumsum(n)
cumsum.kid <- c(0,cumsum.kid)
max.x <- max(x)
if(new.kid > 1){
tmp <- (max.x+1):(max.x+new.kid-1)
el <- rbind(el,cbind(tmp,tmp+1))
}
for(j in 1:length(n)){
el <- rbind(el,cbind(rep(current[j],n[j]),(max.x + cumsum.kid[j]+1):(max.x+cumsum.kid[j+1])))
}
current <- (max.x+1):(max.x+new.kid)
x <- c(x,current)
}
library(igraph)
g <- graph.edgelist(el,directed=FALSE)
plot(g,vertex.size=1,vertex.label=NA)
coords <- layout.fruchterman.reingold(g, dim=3)
rglplot(g, layout=coords,vertex.size=0.1,vertex.label=NA)