円弧長
<arc.bat>
--------------------
@REM 円弧長測定
@echo off
REM
REM #jww
REM #cd
REM #1ci 円弧を指定してください
REM #0 表示位置を指定してください
REM #hr
REM #e
REM
jgawk -f arc.awk jwc_temp.txt>temp.txt
copy temp.txt jwc_temp.txt
del temp.txt
<arc.awk>
-------------------------
#円弧長の測定
#初期設定
BEGIN{pi=atan2(0,-1);dq="\"";k2=100;k3=1000;sp=5}
#円弧データの読込み
/^ci/{if(NF==8 && $7==1){x0=$2;y0=$2;r0=$4;th1=$5;th2=$6}
{if(th1>th2){ang0=360-th1+th2}if(th2>th1){ang0=th2-th1}}
{if(NF==4){r0=$4;ang0=360}}
{if(NF==8 && $7!=1){el=1}}}
#測定結果の出力
END{if(el==1){print "ch",0,0,1,0,dq,"楕円です"}
else{r=r0*k3;r=rnd(r)/k3;
ang=ang0*k2;ang=rnd(ang)/k2;
arc=r0*ang0*pi/180;arc=arc*k3;arc=rnd(arc)/k3;
printf "%s %d %d %d %d %s %s %.15g\n","ch",0,0,1,0,dq,"r=",r;
printf "%s %d %d %d %d %s %s %.15g\n","ch",0,-sp,1,0,dq,"ang=",ang;
printf "%s %d %d %d %d %s %s %.15g\n","ch",0,-2*sp,1,0,dq,"rθ=",arc}}
#ユーザー定義関数
#四捨五入
function rnd(x){if(x>0) return int(x+0.5)}
| 固定リンク
« 絶対値 | トップページ | エスケープシーケンス »
コメント
<スプリクトの修正に関して>
最初に公開したスプリクトは、
四捨五入した半径/円弧角を使って円弧長を算出した為、
小数第三位が適切な値とならない場合がありました。
投稿: somem | 2007年8月14日 (火) 14時38分