• こちらの続き
  • 2個の円の両方に直交する円をたくさん描いてみよう
  • さて、今、2円に直交するたくさんの円のうちの1つについて、円に関する反転をすることを考える
    • 円に関する反転では、その反転を決める円に直交する円は、反転して、自身になる
    • したがって、図に示された、たくさんの円のうちの一つの円について、「2円」を反転すると、同じ像が得られる
    • 今、この反転で「距離が保存される」とし、それを『双曲線幾何』とする
    • 片方の円の上の点で、反転を決める円の内側と外側の対応点は、もう片方の円(これは双曲線幾何での直線だが)から等距離にある
    • したがって、そのような「等距離」な弧が、ある反転用の円の内外に定まる
    • ここで、反転用の円をとっかえひっかえ変えてやることで、「この弧」と「この弧」が等距離で、「同じこの弧」と「別のこの弧」も等距離で、という同値関係がどんどんできていく
    • 結局、「反転用の円」と「2つの円」との交点を結んだ弧は、どれをとっても「等距離」であることがわかる
    • 今、言っているのは、2つの円が作っている「三日月部分」と、そこを通過している「弧」のことである
x1<-y1<-0
r1<-1
x2<-1.5
y2<-0
r2<-2
theta<-seq(from=0,to=1,length=200)*2*pi
k<-(x2^2+r1^2-r2^2)/(2*x2*cos(theta))
r3<-sqrt(k^2-r1^2)

t<-seq(from=0,to=1,length=100)*2*pi
X1<-r1*cos(t)+x1
Y1<-r1*sin(t)+y1
X2<-r2*cos(t)+x2
Y2<-r2*sin(t)+y2
xlim<-ylim<-range(X1,Y1,X2,Y2)

plot(X1,Y1,xlim=xlim,ylim=ylim,type="l")
par(new=TRUE)
plot(X2,Y2,xlim=xlim,ylim=ylim,type="l")

for(i in 1:length(r3)){
	par(new=TRUE)
	X3<-r3[i]*cos(t)+k[i]*cos(theta[i])
	Y3<-r3[i]*sin(t)+k[i]*sin(theta[i])
	plot(X3,Y3,xlim=xlim,ylim=ylim,type="l")
	
}
  • プログラムを速くするにはapply系を使いましょうということでこちら