丸七宝

ちょっと特殊な模様に,丸七宝があります。

これを今までの知識で描こうとするととても大変です。

しかし,同心円をまず描いて,小さな白い円を交点に置くことができればよさそうですね。

今までの図形は線だけでできていました。

もしも中を白く塗った円が描けるならば上の問題の半分は解決するでしょう。

中を縫った円(円盤)は,Cindyscriptの fillcircle(中心,半径) という関数で描けます。塗る色は color->色名 でオプション指定します。

したがって,白の円盤については

fillcircle(中心,半径,color->White);

で描けます。縁取りも必要なので,同じ中心と半径で円も描きます。

まず同心円を描きましょう。

arc([0,0],2);

arc([0,0],1.7);

次に,中を白で塗った円を描きます。

fillcircle([2,0],0.6,color->White);

arc([2,0],0.6);

fillcircle([0,2],0.6,color->White);

arc([0,2],0.6);

fillcircle([0,-2],0.6,color->White);

arc([0,-2],0.6);

fillcircle([-2,0],0.6,color->White);

arc([-2,0],0.6);

平行移動量は

    Shiftx=[4,0];  // 1行分描くための横への平行移動量

    Shifty=[2,2];  // 上への平行移動量

でよいですね。

先ほど,「上の問題の半分は解決する」と書きました。

というのは,この基本パターンだと,平行移動したときに4つの小円が重複して描かれるのです。

できあがりは問題がありませんが,「重複しないようにぴったり置きたい」という人には不満足でしょう。

この小円は1つあれば済むはずです。

つまり,2つの同心円だけ先に書いてしまい,そのあとに小円を1つずつ上書きするのです。

それには,基本パターンの定義と描画をもう一度やればよいのです。

drawpat() の定義を描画をもう一度やるのです。

次のスクリプトをごらんください。

    // 基本パターンを定義する

    drawpat():=(

arc([0,0],2);

arc([0,0],1.7);

    );

    Shiftx=[4,0];  // 1行分描くための横への平行移動量

    Shifty=[2,2];  // 上への平行移動量

    Start=[-40,-8]; //描き始めの位置

    // つぎのどちらかの行の先頭の // を削除すると描かれる

    //drawpat(); // パターンを一つ描く

    makemoyou(20,10);  // 引数は,横と縦のパターン

    // 第2のパターン

    drawpat():=(

fillcircle([2,0],0.6,color->White);

arc([2,0],0.6);

    );

    makemoyou(20,10);

これでうまくいきます。

色をつける

同心円を赤にして,小さい円はピンクに塗ってみましょう。

2行目を

    linecolor(Red);  // 線の色

とすると,線が赤で描かれます。

fillcircle([2,0],0.6,color->Pink);

とすると,円の中がピンクに塗られます。