シェルピンスキー ギャスケット

  • こちらで、シェルピンスキー ギャスケットをいろいろな形で描いている
  • コンピュータ作業メモは「多次元」を扱うことを基本にしているので、多次元化する

http://www.genome.med.kyoto-u.ac.jp/StatGenet/testRY20110208/%E5%A4%9A%E6%AC%A1%E5%85%83%E3%82%AE%E3%83%A3%E3%82%B9%E3%82%B1%E3%83%83%E3%83%88.png

  • この図は「ポゴプラグ」なるファイル置き場へのリンク(記事)
N<-4
M<-10000
#library(sphere)

#N-1次元空間に均等にN本の単位ベクトルを配置する(N-1正単体)

CategoryVector<-function (nc = 3) 
{
    df <- nc - 1
    d <- df + 1
    diagval <- 1:d
    diagval <- sqrt((df + 1)/df) * sqrt((df - diagval + 1)/(df - 
        diagval + 2))
    others <- -diagval/(df - (0:(d - 1)))
    m <- matrix(rep(others, df + 1), nrow = df + 1, byrow = TRUE)
    diag(m) <- diagval
    m[upper.tri(m)] <- 0
    as.matrix(m[, 1:df])
}
cv<-CategoryVector(N)

# 正単体上の点を作る
# dirichletはsum x_i =1

P<-t(cv)%*%t(rdirichlet(1,rep(1,N)))
P<-c(P)
xs<-matrix(0,M,N-1)
selectedv<-sample(1:N,M,replace=TRUE)
for(i in 1:M){
	P<-(P+cv[selectedv[i],])/2
	xs[i,]<-P
	
}
# 3次元部分だけ描いてみる
plot3d(xs[,1],xs[,2],xs[,3])