見出し画像

タイムマシンに乗って

 プログラミング:「正方形を転がす」をWebアプリに で,円の半径を4通りに変えて,正方形を円周上で転がすものを作った。
 次は,円は変えずに,転がす多角形を変える。三角形,五角形,六角形・・・
ひととおりできたところで,コードの整理にかかった。
たとえば,正多角形を描く次の部分

//正多角形を描く
// no 図の番号 pt 底辺の右端
// v 底辺の向きを表す単位ベクトル
// flag = true/false 描く/描かない
// 着目点の位置を返す
polygon(no,pt,v,flag):=(
    z1 = complex(pt);
    z2 = complex(pt+L*v);
    z3 = z2+(z1-z2)*(cos(Th1)+i*sin(Th1));
    z4 = z3+(z2-z3)*(cos(Th1)+i*sin(Th1));
    z5 = z4+(z3-z4)*(cos(Th1)+i*sin(Th1));
    z6 = z5+(z4-z5)*(cos(Th1)+i*sin(Th1));
    z7 = z6+(z5-z6)*(cos(Th1)+i*sin(Th1));
    z8 = z7+(z6-z7)*(cos(Th1)+i*sin(Th1));
    side=apply([z1,z2,z3,z4,z5,z6,z7,z8],gauss(#));
    if(flag,connect(side));
    if(no == 1 % no == 2,ret=side_2);
    if(no == 3 % no == 4,ret=side_3);
    if(no == 5 % no == 6,ret=side_4);
    if(no == 7 % no == 8,ret=side_5);
    if(no == 9 % no == 10,ret=side_6);
    if(no == 11 % no == 12,ret=side_7);
    if(no == 13 % no == 14,ret=side_8);
    ret;
);

 これが「ベタ書き」。頂点を8つまで求めておく。全部 connect で繋げば,三角形や正方形では同じところをまた描くことになるが,ひとまずそれはいいとした。
 「ひとまず」なので,「三角形は頂点3つ」とちゃんとなおしたい。
ret は戻り値だ。これを決めるif の連続も,計算でいけるようになんとかしたい。
 side は「辺」なので,変数名がおかしい。頂点 (vertex)にしたい。

書き換えて実行。ちゃんと動くことを確かめて,(たつもりだったのだけど)他に移る。
次はここ

if(Theta<=L/R,drawfig(1));
if(L/R<Theta & Theta<=L/R+Th0,drawfig(2));
if(L/R+Th0<Theta & Theta<=2*L/R+Th0,drawfig(3));
if(2*L/R+Th0<Theta & Theta<=2*L/R+2*Th0,drawfig(4));
if(2*L/R+2*Th0<Theta & Theta<=3*L/R+2*Th0,drawfig(5));
if(3*L/R+2*Th0<Theta & Theta<=3*L/R+3*Th0,drawfig(6));
  以下同様に続く

いまどこまで回っているかによって,図を描く。
これも整理したい。 
Theta は回った角だが,これは変数なので theta にしたい。Tを大文字にしたのは,グローバル変数(プログラム全体にわたって有効な変数)だからだが,どちらかというと,大文字は「定数」で使いたい。
整理した。

と,あれ? 途中までしか描けない。そして WARNING がでている。

どこだ?

いま変えたところを戻す。(戻しやすいように,もとの部分は消さずに if(1==0, ・・・ の形にしている。 if(1==1 にすれば再現できる。
戻したが直らない。しまった,その前がダメだったのだ。
その前・・・さらに戻す。直らない。動いたと思って前の方は消してしまったところがある。

しかたがない,過去に行って取ってこよう。

タイムマシンに乗って,スイッチを押す。ウィ〜〜ンという音とともに(これはウソ) 過去の風景が見えてきた(見出し画像)
いつに戻るか? 
2時間くらい前にもどって,そのときのファイルを取り,現在に帰る。
動かす。・・・・ ちがう,これじゃない。
もう一度タイムマシンに乗って,今朝のものを持ってくる。たしか,昨夜できていたはずだ。
動かす。・・・・ 動くが,そのあとに(今朝)書いたコメント文はない。
もう一度タイムマシンに乗る。

あった。これだ。ここからやりなおせばいい。

---------------------------------------------

いやー,ほんとにMacのタイムマシンは助かる。いままでに何度も乗っている。
削除してしまったファイルを過去に取りに行ったこともある。

かくして,出来上がったのはこれ。

こういう画面になる。

画像1

画面にボタンがでないときは,もう一度読み直せば出るはず。