矢印を描く
Last modified: 2019 年 03 月 21 日 00 時
CindyScriptで曲がった矢印などを描く。KeTpic版の焼き直し。
主な使用関数: Anglemark, Paramark, Arrowhead, Listplot, Circledata, Letter.
Cinderella 2での作図
KeTCindyのスクリプトを利用したいので、templete1basic.cdyなどを開いて、これを別名に保存します。
まず、冒頭のような図形をCinderella 2で描きます。
点Aを中心とし、半径を線分ABとする円上の適当なところに点Dを置きます。CindyScriptで、Listplot("1", [A,D]); とすると、線分ADのプロットデータにsg1という名前が付きます(普段は省略します)。このプロットデータは後で使います:
Listplot("1", [A,D]); //線分AD
Listplot([B,E]); //線分BE
Circledata([A,B], ["Num=400"]); //円の描画
Circledata([C,B], ["Num=400"]); //Numは分割数
さらに、AnglemarkとParamarkで角記号を描けます:
Paramark([A,E,B], [0.4]);
Anglemark([B,A,E], [0.8,"Expr=1.6,\theta"]);
[このページのトップへ]
矢印の書き込み
矢印の部分を赤色で書き込んでいきます:
Setcolor("red");
Circledata("1",[A,F],["Num=400","Rng=[0,pi/2]"]);
Arrowhead(G,"cr1",[1,20,"l"]);
Arrowhead(F,"Invert(cr1)",[1,25,"l"]);
Arrowhead(D,"sg1",[1,20,"l"]);
Arrowhead(E,"Invert(sg1)",[1,25,"l"]);
Listplot([E,D]);
Setcolor("black");
Circledata("1",[A,F],["Num=400","Rng=[0,pi/2]"]);とすると、点Aを中心とし、線分AFを半径とする円のうち、$0$〜$\frac{\pi}{2}$の部分の円弧を描きます。このプロットデータにcr1という名前が付きました。Arrowhead(G,"cr1",[1,20,"l"]);で、cr1上の点Gに矢印を描きます。ただし、矢印の方向はcr1の向きに従います。[矢印の大きさ,開き角,矢印の種類]というオプションも付けています。また、Invert(cr1)とすることで、cr1と逆向きの曲線を得られます。
これで出来上がりです。KeTCindy(Cinderella)の良いところは円周上の点Dを動かして図を変えることができるところです:
[このページのトップへ]サンプルファイルとCindyScriptコード
サンプルファイル(.cdy)のダウンロード
以下はDraw部分のコード:
Ketinit();
Addax(1); //座標軸を描く
Setpen(2);
Ptsize(3);
Setunitlen("10mm");
Listplot("1", [A,D]); //線分AD
Listplot([B,E]); //線分BE
Circledata([A,B], ["Num=400"]); //円の描画
Circledata([C,B], ["Num=400"]); //Numは分割数
Paramark([A,E,B], [0.4]);
Anglemark([B,A,E], [0.8,"Expr=1.6,\theta"]);
Setcolor("red");
Circledata("1",[A,F],["Num=400","Rng=[0,pi/2]"]);
Arrowhead(G,"cr1",[1,20,"l"]);
Arrowhead(F,"Invert(cr1)",[1,25,"l"]);
Arrowhead(D,"sg1",[1,20,"l"]);
Arrowhead(E,"Invert(sg1)",[1,25,"l"]);
Listplot([E,D]);
Setcolor("black");
Letter(A, "sw", "O"); //各点に記号を書き込む
Letter(B, "se", "A");
Letter(D, "ne", "P");
Letter(E, "nw", "Q");
//Figpdf();
Windispg();
//Help("List");
[このページのトップへ]