家紋: 丸に千鳥

Last modified: 2019 年 03 月 27 日 11 時

家紋の丸に千鳥。千鳥の描き方の参考文献が見つからなかったので、お手本を見ながら試行錯誤で作っていますので、正しい方法ではないと思います。上絵師によっても千鳥は大きく違いますし。丸っこく可愛く描くことを心がけました。

参考書籍等:

主な使用関数: Partcrv, Joincrvs, Rotatedata, Reflectdata, Shade, Circledata.

丸に千鳥

Cinderella 2での作図(丸に千鳥)

KeTCindyのスクリプトを利用したいので、templete1basic.cdyなどを開いて、これを別名に保存します。
円ツールと線分ツールを使って、図のように円AB直線AB・垂線ACを作り、ずれないように点A点Bは固定(pinning)します。円CAを描くと、傾き30度の直線が描けます。もちろん、傾き指定の直線ツール傾き指定の直線ツールで描いてもOK。

基本図

円ABの半径の3分の2くらいの円AE (おなか)を描き、点Fを通る垂線を描きます。

垂線

図のような小円HGが翼の後側になります。

翼の後側を描く

円FKを描いて、翼になります。点Lを取って、次にここに円を接続します。

翼を描く

円を接続します。軸AE交点Oを中心に円ONを描いて、頭とします。

円をつないて、頭を作る

点G点K円HG線分AEについて対称移動しておきます。

右側の対称移動

円FKに接続する円を左側に描きます。すなわち、点Vを取って、円WVを描きます。

左側

あとはくちばしと目の部分を線分と円で描いています。

くちばしと目

足の描画に入ります。軸AE上に円の中心を取っていますが、足のデザインが気に入らなかったので、あとで変えることになります。

足の描画

点の添字順に円を描いてます。

たくさん円を描く

点P9点P11の中点を取って、点Aと直線で結びます。これは、左足を回転移動させて右足とするための補助線です。

左足を回転移動させるための準備

$\angle\,\text{P}_{11}\text{AE}$ の角度を、角度ツール角度ツールで計ります。直線P11A直線AEを順にクリックします。

角度を計る

22.7度ということがわかりました。図の見やすさのため、角の表示ツール角の表示ツールを使って、角記号を表示しています。

角度

22.7度の2倍の分だけ点Aを中心に回転させます:

//足
Circledata("9a",[P1,P2],["nodisp","Num=600"]);
Partcrv("9a",P21,P3,"cr9a",["nodisp"]);
Circledata("9b",[P4,P5],["nodisp","Num=600"]);
Partcrv("9b",P5,P3,"cr9b",["nodisp"]);
Circledata("9c",[P6,P5],["nodisp","Num=600"]);
Partcrv("9c",P5,P7,"cr9c",["nodisp"]);
Circledata("9d",[P8,P7],["nodisp","Num=600"]);
Partcrv("9d",P22,P7,"cr9d",["nodisp"]);
Circledata("9e",[A,P21],["nodisp","Num=600"]);
Partcrv("9e",P21,P22,"cr9e",["nodisp"]);

AddGraph("9",["part9a","part9b","part9c","part9d"]);
//Joincrvs("9",["part9a","Invert(part9b)","part9c","Invert(part9d)","Invert(part9e)"],["nodisp"]);
Rotatedata("9","ad9",2*28.5*pi/180);

各円弧をAddGraphでまとめてから、Rotatedataで回転移動させます。

回転移動

足の形が気にいらないので、変えることにしました。点の位置を動かしています。

足の形を変えたい

千鳥を囲む輪を描きます。点Bより少し遠い位置に点P12点P13を取ります。輪の太さを直径の1/9にするため、

P13.x=P12.x+2*P12.x/9;

とします。

輪を作る

角度が複素表示になっているときがありますが、見た目以外には問題ありません。

複素表示された角度

足の付け根を胴体から離すように描きます。円AEよりわずかに大きい円AP20を取って、足の部分との交点を求めておきます。

足の付け根

足の形を変えるため、軸AE上にある中心点を軸から離すことにします。

足の形を変える

半田ツール半田ツールを選択し、点P1軸AEより離します。移動ツール移動ツールでは点P1軸AE上を離れることはありませんが(点P1軸AE上にあるというプロパティをもっているので)、半田ツール半田ツールを使えば、自由に動かすことができます(上記のプロパティはなくなります)。逆に、他の直線や円上にある、というプロパティにすることもできます。

