■シュタイナーの円鎖(その6)
メビウス変換
w=(z+a)/(az+1)
の逆変換は
z=(−w+a)/(aw−1)
である.
zx=((−x+a)(ax−1)−ay^2)/Δ
zy=−y(a(−x+a)+(ax−1))/Δ
Δ=(ax−1)^2+(ay)^2
w=x+yiとおくと
|w−c|=r (円)
のときは
x=rcosθ+cx
y=rsinθ+cy
で与えられる.
円全体をメビウス変換で移すと描画に時間がかかるが,直径の両端に写像される2点を見つけることは難しい.そこで,4点
(r+cx,cy),(−r+cx,cy),(cx,r+cy),(cx,−r+cy)
だけをメビウス逆変換で移し,そこから4点を通る円の中心と半径を計算する.
===================================
鎖の間の連結する小円の半径を計算するには,
R=1
r=(1−sin(π/n))/(1+sin(π/n))
x0=(R+r)/2・cos(2πi/n+α)
y0=(R+r)/2・sin(2πi/n+α)
として,4点を
x=x0+(R−r)/2:y=y0→(zx1,zy1)
x=x0−(R−r)/2:y=y0→(zx2,zy2)
x=x0:y=y0+(R−r)/2→(zx3,zy3)
x=x0:y=y0−(R−r)/2→(zx4,zy4)
4点を通る円の中心と半径は
H1=zx2−zx1,H2=zy2−zy1
H3=zx4−zx3,H2=zy4−zy3
H5=((zx2−zx1)^2+(zy2−zy1)^2)/2
H6=((zx4−zx3)^2+(zy4−zy3)^2)/2
として
X1=(H4H5−H2H6)/(H1H4−H2H3)
Y1=(H1H6−H3H5)/(H1H4−H2H3)
r1^2=(X1−zx1)^2+(Y1−zy1)^2=・・・=(X1−zx4)^2+(Y1−zy4)^2
で与えられる.
簡単な形にはならないが,複素数のまま計算した方がエレガントかもしれない.
===================================