パズル万華鏡

面白いパズルの紹介と解説をします。

コインの回転問題の考察

 コインの回転問題の考察を示します。


(考察)

 点Pの軌跡を考察する。

大円の半径をa、小円の半径をb、点Pの小円中心からの距離hを変えて、点Pの軌跡を描く。
f:id:isemba:20160324190554j:plain
●プログラム(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

実行結果
f:id:isemba:20160324190755j:plain
f:id:isemba:20160324190812j:plain
●その他の結果
f:id:isemba:20160324190843j:plain
f:id:isemba:20160324190901j:plain