« 絶対値 | トップページ | エスケープシーケンス »

2007年8月14日 (火)

円弧長

円弧長を測定する外変です。半径/円弧角/円弧長を同時に表記します。
作図方法は、円弧選択(Lクリック)⇒作図位置を指示。
円の場合は、円弧角360°で円周長を表記します。
楕円/楕円弧には対応していません。

注)使用する場合は、自己責任でお願いします。m(__)m

070814_2

<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分

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: 円弧長:

« 絶対値 | トップページ | エスケープシーケンス »