- 準備ができたので、射影変換を繰り返そう
- ある点がある(超)平面上にあって、そこから1回、射影変換して、もとの(超)平面に戻る、ついで、戻ったところからもう一度射影変換をして戻ってくる、それを繰り返す
- 1回の射影変換には、写像する(超)平面と、行って帰るために2箇所の光源・視点が必要
- ちなみに、以下の「初期点」は「元の平面」上ではないので、初期点から(超)平面に行って、「あるべき元の平面」に戻ってきたとして、そこから打点している
my.projection.transform <- function(x,L1,L2,v1,v2,p0=rep(0,length(L1))){
tmp.x <- my.projection(x,L1,p0,v1)
my.projection(tmp.x,L2,p0,v2)
}
my.projection.transform.n <- function(x,L1,L2,v1,v2,n,p0=rep(0,length(L1))){
ret <- list()
ret[[1]] <- x
for(i in 1:n){
ret[[i+1]] <- my.projection.transform(ret[[i]],L1,L2,v1,v2,p0)
}
ret
}
x <- matrix(c(0,1),ncol=1)
L1 <- c(2,5)
L2 <- L1 + c(-0.1,-0.1)
v1 <- c(-1,0.6)
v2 <- c(0.1,1)
n.iter<-100
out <- my.projection.transform.n(x,L1,L2,v1,v2,n.iter)
out.mat <-matrix(0,n.iter,length(L1))
for(i in 2:length(out)){
out.mat[i-1,] <- out[[i]]
}
plot(out.mat)
matplot(out.mat,type="l")
base1 <- base.v(v2)
out.mat.rot <- t(t(base1) %*% t(out.mat))
plot(out.mat.rot[,-1],type="l")
- 二つの射影(超)平面と二つの光源との関係で、両端が閉じた(場合によっては無限遠になるが)範囲に点が並ぶ。その点の間隔は初め狭く、中ほどで広く、また狭くなる、というパターンになる。
- 二つの射影(超)平面が平行で、二つの光源を結んだ線もそれに平行だと、両端は閉じず、点の並び方は「等間隔」になる。「等間隔」というのは、射影変換のごく特殊な場合であることがわかる