« 2016年1月 | トップページ | 2016年3月 »

2016年2月

2016年2月20日 (土)

KETcindyで「きさポン」「フレンチ・ブルドック」の顔を描いてみた

■ReadOutDataに関して
データをフォルダにおいた場合,そのフォルダを指し示すために.
tmp="C:\KeTCindy\ketwork\spidermandata";
Com0th("cd("+Dq+tmp+Dq+")");
setdirectory(tmp);
Com1st("cd("+Dq+Dirwork+Dq+")");
・・・
・・・
setdirectory(Dirwork);

のように記述しましたが,

別に,pathを使って,
path="C:\KeTCindy\ketwork\spidermandata";
ReadOutData(path,"sprinkaku0.txt");
のような記述ができるようになりました.setdirectoryは不要です.
このpath方式がわかりやすいようです.

■KETcindyで「フレンチ・ブルドック」の顔を描いてみた・・・
(吹き出し付き)

French2
※「吹き出し」のコマンド(\ballonr)
は「refketlayer.pdf」を参照.

【スパイダーマン】
Spidermanketcindy3_2

・コード例
※データファイルは未掲載
Fhead="myspiderman";
Texmain="";

Ketinit();
Addax(0);
Setunitlen("5mm");

tmp="C:\KeTCindy\ketwork\spidermandata";
Com0th("cd("+Dq+tmp+Dq+")");
setdirectory(tmp);
Com1st("cd("+Dq+Dirwork+Dq+")");

//顔の輪郭線(黒)
ReadOutData("sprinkaku0.txt");
Setcolor("black",0.6);
Shade(["sprinkaku0"]);
Extractdata("sprinkaku0");

//顔の輪郭線(赤)
ReadOutData("sprinkaku.txt");
Setcolor(1/255*[169,37,46]);
Shade(["sprinkaku"]);
Extractdata("sprinkaku");

