糸をある長さに切り、片方の端を鉛筆に巻いて縛り付けもう一方の端を風邪の薬びんの下の方にセロテープで貼り付けます。薬びんに糸をすべて巻きつけある程度大きな紙の中央にこのびんを固定して鉛筆を糸がピンとなるようにして伸ばしながら曲線を描いていきます。この時に螺旋の曲線を描くことができます。糸を薬びんに時計回りに巻き付けると左回りの曲線、半時計周りに巻き付けると右回りの曲線が描けます。一度ではなかなかうまく描けませんが何回かトライしていると上手に描けるようになります。この曲線を私たちは大学時代に糸巻き曲線と呼んでいたのですが、今WEBで検索すると見つけることができませんでした。この曲線の名前を正確にはインボリュート曲線と言います。
ふとした好奇心でこのインボリューと曲線をプログラムで書いてみようと思いました。
少し三角関数とベクトルと微分の知識を使います。
薬瓶に相当する半径rの円を描きます。円の中心を通るように十字の座標軸を描き水平軸をx軸、垂直軸をy軸とします。十字の中心を原点Oとし原点からx軸上の円との交点、座標では[r 0]から糸がほぐれだすとします。糸が円を徐々に剥がれ角度θの点まで来たとします。この点をP0としベクトルP0とすると
P0 = [ rcosθ rsinθ]
となります。糸をピンと張りながら円から剥がしていくと鉛筆の先は円の接線方向に伸びています。鉛筆の先の点をPとしその座標を[x y]としそれをベクトルPで
P = [x y]
と表します。ここでxとyを求めます。点P0は円周上の点でPはP0の接戦上にあるので点Pでの円の接戦を求めます。これはベクトルP0を変数θで微分すれば求まりますから接線ベクトルをT0とすれば
T0 = d P0/dθ= [ -rsinθ rcosθ]
となります。この接線の長さを単位ベクトル(長さ1のベクトル)t0に直すと
t0= T0 / | T0 | = [ -sinθ cosθ]
が得られます。糸の長さをLとすれば鉛筆の先の点Pはベクトルで
P = P0 + L t0 (1)
となります。従って、Pを決めるためには長さLを求めなければなりません。Lを求めるために角度の単位を一般に用いられている度(degree)ではなく、ラジアン(radian)を使用します。度の単位は円の一周を360度と約束しています。これに対してラジアンは円の一周を2πと約束します。ここでπは円周率です。半径rの円の一周の角度2π(ラジアン)の時に、円周の長さは直径にπをかけて得られますから2πrになります。角度がθ(ラジアン)の時の円弧の長さLは、比例式
2π:2πr = θ:L
から求めることができます。これから
L = rθ
が得られます。これを式(1)に代入すると
P = P0 + L t0
= [ rcosθ rsinθ] + rθ[ -sinθ cosθ]
= r [ cosθ-θsinθ sinθ+θcosθ]
を導くことができます。この式を用いてθを0から増やしていけばインボリュート曲線(糸巻き曲線)をプログラムで描くことができます。
先ほどふとした好奇心でインボリュート曲線を描いてみようと書きましたが、多分、これは何かのきっかけで歯車が目に入り、そういえば歯車(正確にはヒラ歯車)の歯の輪郭曲線は糸巻き曲線とふと思い出したからです。歯車では固定した薬瓶の円を基礎円と言います。
ついでですがインボリュート曲線を持つ歯車の一点に力がかかる時どうなるかを考えてみました。力のかかる点を先ほどの点Pとします。ここにベクトルFの力がかかるとします。この力は点Pでインボリュート曲線の接線方向の力FTと法線方向(曲線の接線に垂直な方向)の力FNに分解されます。法線方向が歯車に働く力になります。F = FT + FN です。力の大きさは|F|です。
接線方向はベクトルPを微分して求められます。計算すると
d PT / dθ= r [ sinθ- sinθ-θcosθ cosθ- cosθ-θsinθ]
= rθ[ -cosθ -sinθ]
となります。この単位ベクトルは[ -cosθ -sinθ]ですから
FN = |F|[ -cosθ -sinθ]
が求まります。FNの単位ベクトルに直行する単位ベクトルは[ sinθ -cosθ]ですから
FT = |F|[ sinθ -cosθ]
になります。
点Pから法線ベクトルを延長した直線上の点をベクトルRで表すと、パラメータtを使用して
R(t) = P + tFT
= r [ cosθ-θsinθ sinθ+θcosθ] + t|F|[ sinθ -cosθ]
= r [cosθ sinθ] - (θ- t|F|)[ sinθ cosθ]
となります。θ- t|F|=0 の時、すなわち、t=θ/|F|の時にこの直線上の点は
R(θ/|F|) = P0
となります。つまり薬瓶の糸が剥がれた点P0に一致します。これは歯車にかかる力がいつも基礎円に向かっていることが分かります。このことは歯車にとって都合の良い性質になっています。
ベクトル計算、三角関数、ベクトル関数の微分があって少し面倒ですが、あの小さな歯車にも数学の裏付けがあります。