シェルピンスキー
- 本でシェルピンスキーのギャスケットのことが書いてあったのでRで書いてみた
- 確率的な書き方をしている
- ルール(正三角形について)
- 正三角形ABCをとる
- ΔABC内に点Pをとる
- Pを以下のように移動させる
- サイコロをふって
- 1 or 2 なら A と P の中点に移動する
- 3 or 4 なら B と P の中点に移動する
- 5 or 6 なら C と P の中点に移動する
- これをN角形にしてみた
- 初期位置はギャスケットから離れている
- 移動するごとに誤差も小さくなっているようだ
N<-3 M<-1000 #プロットする点の数 #正N角形を作る #A<-matrix(0,2,N) #k<-1:N #theta<-2*pi/N*k #for(i in 1:N){ #A[,i]<-c(cos(theta[i]),sin(theta[i])) #} #任意のN角形を作る A<-matrix(runif(2*N),2,N) par(new="FALSE") plot(t(A),xlim=c(min(A[1,]),max(A[1,])),ylim=c(min(A[2,]),max(A[2,])),cex=0.5) #最初のP #library(MCMCpack) #P<-apply(A,1,"%*%",t(rdirichlet(1,rep(1,N)))) P<-runif(2) for(t in 1:M){ i<-sample(1:N,1) P<-(P+A[,i])/2 par(new="TRUE") plot(t(P),xlim=c(min(A[1,]),max(A[1,])),ylim=c(min(A[2,]),max(A[2,])),cex=0.5) }
- N=4にしてプロットしてみる
- 3次元空間内のこちらを平面に投射したものになる
- 正方形では全面にプロットされてしまうので、形が見えない