C GeoGebraスクリプトの例

回転する正5角形

ボタンを押すたびに原点中心に30度ずつ回転する、単位円に内接する正5角形を作図してみます。

まず、正5角形を作図します。次を入力バーに1行ずつ入力してもよいですし、同等のことを、マウスやツールで実行しても構いません。

A = (0,0)

B = (1,0)

B' = Rotate[B, 2pi/5, A]

poly1 = Polygon[B, B', 5]

このように、Bに依存してB'が決定されるようにしておけば、あとは、ボタンを押すと点Bが30度ずつ回転する仕組みを作ればよいです。ボタンを作成し、On Clickハンドラに、

B = Rotate[B, pi/6, A]

とコードを書けば、ボタンを押すたびに点Bが原点中心に30度ずつ回転します。正5角形は点BとB'から決まっているので、「B =」としてBの座標を変更しなくてはなりません。定義が循環していそうですが、この場合は許されるようです。

回転する正5角形の別解

誤差の蓄積を嫌うならば、回転回数を記憶していおいて、基準となる定点を回転する方が望ましいです。すると、回転回数を保存する変数が必要ですが、数値オブジェクトにその役割をさせるのが簡明です。まず、次のコードを1行ずつ入力バーで実行するか、同等のことをマウスやツールで行い正5角形を作図します。

A = (0,0)

n = 0

B = Rotate[(1,0), n pi/6, A]

C = Rotate[B, 2 pi / 5, A]

poly1 = Polygon[B, C, 5]

ここでも、BやCがnに依存して決まるようにするのがポイントです。次にボタンを作成して、On Clickハンドラに

n = n + 1

を記述すると、目的の動作をします。