d<-3
D<-pi/2
x<-c(1,4,1,4,1,4,1)
replacer<-as.list(rep(c(0),4))
replacer[[1]]<-c(1,4,1,3,1,3,1,1,4,1,4,1,3,1)
replacer[[2]]<-c(2)
replacer[[3]]<-c(3)
replacer[[4]]<-c(4)
MakeSequence<-function(initX,Nstep,replacer){
X<-as.list(rep(c(0),Nstep+1))
x<-initX
X[[1]]<-x
for(i in 2:(Nstep+1)){
tmp<-c()
for(j in 1:length(x)){
tmp<-c(tmp,replacer[[x[j]]])
}
x<-tmp
X[[i]]<-x
}
X
}
Niter<-4
X<-MakeSequence(x,Niter,replacer)
ResultTurtle<-function(x,d,D,ds=c(1,1,0,0),Ds=c(0,0,1,-1),Ls=c(1,0,1,1),initX=NULL,initA=NULL){
Niter<-length(x)+1
X<-matrix(0,Niter,3)
L<-rep(0,Niter-1)
ds<-ds*d
Ds<-Ds*D
Ls<-Ls*1
if(is.null(initX)){
initX<-c(0,0)
}
if(is.null(initA)){
initA<-0
}
X[1,]<-c(initX,initA)
for(i in 1:length(x)){
X[i+1,1]<-X[i,1]+ds[x[i]]*cos(X[i,3])
X[i+1,2]<-X[i,2]+ds[x[i]]*sin(X[i,3])
X[i+1,3]<-X[i,3]+Ds[x[i]]
L[i]<-Ls[x[i]]
}
list(X=X,L=L,x=x)
}
DrawTurtle<-function(ttl,col=FALSE){
plot(ttl$X[,1],ttl$X[,2],cex=0.1)
for(i in 1:length(ttl$L)){
if(ttl$L[i]==1){
c<-1
if(col)c<-ttl$x[i]
segments(ttl$X[i,1],ttl$X[i,2],ttl$X[i+1,1],ttl$X[i+1,2],col=c)
}
}
}
for(i in 1:length(X)){
resTurtle<-ResultTurtle(X[[i]],d,D)
DrawTurtle(resTurtle)
}
d<-1
D<-pi/2
x<-c(1,4,1,4,1,4,1)
replacer<-as.list(rep(c(0),4))
replacer[[1]]<-c(1,3,1,1,4,1,1,4,1,4,1,3,1,3,1,1,4,1,4,1,3,1,3,1,1,3,1,1,4,1)
replacer[[2]]<-c(2)
replacer[[3]]<-c(3)
replacer[[4]]<-c(4)
Niter<-2
X<-MakeSequence(x,Niter,replacer)
par(mfcol=c(2,2))
for(i in 1:length(X)){
resTurtle<-ResultTurtle(X[[i]],d,D)
DrawTurtle(resTurtle)
}
par(mfcol=c(1,1))
DrawTurtle(resTurtle)
- quadratic modification of the snowflake curve
d<-1
D<-pi/2
x<-c(4,1)
replacer<-as.list(rep(c(0),4))
replacer[[1]]<-c(1,3,1,4,1,4,1,3,1)
replacer[[2]]<-c(2)
replacer[[3]]<-c(3)
replacer[[4]]<-c(4)
Niter<-4
X<-MakeSequence(x,Niter,replacer)
par(mfcol=c(2,2))
for(i in 1:length(X)){
resTurtle<-ResultTurtle(X[[i]],d,D)
DrawTurtle(resTurtle)
}
par(mfcol=c(1,1))
DrawTurtle(resTurtle)
- Combination of islands and lakes
- Figure 1.8
d<-1
D<-pi/2
x<-c(1,3,1,3,1,3,1)
replacer<-as.list(rep(c(0),4))
replacer[[1]]<-c(1,3,2,4,1,1,3,1,3,1,1,3,1,2,3,1,1,4,2,3,1,1,4,1,4,1,1,4,1,2,4,1,1,1)
replacer[[2]]<-c(2,2,2,2,2,2)
replacer[[3]]<-c(3)
replacer[[4]]<-c(4)
Niter<-2
X<-MakeSequence(x,Niter,replacer)
par(mfcol=c(2,2))
for(i in 1:length(X)){
resTurtle<-ResultTurtle(X[[i]],d,D)
DrawTurtle(resTurtle)
}
par(mfcol=c(1,1))
DrawTurtle(resTurtle)
d<-1
D<-pi/2
x<-c(1,4,1,4,1,4,1)
replacer<-as.list(rep(c(0),4))
replacer[[1]]<-c(1)
replacer[[2]]<-c(2)
replacer[[3]]<-c(3)
replacer[[4]]<-c(4)
par(mfcol=c(3,2))
replacer[[1]]<-c(1,1,4,1,4,1,4,1,4,1,4,1,3,1)
Niter<-4
X<-MakeSequence(x,Niter,replacer)
resTurtle<-ResultTurtle(X[[Niter+1]],d,D)
DrawTurtle(resTurtle)
replacer[[1]]<-c(1,1,4,1,4,1,4,1,4,1,1)
Niter<-4
X<-MakeSequence(x,Niter,replacer)
resTurtle<-ResultTurtle(X[[Niter+1]],d,D)
DrawTurtle(resTurtle)
replacer[[1]]<-c(1,1,4,1,3,1,4,1,4,1,1)
Niter<-3
X<-MakeSequence(x,Niter,replacer)
resTurtle<-ResultTurtle(X[[Niter+1]],d,D)
DrawTurtle(resTurtle)
replacer[[1]]<-c(1,1,4,1,4,4,1,4,1)
Niter<-4
X<-MakeSequence(x,Niter,replacer)
resTurtle<-ResultTurtle(X[[Niter+1]],d,D)
DrawTurtle(resTurtle)
replacer[[1]]<-c(1,4,1,1,4,4,1,4,1)
Niter<-5
X<-MakeSequence(x,Niter,replacer)
resTurtle<-ResultTurtle(X[[Niter+1]],d,D)
DrawTurtle(resTurtle)
replacer[[1]]<-c(1,4,1,3,1,4,1,4,1)
Niter<-4
X<-MakeSequence(x,Niter,replacer)
resTurtle<-ResultTurtle(X[[Niter+1]],d,D)
DrawTurtle(resTurtle)
par(mfcol=c(1,1))