A03 サイクロイド
直線上を動円が回転していくとき,円周上の定点が描く軌跡です。
考え方は,A01 アステロイドと同様です。
こんどはx軸上に直線を引いておきます。作図に要した2点はインスペクタで非表示にしておきましょう。
Initializationスロットに書く初期化が変わります。動円の中心をD,x軸上を動かす点をFとします。Fは円周上ではなく,x軸にインシデントになる(x軸上だけを動く)ようにしておきます。
r=|A,C|/|A,B|*2+1;
C0.radius=r;
D.xy=[0,r];
F.xy=[0,0];
Drawスロットは式が変わります。
r=|A,C|/|A,B|*2+1;
drawtext(C-[0.2,0.6],"r="+r,size->16);
C0.radius=r;
th=F.x/r;
D.x=r*th;
draw(r*[th-sin(th),1-cos(th)]);
plot(r*[t-sin(t),1-cos(t)],start->0,stop->th);
Shift+Enter でスクリプトを実行します。
点Fをドラッグしていくと円が回転します。
アニメーションにするときは,点Fを動円上の定点として,
th=F.x/r;
を削除するか,コメント行にして(行頭に // を書く)
draw(r*[th-sin(th),1-cos(th)]);
を
F.xy=r*[th-sin(th),1-cos(th)];
にするとよいでしょう。
アニメーションはこちらにあります。
また,このページの下からダウンロードできます。