コインの回転問題の考察を示します。
(考察)
点Pの軌跡を考察する。
大円の半径をa、小円の半径をb、点Pの小円中心からの距離hを変えて、点Pの軌跡を描く。
●プログラム(TP111.bas)
' << TP111.bas >> ' 面白い曲線。 ' ' x = (a-b)*sin(t) - h*sin(a*t/b - t) ' y = (a-b)*cos(t) + h*cos(a*t/b - t) ' ' グラフック画面の背景色を白に設定。 BackColor="White" ' ' パラメータの読み込み。 ' 関数Val("123")は、文字列123を数値に変換する。 Input"画面サイズ[200]:";SIZE$ If SIZE$ = "" Then SIZE=200 Else SIZE=Val(SIZE$) Input"大円の半径a[1]:";A$ If A$ = "" Then A=1 Else A=Val(A$) Input"小円の半径b[0.5]:";B$ If B$ = "" Then B=0.5 Else B=Val(B$) Input"点Pの距離h[0.5]:";H$ If H$ = "" Then H=0.5 Else H=Val(H$) Input"θの範囲0≦θ≦m[360]:";M$ If M$ = "" Then M=360 Else M=Val(M$) Input"遅延時間[0-10]:";DL$ If DL$ = "" Then DL=0 Else DL=Val(DL$) ' ' グラフィック画面のサイズを設定。 GScreen(SIZE,SIZE) ' ' 座標の設定。 Window(-A,-A)-(A,A) MathGraph On ' ' パラメータの表示。 ' 13*(2*A)/SIZEは指定された座標における1文字の高さ。 X=-A: Y=A DY=13*(2*A)/SIZE GLocate(X,Y): W$="面白い曲線": GPrint W$ Y=Y-DY GLocate(X,Y): W$="a="+Str$(A): GPrint W$ Y=Y-DY GLocate(X,Y): W$="b="+Str$(B): GPrint W$ Y=Y-DY GLocate(X,Y): W$="h="+Str$(H): GPrint W$ Y=Y-DY GLocate(X,Y): W$="0≦t≦"+Str$(M): GPrint W$ ' ' XY座標軸の表示。 Line(-A,0)-(A,0) Line(0,-A)-(0,A) ' ' 大円の表示。 Circle(0,0),A ' ' 度からラジアンに変換。 M=M/360 ' ' 曲線の表示。 ForeColor="Black" For T=O To M*Pi Step 0.01 X=(A-B)*Sin(T)-H*Sin(A*T/B-T): ' X座標。 Y=(A-B)*Cos(T)+H*Cos(A*T/B-T): ' Y座標。 PSet(X,Y) Sleep(DL) Next T End
実行結果
●その他の結果