フィボナッチ格子

# Nは乱点の数を決める引数
# f1 は黄金比の値をデフォルトとする値。この値を黄金比から変えると格子としての良い性格がなくなる
# k=1をデフォルトとし、フィボナッチ格子を描くためにはk=1。ただし、その背景にあるらせんを描くためにはこの値をいじって、らせん上の点の数を増やす必要がある
fib.lattice.S2 <-function(N,f1=(sqrt(5)+1)/2,k=1){
	f2 <- f1-1 # 黄金比はx^2-x-1=0の1つの根。もう1つの根を取り出す
	P <- 2*N+1
	i <- seq(from=-N, to=N,by=k)
	theta <- asin(2*i/(2*N+1))
	phi <- 2*pi*i*f2
	x <- cos(theta)*cos(phi)
	y <- cos(theta)*sin(phi)
	z <- sin(theta)
	return(cbind(x,y,z))
}
# フィボナッチ格子点の座標
N <- 20
fl <- fib.lattice.S2(N)
library(rgl)
# らせんの座標
N2 <- N
fl2 <- fib.lattice.S2(N2,k=0.01)
# らせんを描いて
plot3d(rbind(fl2))
# フィボナッチ格子を重ね描き
points3d(fl,size=10)
rgl.snapshot("fib.png")