//放射状の糸(rad1.txt - rad10.txt)
forall(1..10,
  fn="rad"+text(#);
  ftmp=fn+".txt";
  ReadOutData(ftmp);
  Setcolor(1/255*[50,44,57]);
  Shade([fn]);
  Extractdata(fn);
);

Setpen(3);
//同心円状の糸(cir1.txt - cir10.txt)
forall(1..10,
  fn="cir"+text(#);
  ftmp=fn+".txt";
  ReadOutData(ftmp);
  Setcolor(1/255*[37,47,50]);
  Extractdata(fn);
);

Setpen(1);
//右の目
Setcolor(1/255*[24,23,23]);
ReadOutData("mer1.txt");
Shade(["mer1"]);
Extractdata("mer1");

Setcolor("black",0.2);
ReadOutData("mer2.txt");
Shade(["mer2"]);
Extractdata("mer2");

//左の目
Setcolor(1/255*[24,23,23]);
ReadOutData("mel1.txt");
Shade(["mel1"]);
Extractdata("mel1");

ReadOutData("mel2.txt");
Setcolor("black",0.2);
Shade(["mel2"]);
Extractdata("mel2");

setdirectory(Dirwork);

Windispg();


■KETcindyで「きさポン」の顔を描いてみた・・・
拡大してみると「でこぼこ」してます.

Kisaponkisarazu
「kisapon-kisarazu2.pdf」

・『マスコットキャラクター・きさポン』
http://www.city.kisarazu.lg.jp/13,0,31,411.html
http://www.city.kisarazu.lg.jp/resources/content/21911/20140730-142730.pdf

■小さな球・ボールの展開図を作る
A4サイズに入る小さなサイズ(直径5cm)で,幼児と遊ぶ遊具として作りました.
印刷してボールに貼る.色は4色です.

コード例は直径5cm,経度の分割数16の例です.
切り取り用のマーク線が必要ない場合にはその箇所を除く.
Ballirogami8
Ballirogami

・コード例

Fhead="balltenkaizu";
Texmain="";
Ketinit();
Addax(0);
Setunitlen("1cm");

//ballの4色
clr=["red","blue","limegreen","yellow"];

//ballの半径cm
rr=5/2;
//経度の分割数
ibun=16;//ibun=8
Defvar("rr",rr);
Defvar("ibun",ibun);

Paramplot("1","rr*[pi*sin(t)/ibun,pi/2-t]","t=[0,pi]");
Paramplot("2","rr*[-pi*sin(t)/ibun,pi/2-t]","t=[0,pi]");

Joincrvs("1",["gp1","gp2"],["notex"]);
Changestyle(["gp1","gp2"],["nodisp"]);

tmp=rr*pi/ibun;
Translatedata("0","join1",[tmp,0],["nodisp"]);

//ballの展開図の作成(舟形)
forall(0..(ibun-1),ii,
  if(ibun==8,
    tmp= mod(ii,4)+1;
    iro=clr_tmp;
  );
  if(ibun==16,
    tmp=floor(ii/2);
    tmp1=mod(tmp,4)+1;
    iro=clr_tmp1;
  );
  Setcolor(iro);
  tn=text(ii+1);
  shn="tr"+text(ii+1);
  tmp0=2*ii*rr*pi/ibun;
  Translatedata(tn,["tr0"],[tmp0,0]);
  Shade([shn],[1,"alpha->0.2"]);
);

//切り取り用のマーク線の描画
Setcolor("black");
//切り取り線(-)の左の座標
x1=-0.5;
y1=rr*pi/2;
P1=[x1,y1];
P2=[x1,0];
P3=[x1,-y1];
//切り取り線(-)
w1=0.2;
Listplot("s1",[P1,P1+[w1,0]]);
Listplot("s2",[P2,P2+[w1,0]]);
Listplot("s3",[P3,P3+[w1,0]]);
Translatedata("sr",["sgs1","sgs2","sgs3"],[2*pi*rr+0.7,0]);

//切り取り線(|)の左の座標と切り取り線
Q1=[0,y1+0.3];
Q2=[0,-y1-0.3];
Listplot("t",[Q1,Q1+[0,w1]]);
Listplot("b",[Q2,Q2+[0,-w1]]);
forall(1..2*ibun,
  tmp=rr*pi/ibun*#;
  Translatedata("t"+text(#),["sgt"],[tmp,0]);
  Translatedata("b"+text(#),["sgb"],[tmp,0]);
);

Windispg();


■回転する円柱に貼る色紙
Irogamigiris

Fhead="girisirogami";
Texparent="";

Ketinit();
Setunitlen("1cm");
giris1=1/255*[82,20,36];
giris2=1/255*[133,25,48];
giris3=1/255*[134,49,83];
giris4=1/255*[164,71,111];
giris5=1/255*[170,107,128];
giris6=1/255*[221,121,178];
clr=[giris1,giris2,giris3,giris4,giris5,giris6];

r=3/2;//円柱の半径cm
nn=6;//側面(円周)の分割数
hc=8.96;//円柱の高さcm
h=hc/5;
w=2*r*pi/nn;
println([h,w]);
xLst=apply(1..6,w*10);
yLst=apply(1..5,h*10);
rmvL=[];
Tabledatalight("",xLst,yLst,rmvL,["nodisp"]);

forall(1..5,ii,
  col1=clr_ii;
  col2=clr_(ii+1);
  forall(1..6,jj,
    if(mod(jj,2)==0,Setcolor(col1),Setcolor(col2));
    tmp=Findcell(tb,jj,ii);
    Shade(["fr"+text(ii)+text(jj)]);
    Framedata(text(ii)+text(jj),tmp_1,tmp_2,tmp_3);
  );
);

Windispg();



■CDサイズの色紙
直径12cmのCDに貼る色紙
(red+yellow->orange)
Daidaikoma

Fhead="cdkoma";
Texmain="";

Ketinit();
Addax(0);
Setunitlen("1cm");

red = 1/255*[255,0,0];
//green = 1/255*[0,255,0];
//blue = 1/255*[0,0,255];
//cyan = 1/255*[0,255,255];
//magenta = 1/255*[255,0,255];
yellow = 1/255*[255,255,0];


r=12/2;
A=[0,0];
B=A+[r,0];
C=[0,r];


Listplot("1",[B,A,C]);
Circledata("1",[A,B],["Rng=[0,pi/2]"]);

Setcolor(red);
Joincrvs("1",["sg1","cr1"]);
Shade(["join1"]);

Setcolor(yellow);
Reflectdata("1","join1",[A,C]);//[A,[0,r]]
Shade(["re1"]);

Setcolor(red);
Reflectdata("2","join1",[A]);
Shade(["re2"]);

Setcolor(yellow);
Reflectdata("3","join1",[A,B]);//[A,[r,0]]
Shade(["re3"]);

Windispg();



■サイコロ展開図
Animalcube


描画データを"C:\KeTCindy\ketwork\animalsdata"に置いた場合のコード例
・描画データ(11個のテキストファイル)
【データファイルの場所】
1) ketworkに11個のテキストファイルを直接おく.
2) \ketwork\animalsdataにおく(フォルダanimalsdata)
(11個のファイルをフォルダanimalsdataにまとめ,ketworkにおく)

「bza-kirin.txt」
「bzb-kirinme.txt」
「bzc-usagi.txt」
「bzd-usagime.txt」
「bze-neko.txt」
「bzf-pengin.txt」
「bzg-zou.txt」
「bzh-zoumimi.txt」

「bzi-zoume.txt」
「bzj-hituji.txt」
「bzk-hitujikao.txt」

●1)の構造のコード例
以下のコードから,訂正線の部分を除く.

Animalscube

Fhead="animalcube";
Texmain="";

Ketinit();
Addax(0);
Setunitlen("5mm");

//箱の座標
Q1=[-5,25];
Q2=[-5,15];
Q3=[-5,5];
Q4=[-15,5];
Q5=[-15,-5];
Q6=[-5,-5];
Q7=[-5,-15];
Q8=[5,-15];
Q9=[5,-5];
Q10=[15,-5];
Q11=[15,5];
Q12=[5,5];
Q13=[5,15];
Q14=[5,25];

m1=Q1+[0,2];
m2=Q1+[-2,-2];
m3=Q2+[-2,2];
m4=Q2+[-2,-2];
m5=Q3+[-2,2];
m6=Q6+[-2,-2];
m7=Q7+[-2,2];
m8=Q8+[2,2];
m9=Q9+[2,-2];
m10=Q12+[2,2];
m11=Q13+[2,-2];
m12=Q13+[2,2];
m13=Q14+[2,-2];
m14=Q14+[0,2];
forall(1..14,ii,
  tmp=parse("Q"+text(ii));
  Letter([tmp,"n1","Q"+text(ii)],["notex"]);
  tmp1=parse("m"+text(ii));
  Letter([tmp1,"n1","m"+text(ii)],["notex"]);
);

setdirectory("C:\KeTCindy\ketwork\animalsdata");

ReadOutData("bza-kirin.txt");
Setcolor("goldenrod",0.5);
Shade(["bza"]);
Extractdata("bza");

ReadOutData("bzb-kirinme.txt");
Setcolor("black",0.5);
Shade(["bzb"]);
Extractdata("bzb");

ReadOutData("bzc-usagi.txt");
Setcolor("tan",0.5);
Shade(["bzc"]);
Extractdata("bzc");

ReadOutData("bzd-usagime.txt");
Setcolor("rubinered",0.5);
Shade(["bzd"]);
Extractdata("bzd");

ReadOutData("bze-neko.txt");
Setcolor("maroon",0.5);
Shade(["bze"]);
Extractdata("bze");

ReadOutData("bzf-pengin.txt");
Setcolor("royalpurple",0.5);
Shade(["bzf"]);
Extractdata("bzf");

ReadOutData("bzg-zou.txt");
Setcolor("gray",0.5);
Shade(["bzg"]);
Extractdata("bzg");

ReadOutData("bzh-zoumimi.txt");
Shade(["bzh"]);
Extractdata("bzh");

ReadOutData("bzi-zoume.txt");
Setcolor("mahogany",0.5);
Shade(["bzi"]);
Extractdata("bzi");

ReadOutData("bzj-hituji.txt");
Setcolor("springgreen",0.5);
Shade(["bzj"]);
Extractdata("bzj");

ReadOutData("bzk-hitujikao.txt");
Setcolor("tan",0.5);
Shade(["bzk"]);
Extractdata("bzk");

Setcolor("black");
Setpen(1);
Listplot("yoko1",[Q1,Q14],["do,0.5,0.5"]);//dr実線 da破線 do点線
Listplot("yoko2",[Q2,Q13],["do,0.5,0.5"]);
Listplot("yoko3",[Q3,Q12],["do,0.5,0.5"]);
Listplot("yoko4",[Q6,Q9],["do,0.5,0.5"]);
Listplot("tate1",[Q1,Q7],["do,0.5,0.5"]);
Listplot("tate2",[Q14,Q8],["do,0.5,0.5"]);
Listplot("rinkaku",[m1,Q1,m2,m3,Q2,m4,m5,Q3,Q4,Q5,Q6,m6,m7,Q7,Q8,m8,m9,Q9,
Q10,Q11,Q12,m10,m11,Q13,m12,m13,Q14,m14,m1]);

setdirectory(Dirwork);

Windispg();


●2)の構造のコード例

Fhead="animalcube2";
Texmain="";

Ketinit();
Addax(0);
Setunitlen("5mm");

//箱の座標
Q1=[-5,25];
Q2=[-5,15];
Q3=[-5,5];
Q4=[-15,5];
Q5=[-15,-5];
Q6=[-5,-5];
Q7=[-5,-15];
Q8=[5,-15];
Q9=[5,-5];
Q10=[15,-5];
Q11=[15,5];
Q12=[5,5];
Q13=[5,15];
Q14=[5,25];

m1=Q1+[0,2];
m2=Q1+[-2,-2];
m3=Q2+[-2,2];
m4=Q2+[-2,-2];
m5=Q3+[-2,2];
m6=Q6+[-2,-2];
m7=Q7+[-2,2];
m8=Q8+[2,2];
m9=Q9+[2,-2];
m10=Q12+[2,2];
m11=Q13+[2,-2];
m12=Q13+[2,2];
m13=Q14+[2,-2];
m14=Q14+[0,2];
forall(1..14,ii,
  tmp=parse("Q"+text(ii));
  Letter([tmp,"n1","Q"+text(ii)],["notex"]);
  tmp1=parse("m"+text(ii));
  Letter([tmp1,"n1","m"+text(ii)],["notex"]);
);

//データのある場所を指定
tmp="C:\KeTCindy\ketwork\animalsdata";
Com0th("cd("+Dq+tmp+Dq+")");
setdirectory(tmp);
Com1st("cd("+Dq+Dirwork+Dq+")");

ReadOutData("bza-kirin.txt");
Setcolor("goldenrod",0.5);
Shade(["bza"]);
Extractdata("bza");

ReadOutData("bzb-kirinme.txt");
Setcolor("black",0.5);
Shade(["bzb"]);
Extractdata("bzb");

ReadOutData("bzc-usagi.txt");
Setcolor("tan",0.5);
Shade(["bzc"]);
Extractdata("bzc");

ReadOutData("bzd-usagime.txt");
Setcolor("rubinered",0.5);
Shade(["bzd"]);
Extractdata("bzd");

ReadOutData("bze-neko.txt");
Setcolor("maroon",0.5);
Shade(["bze"]);
Extractdata("bze");

ReadOutData("bzf-pengin.txt");
Setcolor("royalpurple",0.5);
Shade(["bzf"]);
Extractdata("bzf");

ReadOutData("bzg-zou.txt");
Setcolor("gray",0.5);
Shade(["bzg"]);
Extractdata("bzg");

ReadOutData("bzh-zoumimi.txt");
Shade(["bzh"]);
Extractdata("bzh");

ReadOutData("bzi-zoume.txt");
Setcolor("mahogany",0.5);
Shade(["bzi"]);
Extractdata("bzi");

ReadOutData("bzj-hituji.txt");
Setcolor("springgreen",0.5);
Shade(["bzj"]);
Extractdata("bzj");

ReadOutData("bzk-hitujikao.txt");
Setcolor("tan",0.5);
Shade(["bzk"]);
Extractdata("bzk");

setdirectory(Dirwork);//作業ディレクトリにもどる

Setcolor("black");
Setpen(1);
Listplot("yoko1",[Q1,Q14],["do,0.5,0.5"]);//dr実線 da破線 do点線
Listplot("yoko2",[Q2,Q13],["do,0.5,0.5"]);
Listplot("yoko3",[Q3,Q12],["do,0.5,0.5"]);
Listplot("yoko4",[Q6,Q9],["do,0.5,0.5"]);
Listplot("tate1",[Q1,Q7],["do,0.5,0.5"]);
Listplot("tate2",[Q14,Q8],["do,0.5,0.5"]);
Listplot("rinkaku",[m1,Q1,m2,m3,Q2,m4,m5,Q3,Q4,Q5,Q6,m6,m7,Q7,Q8,m8,m9,Q9,
Q10,Q11,Q12,m10,m11,Q13,m12,m13,Q14,m14,m1]);

Windispg();


■WriteOutDataなどの使い方のメモ
Mkbezierptcrv([A,B,C,D,E,F,G,H,K,L,M,N,O,P,Q,R,A]);
WriteOutData("bezier1.txt",["bza",bza]);


ReadOutData("bezier1.txt");
Extractdata("bza",["da"]);


●MkbezierptcrvとWriteOutDataによる図形データの書き出し例
・drawimageで使用する画像(heart.jpg):
Heart


Fhead="heart";
Texmain="";
Ketinit();
Addax(0);
drawimage([0,0],"heart.jpg",scale->1.5,alpha->0.4);
alpha(0.4);
Mkbezierptcrv([A,B,C,D]);
WriteOutData("heart1.txt",["bzaheart",bza]); //ハートの左半分のデータの書き出し
Reflectdata("1","bza",[A,D]);
  
WriteOutData("heart2.txt",["re1heart",re1]);
//ハートの右半分のデータの書き出し
Joincrvs("1",["bza","re1"]); 
WriteOutData("heart3.txt",["join1heart",join1]); //ハートの全形データの書き出し
Windispg();


作図の流れ
Pro00
Pro1
Pro12
Pro2
Pro3

●ReadOutDataとExtractdataによる図の作成例
上で書き出したデータファイルの内,
heart3.txtを用いてハートを描く.
Blheart

Fhead="dispheart";
Texmain="";
Ketinit();
Addax(0);
alpha(0.4);
mypink=1/255*[237,33,255];
Setcolor(mypink);
ReadOutData("heart3.txt");
Shade(["join1heart"]);
Extractdata("join1heart");
Windispg();


■太い線の端点を丸くする例
Sen1

図1

Sen2

図2

・点A,B,Cを取り,以下を実行すると図1が得られる.
Setpt(29); Drwpt(B); をいかすと図2となる

Fhead="sen0227";
Texparent="";

Ketinit();
Addax(0);

Setcolor("black",0.3);
Listplot([B,A,C,B],["dr,30"]);//
Listplotの線の太さ(30)
//Setpt(29);//
点の大きさ
//Drwpt(B);//点の表示
Windispg();


【メモ】
Setptの点の大きさ= 「Listplotの線の太さ」-1 とする.
Setptの点の大きさ= 30-1=29


« 2016年1月 | トップページ | 2016年3月 »

無料ブログはココログ
2017年8月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31