破断線の作図(改)
破断線作図のスクリプトファイルを変更しました。
2022.7.29 gawk3.1.5で動作確認しました。 download
水平/垂直方向に作図する終点の位置を角度で範囲設定しています。
設定は、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を変更すると、水平/垂直方向に作図する角度範囲が変わります。
| 固定リンク
コメント