領域に斜線を描く(ハッチング)

Last modified: 2019 年 03 月 21 日 00 時

直線や曲線で囲まれた領域に斜線を描く(ハッチング)。KeTpic版の焼き直し

主な使用関数: Hatchdata, Listplot, Circledata, Letter.

領域に斜線を描く

Cinderella 2での作図

KeTCindyのスクリプトを利用したいので、templete1basic.cdyなどを開いて、これを別名に保存します。
まず、冒頭のような図形をCinderella 2で描きます。

811x587(44941bytes)

点Aを原点に据えて、これを中心とし、半径を線分ABとする円を描き、中点ツールで点Cを置きます。CindyScriptで、Circledata("1",[A,B], ["Num=400"]); として、円のプロットデータにcr1という名前が付けます。Circledata("2",[C,B], ["Num=400"]);で、cr2という名前が付きます:

Circledata("1",[A,B], ["Num=400"]);    //円の描画
Circledata("2",[C,B], ["Num=400"]);    //Numは分割数
Listplot("1",[D,A]);
Drwpt([C]);
Letter(A, "sw", "O");              //各点に記号を書き込む
Expr(C, "s2", "1");
Expr(B, "se", "2");

線分DAの描画は座標軸と重なるので不要ですが、領域の指定のときにこのプロットデータを使います。

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

ハッチング

大円の内部(i)、小円の外部(o)、線分DAの右側(e)の共通部分に斜線を引きます:

Hatchdata("1",["ioi"],[["cr1"],["cr2"],["sg1","e"]],[30,0.8,"dr,0.7"]);

[["cr1"],["cr2"],["sg1","e"]] が曲線または閉曲線のリスト、["ioi"]がそれぞれの(閉)曲線の内部(i)または外部(o)を指定しています。直線や関数のグラフなど閉曲線ではない場合、["sg1","e"]のように、n,s,e,wをプロットデータとともに指定します。

810x587(50841bytes)

Hatchdataの実行は少し時間がかかります。

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

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

サンプルファイル(.cdy)のダウンロード
以下はDraw部分のコード:
Ketinit();

Addax(1);    //座標軸を描く
Setpen(1.5);
Ptsize(2);
Setunitlen("7mm");

Circledata("1",[A,B], ["Num=400"]);    //円の描画
Circledata("2",[C,B], ["Num=400"]);    //Numは分割数
Listplot("1",[D,A]);
Drwpt([C]);
Letter(A, "sw", "O");              //各点に記号を書き込む
Expr(C, "s2", "1");
Expr(B, "se", "2");

Hatchdata("1",["ioi"],[["cr1"],["cr2"],["sg1","e"]],[30,0.8,"dr,0.7"]);


//Figpdf();
Windispg();

//Help("List");

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