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)];

にするとよいでしょう。

アニメーションはこちらにあります。

また,このページの下からダウンロードできます。