半田ツールで点P1を動かす

他の点も調整します。

他の点も動かす

最後に、Shadeで塗りつぶします。途中で点の位置や曲線の形を変えたくなったときのために、Shade関数の表示を切り替える機構を作ると便利です。ShadeOnという定数を用意して、Shade関数を使うところではIf文で切り替えましょう:

ShadeOn=1;


If(ShadeOn==1,
	Shade(["cr0b"]);
	Shade(["cr0a"],["Color=white"]);
,);

他の部分は下のコードを参考にしてください。

塗りつぶし [このページのトップへ]

サンプルファイルとCindyScriptコード

サンプルファイル(.cdy)出力されたPDFファイルのダウンロード
Ketinit();
Setunitlen("8mm");
Addax(0);
Setpen(1);

ShadeOn=1;

P13.x=P12.x+2*P12.x/9;
Circledata("0a",[A,P12],["Num=600"]);
Circledata("0b",[A,P13],["Num=600"]);
If(ShadeOn==1,
	Shade(["cr0b"]);
	Shade(["cr0a"],["Color=white"]);
,);

//Circledata("0",[A,B],["do,2"]);
Circledata("1",[A,E],["nodisp","Num=600"]);
Partcrv("1",U,G,"cr1");
Circledata("2",[H,G],["nodisp","Num=600"]);
Partcrv("2a",K,G,"cr2");
Reflectdata("2b","part2a",[A,E]);
Circledata("3",[F,K],["nodisp","Num=600"]);
Partcrv("3a",K,L,"cr3");
Partcrv("3b",V,T,"cr3");
Circledata("4",[M,L],["nodisp","Num=600"]);
Partcrv("4",N,L,"cr4");
Circledata("5",[O,N],["nodisp","Num=600"]);
Partcrv("5",N,Y,"cr5");
Listplot("6",[Y,X]);
Circledata("7",[W,X],["nodisp","Num=600"]);
Partcrv("7",V,X,"cr7");
Circledata("8",[Z,P0],["Num=600"]);
Joincrvs("Body",["part1","Invert(part2a)","part3a","Invert(part4)","part5","sg6","Invert(part7)","part3b","Invert(re2b)"],["nodisp"]);
If(ShadeOn==1,
	Shade(["joinBody"]);
	Shade(["cr8"],["Color=white"]);
,);

//足
Circledata("9a",[P1,P2],["nodisp","Num=600"]);
//Partcrv("9a",P2,P3,"cr9a");
Partcrv("9a",P21,P3,"cr9a",["nodisp"]);
Circledata("9b",[P4,P5],["nodisp","Num=600"]);
Partcrv("9b",P5,P3,"cr9b",["nodisp"]);
Circledata("9c",[P6,P5],["nodisp","Num=600"]);
Partcrv("9c",P5,P7,"cr9c",["nodisp"]);
Circledata("9d",[P8,P7],["nodisp","Num=600"]);
//Partcrv("9d",P9,P7,"cr9d");
Partcrv("9d",P22,P7,"cr9d",["nodisp"]);
Circledata("9e",[A,P21],["nodisp","Num=600"]);
Partcrv("9e",P21,P22,"cr9e",["nodisp"]);

AddGraph("9",["part9a","part9b","part9c","part9d"],["nodisp"]);
Joincrvs("9",["part9a","Invert(part9b)","part9c","Invert(part9d)","Invert(part9e)"],["nodisp"]);
//Rotatedata("9","ad9",2*28.5*pi/180);
Rotatedata("9","join9",2*28.3*pi/180,["nodisp"]);
If(ShadeOn==1,
	Shade(["join9"]);
	Shade(["rt9"]);
,);

Circledata("10a",[P14,P17],["nodisp","Num=600"]);
Partcrv("10a",P19,P17,"cr10a",["nodisp"]);
Circledata("10b",[P16,P17],["nodisp","Num=600"]);
Partcrv("10b",P19,P17,"cr10b",["nodisp"]);
Joincrvs("10",["part10a","Invert(part10b)"],["nodisp"]);
If(ShadeOn==1,
	Shade(["join10"],["Color=white"]);
,);


Windispg();

[このページのトップへ]