見出し画像

プログラミング:リンゴの形ができたよ

正方形を回転したとき,ひとつの頂点の軌跡を表示する。

まず,直線上と正三角形上をやってみた。

次に,半径が正方形の1辺の長さと同じ円周上をころがしてみた

 円周上は面倒だったが,整理してみると,当初断念していた,円周の長さが正方形の1辺の3倍の場合もできそうだ。正三角形をやったあとなので,3倍にしたが,4倍なら円周の長さと正方形の周の長さが同じになるので,ちょうど1回転でもどる。また,初期状態を変えて,初めだけ例外処理をすることなくいけるようにした。初期状態を,正方形の中点で接している状態から始めたのがややこしくなった原因で,境界での位置が合わないのはコンピュータの誤差の問題ではなく何か思い違いがあったようだ。
 あとのこと(円の大きさを変えるかもしれない)を考えて,円の半径はR,正方形の1辺はLとして,まず該当箇所の変数名を書き換えていった。
 さらに,関数定義を見直して,さらなる統合を図った。

 正方形の動きは,次の2つに分類される。一つは,辺と円が接する場合,もうひとつは,1つの頂点だけが円周上にある場合だ。

画像1

状態を整理して,共通部分は関数化するなどで110行ほどに短くすることができた。

出来上がりはこちら。りんごの形になったので,色も赤にした。