- spun-knotというタイプの結び目の作り方
- まず1-knotを開き、その両端を固定して、その「弧」をぐるりと回して閉じると、それは1-knotを用いた(0-)twist spun knotで2-knotの一種
- それを作るときに「弧」を1回ぐるりと回すときにひねりをk回入れると1-knotを用いた、k-twist spun knot
- これより、s-knotを用いて高次化して、(s+1) k-twist spun knot of s-knot というのが作れる
- その話
- Trivialな1-結び目(3次元空間にある円周)を次のようなステップで作る
- 3次元空間で、なる平面をz軸上にぐるりと回すことで、3次元空間全体を作ることにする
- 今、でzは任意な点をとり、z軸上にぐるりと回すとtrivialな1-結び目ができる
trivial.knot.1 <- function(x,z){
y <- 0
theta <- seq(from=0,to=1,length=100)*2*pi
XYZ <- matrix(0,length(theta),3)
for(i in 1:length(theta)){
R <- matrix(c(cos(theta[i]),-sin(theta[i]),sin(theta[i]),cos(theta[i])),byrow=TRUE,2,2)
tmp <- R %*% c(x,y)
XYZ[i,1:2] <- c(tmp)
XYZ[i,3] <- z
}
XYZ
}
library(rgl)
x <- runif(1)
z <- rnorm(1)
knot.1 <- trivial.knot.1(x,z)
plot3d(knot.1)
- Trivialな2-結び目を同様の方法で作ってみる
- まずは準備
- 3次元空間でy=0平面にの範囲にが一定となる点を取ると、それは半円周。これをz軸にぐるりと回せば球面になる
s <- seq(from=0,to=1,length=20)*pi
x <- sin(s)
z <- cos(s)
XYZ <- matrix(0,0,3)
for(i in 1:length(s)){
tmp <- trivial.knot.1(x[i],z[i])
XYZ <- rbind(XYZ,tmp)
}
plot3d(XYZ)
- 次に、4次元空間を考える。では任意であるような点をとり、それをzw平面の周りにぐるりと回転させる
trivial.knot.2 <- function(x,z,w,n=100){
y <- 0
theta <- seq(from=0,to=1,length=n)*2*pi
XYZW <- matrix(0,length(theta),4)
for(i in 1:length(theta)){
R <- matrix(c(cos(theta[i]),-sin(theta[i]),sin(theta[i]),cos(theta[i])),byrow=TRUE,2,2)
tmp <- R %*% c(x,y)
XYZW[i,1:2] <- c(tmp)
XYZW[i,3] <- z
XYZW[i,4] <- w
}
XYZW
}
- 結び目のあるものをzw平面で回転させたいので、まずは結び目を作りたい
- 三葉結び目はこちらで作れる。それをコピーしたのが以下(x,y,z空間で作る。x->x,y->z,z->wと読み変えること)
X<-4
npt<-100
t<-seq(from=0,to=1,length.out=npt)*2*pi*X
C1<-1
C2<-2
k<-2
x<-1/(2*(C1+C2))*sin((C1+C2)*t)+1/(2*(C1-C2))*sin((C1-C2)*t)+k/C2*sin(C2*t)
y<-1/(2*(C1+C2))*sin((C1+C2)*(t+2/3*pi))+1/(2*(C1-C2))*sin((C1-C2)*(t+2/3*pi))+k/C2*sin(C2*(t+2/3*pi))
z<-1/(2*(C1+C2))*sin((C1+C2)*(t+4/3*pi))+1/(2*(C1-C2))*sin((C1-C2)*(t+4/3*pi))+k/C2*sin(C2*(t+4/3*pi))
plot3d(x,y,z,col=rainbow(npt))
- この結び目を少しxの正の方向にずらして、zw平面に2か所で貫通し、その接着点で張り付ける(x,y,z空間で作る。x->x,y->z,z->wと読み変えること)
x. <- x+ (max(x)-min(x))*0.4
xposi <- which(x.>=0)
x.. <- x.[xposi]
y.. <- y[xposi]
z.. <- z[xposi]
plot3d(x..,y..,z..,col=rainbow(10))
- さてこのx..=x,y..=z,z..=wの点をzw平面で回そう
x <- x..
z <- y..
w <- z..
XYZW <- matrix(0,0,4)
for(i in 1:length(x)){
tmp <- trivial.knot.2(x[i],z[i],w[i])
XYZW <- rbind(XYZW,tmp)
}
- いくつかの方法で視覚化。その上に立っている人にとっては平面であって、そこを旅行する人にとっては球面だけれど、外側側から見るとその球面は結ばれている、そんな図
plot3d(XYZW[,c(1,2,3)])
plot3d(XYZW[,c(1,2,4)])
plot3d(XYZW[,c(1,3,4)])
plot3d(XYZW[,c(2,3,4)])
matplot(XYZW,type="l")
plot(as.data.frame(XYZW))
- spun-knotでは両端を固定し1ぐるりすることでその両端を閉じたけれど、k回以上のぐるりで閉じるようにすると、それは(k-1)-twisted spun knotと呼ぶ