Cinderellaで数学:いろいろな曲線:アルキメデス螺旋
「曲線の事典」(礒田正美他編著:共立出版 2009)に載っているアルキメデスの螺旋を扱います。同書には,このあとベルヌーイ螺旋(対数螺旋)も紹介されていますが,作図器はありません。式は$${\rho=a e^{\theta \cot b}}$$ が示されています。
アルキメデス螺旋は,極方程式 $${r=a \theta}$$ で表される曲線で,高校の教科書にも載っています。CindyScriptを使えば簡単に表示できます。ちょっとやってみましょう。$${a=1}$$ として,媒介変数表示にしてプロットします。

このように,曲線を描くだけなら簡単ですが,今やってみたいのは作図器でどのように作図するかです。そのため,どのように曲線が描かれていくかを確認しておきましょう。次の図は角θとr(OP)の対応および位置を3つ描いたものです。

このようにして,角θの増加に伴い,OPが回転・拡大しながら曲線を描いていきます。

では,曲線の事典に掲載の作図器を見てみましょう。本には次のように説明があります。
平面$${\pi}$$上に固定された直線$${r}$$および固定点Pに取り付けられた針がある。円盤が直線$${r}$$に沿って滑ることなく転がり,針Pが直線$${r}$$に平行で円盤の中心を通る直線上にあるとき,針Pは円盤上にアルキメデス螺線をかく。

どうでしょうか。わかりにくくありませんか。図も写真と右の図が対応していませんし。
Web上のものを見ると,上の説明より詳しく書かれています。
固定された直線 $${r}$$ に沿って滑ることなく転がる円盤(平面$${\pi}$$)上に、固定点Pに取り付けられた針が描く曲線の軌跡として作ることができる。 この装置では、この平面$${\pi}$$は(必ずしもそうでなくともよいのだが)円盤となっている。 そして、図の後方の固定支持平面$${\alpha}$$に取り付けられた縦棒の中央に点Pがあり、そこに(平面に垂直に)針が取り付けられている。 はじめに針Pが円盤$${\pi}$$の中心にあるときは、アルキメデスの螺旋を描く。
注、図の円盤$${\pi}$$の後ろに、同じ中心を持つ円盤$${\beta}$$が取り付けられてあり、 その円盤$${\beta}$$が固定直線$${r}$$上を滑り動く。
本の図にあって説明にない「$${\beta}$$」が,ここでは注釈として書かれています。また,「縦棒の中央に点Pがあり」となっているので,本の図のPの位置はおかしいことがわかります。
この説明でわかることは,曲線を描く平面そのものが回転していくということです。したがって,$${r=\theta}$$で描いた螺旋でみたような,角の動きとOPの拡大というイメージを持ちつつ,動径OPではなく平面の方を回転していきながら曲線を描いていくイメージを持つ必要があるのです。
では,この作図器を模してCinderellaで作図をしてみましょう。
① 円盤の中心が動いていく線を背景のx軸に合わせてとる。Pが固定されている縦線をy軸上にとる。(線分AB,CD)
② 「はじめに針Pが円盤$${\pi}$$の中心にある」となっているので,Pを原点にとる。作図上は点E。
③ x軸上に中心を持つ円$${\pi}$$を描く。半径は適当に。
④ ③の同心円で小さい円$${\beta}$$を描く。実際には動きには必要がないが。

作図ツールでできるのはここまでです。軌跡ツールで描けるのはCinderellaの描画面上を動く点の軌跡です。ですから,回転する平面(円盤)上の点の軌跡は軌跡ツールでは描けません。このことは,サイクロイドの場合と同じです。したがって,サイクロイドのときにやったように,CindyScriptで曲線を描いていくことにします。
次の図は,円が始めから右回りに少し回った図と,さらにもう少し回った図です。針(原点)はEをPに,円の中心FはOに名前を変えてあります。回った量がわかるように,円盤のx軸を青,y軸を緑で表示しています。角θが回った角です。(全体を少し拡大しています)

円盤から見ると,点Pは,第4象限にあって,OPの長さが拡大していきます。はじめに$${r=\theta}$$ で描いたときは第1象限からスタートしていたので180度位置が違うことになります。180度位置が異なる螺旋は次のようになります。

円盤上にはこの螺旋が描かれるわけです。そして,この円盤が角$${\theta}$$だけ右向きに回転しています。したがって,上の螺旋の図を,$${-\theta}$$回転し,動いた円盤の位置まで平行移動して描きます。このような回転や拡大,平行移動は複素数を使うとやりやすいでしょう。
s = O.x;
f(t):=(
z1 = s;
z2 = complex([tcos(t+pi), tsin(t+pi)]);
z3 = z1+z2*(cos(-s) + i*sin(-s));
gauss(z3);
);と定義して,右に回転したら plot(f(#), start -> 0, stop -> s, color -> [1,0,0])
左に回転したら plot(f(-#), start -> 0, stop -> -s, color -> [1,0,0]) とします。
s = O.x;
f(t):=(
z1 = s;
z2 = complex([tcos(t+pi), tsin(t+pi)]);
z3 = z1+z2*(cos(-s) + i*sin(-s));
gauss(z3);
);
// 円盤上の軸
p1 = O.xy + C1.radius*[cos(-s), sin(-s)];
p2 = O.xy + C1.radius*[cos(pi-s), sin(pi-s)];
p3 = O.xy + C1.radius*[cos(pi/2-s), sin(pi/2-s)];
p4 = O.xy + C1.radius*[cos(3pi/2-s), sin(3pi/2-s)];
draw([p1,p2],color -> [0,0,1]);
draw([p3,p4],color -> [0,1,0]);
// 螺旋
if(s > 0,
plot(f(#), start -> 0, stop -> s, color -> [1,0,0]);
,
plot(f(-#), start -> 0, stop -> -s, color -> [1,0,0]);
);
作図器を模して作ったのが次のページにあります。
