« 破断線の作図 | トップページ | 演算子/関数 »

2007年5月12日 (土)

破断線の作図(改)

破断線作図のスクリプトファイルを変更しました。

水平/垂直方向に作図する終点の位置を角度で範囲設定しています。
設定は、X軸/Y軸に対して±3°以内。

-----< brk_line.awk >-----

#破断線の作図
#定数の設定
BEGIN{
   pi=atan2(0,-1);
   th=15;ang=th*pi/180;sc=1;w=1.1;h=2;
   x0=0;y0=0;pth=3;
   an1=pth*pi/180;an2=(180-pth)*pi/180;an3=(90-pth)*pi/180;
   an4=(90+pth)*pi/180;an5=(-90+pth)*pi/180;an6=(-90-pth)*pi/180;

   lt="lt1" ;lc="lc1"
}
#終点座標の読取り
   /^hp1/{x1=$2;y1=$3}
#縮尺
   /^hs/{for(i=0;i<=9;i++) S[i]=$(i+2);
    S["a"]=$12;S["b"]=$13;S["c"]=$14;
    S["d"]=$15;S["e"]=$16;S["f"]=$17
}
   /^lg/{lg=substr($1,3);sc=S[lg]
}
#破断記号の座標計算
{
   an=atan2(y1,x1)}
{
   if(an>=-an1 && an<=an1){an=0;y1=0;y2=0;y5=0; 
   x2=x1/2-sc*w*cos(an);x5=x1/2+sc*w*cos(an)}
}
{
   if(an>=an2 && an<=pi){an=pi;y1=0;y2=0;y5=0; 
   x2=x1/2-sc*w*cos(an);x5=x1/2+sc*w*cos(an)}

}
{
   if(an>=-pi && an<=-an2){an=pi;y1=0;y2=0;y5=0; 
   x2=x1/2-sc*w*cos(an);x5=x1/2+sc*w*cos(an)}
}
{

   if(an>=an3 && an<=an4){an=pi/2;x1=0;x2=0;x5=0; 
   y2=y1/2-sc*w*sin(an);y5=y1/2+sc*w*sin(an)}
}
{
   if(an>=an6 && an<=an5){an=-pi/2;x1=0;x2=0;x5=0; 
   y2=y1/2-sc*w*sin(an);y5=y1/2+sc*w*sin(an)}

}

   x2=x1/2-sc*w*cos(an);x5=x1/2+sc*w*cos(an);
   y2=y1/2-sc*w*sin(an);y5=y1/2+sc*w*sin(an)
}
{
   x3=x1/2-sc*h*cos(pi/2-an-ang);y3=y1/2+sc*h*sin(pi/2-an-ang);
   x4=x1/2+sc*h*cos(pi/2-an-ang);y4=y1/2-sc*h*sin(pi/2-an-ang);
}
#各座標の出力
END{
  print lt;print lc;
  printf ("%.15g %.15g %.15g %.15g\n",x0,y0,x2,y2);
  printf ("%.15g %.15g %.15g %.15g\n",x2,y2,x3,y3);
  printf ("%.15g %.15g %.15g %.15g\n",x3,y3,x4,y4);
  printf ("%.15g %.15g %.15g %.15g\n",x4,y4,x5,y5);
  printf ("%.15g %.15g %.15g %.15g\n",x5,y5,x1,y1);
}
#----- 注記 -----
#1.線色は、"lc1"で線色1に設定しています。例)線色2にする場合は"lc2"に変更。
#2.pthを変更すると、水平/垂直方向に作図する角度範囲が変わります。

|

« 破断線の作図 | トップページ | 演算子/関数 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/94529/15037424

この記事へのトラックバック一覧です: 破断線の作図(改):

« 破断線の作図 | トップページ | 演算子/関数 »