「円の弧長,弦長,矢高,半径のどれか2つを与えて残りを計算」をkeisan.casio.jpにUP!
こういう計算について、このブログに検索されてくる方多いんですよね。カシオの高精度計算サイトの自作式にも何種類か上げてますが、そこのヒット数も結構あるということでこの際、全部まとめて一つの式にしました。
内容は、
”弧長(円弧の長さ)L、弦長d、矢高(円弧の高さ)h、半径rのどれか2つに値を
入力して、残りの2つを0と入力すると、その残りの2つおよび中心角を計算します。
L=r*θ, d=2*r*sin(θ/2), h=r*(1-cos(θ/2))を用い、ニュートン・ラフソン法で
計算しています。
”
リンクはこちら↓
半径を入力するものはニュートン法じゃなくて単なる逆三角関数で計算できますが。
ニュートン・ラフソン法の説明はこちら。
(参考)
Windowsアプリ版:
「円の弧長・弦長・矢高・半径のどれか2つを与えて残りを計算」するWindowsアプリ(.exe)を作ってみた。keisan.casio.jpとExcel VBA版のVB.net移植版。
Excel版:
円の弧長,弦長,矢高,半径のどれか2つを与えて残りを計算するExcelシート(VBA利用)を作った。ダウンロードできます。カシオの高精度計算サイトのExcel移植版。
では自作式の中身も公開。keisan.casio.jpで公開してもいいけどこちらのブログを見てくれた方のみに公開しましょう。
L=弧長;
d=弦長;
h=矢高;
r=半径;
if (L<>0 and h<>0 and d==0 and r==0) {
/* 円弧の長さと矢高から弦長 */
a=2.*h/L;
x=1.0;
for (j=0;j<=20;j=j+1) {
x=x-(-a*x*x+x*(1.-cos(x)))/(x*sin(x)-1.+cos(x));
}
th=2*x;
r=L/th;
d=2.*r*sin(x);
} elseif (L<>0 and d<>0 and h==0 and r==0) {
/* 円弧の長さと弦長から矢高 */
c=d/L;
x=1.0;
for (j=0;j<=20;j=j+1) {
x=x-((x*sin(x)-c*x*x)/(x*cos(x)-sin(x)));
}
th=2*x;
r=L/th;
h=r*(1.-cos(th/2.));
} elseif (L==0 and d<>0 and h<>0 and r==0) {
/* 弦長と矢高から円弧 */
a=h/d;
x=1.0;
for (j=0;j<=20;j=j+1) {
f=(1.-cos(x))/(2.*sin(x)) - a;
fd = (1.-cos(x))/(2.*sin(x)*sin(x));
x=x-f/fd;
}
th=2*x;
r=d/(2.*sin(x));
L=r*th;
} elseif (L<>0 and d==0 and h==0 and r<>0) {
/*円弧の長さと半径から弦長・矢高*/
th=L/r;
d=2.*r*sin(th/2.);
h=r*(1.-cos(th/2.));
} elseif (L==0 and d<>0 and h==0 and r<>0) {
/*弦長と半径から矢高・円弧 */
th = 2.*asin(d/(2.*r));
L=r*th;
h=r*(1.-cos(th/2.));
} elseif (L==0 and d==0 and h<>0 and r<>0) {
/*矢高と半径から弦長・弧長*/
th = 2.*acos(1.-(h/r));
L=r*th;
d=2.*r*sin(th/2.);
}
println(L);
println(d);
println(h);
println(r);
println(th*180/pi);
※これではだめな場合があるので修正入れました。
円の弧長,弦長,矢高,半径のどれか2つを与えて残りを計算(カシオの高精度計算サイト自作式)で180°以上、複数解に対応。
https://sci.tea-nifty.com/blog/2018/10/2180-9d2a.html
こういう話:
のような状態。。。想定していたのはこの絵の通り、180°以下。
使っている人がいるなら修正せねばなるまい。
なんで2つ解があるかというと、
« NHKスペシャル「ここまで来た!うつ病治療」のメモ - 2012/2/12 | トップページ | 「死ねばいいのに」(京極夏彦)を読んだ。 »
「学問・資格」カテゴリの記事
- 高周波・RFニュース2025年5月23日 HUBER+SUHNERが76-81GHzのミリ波レーダ向け3D waveguide antenna発表、Silicon LabsがIoT向けシリーズ3 SoC発表、GSMAがM360ユーラシアでAIと5Gのイノベーションと協業について発表、ロームがAIサーバー向けMOSFET発表(2025.05.23)
- 高周波・RFニュース 2025年5月22日 三星電機(SEMCO)が165℃対応の車載インダクタ発表、KYOCERA AVXがリップル電流についての技術文書発行、QualcommとXiaomiの契約15年目、OmdiaがNokiaをPrivate 5Gの2025の王者と決定(2025.05.22)
- Google ColabのJulia言語でFPUT問題(Fermi–Pasta–Ulam–Tsingou、非線形結合した振動子が最初に与えたモードに戻る再帰現象)をDifferentialEquations.jlの2階の常微分方程式ソルバーDynamicalODEProblemでシンプレクティック8次のKahanLi8で計算、振動子の動きも動画にしてみる。(2025.05.22)
- 高周波・RFニュース 2025年5月21日 TDKが0201のRFインダクタ発表、InfineonがUWBのFiraコンソーシアムの理事会に、ubloxがロボット用GNSSモジュール発表、FibocomがMediaTekのT930を使った5Gモジュール発表、Motolora Edge 60 Pro分解動画(2025.05.21)
コメント
« NHKスペシャル「ここまで来た!うつ病治療」のメモ - 2012/2/12 | トップページ | 「死ねばいいのに」(京極夏彦)を読んだ。 »
質問なのですが,円弧の長さと矢高から弦長も求めるときに使用している
x=x-(-a*x*x+x*(1.-cos(x)))/(x*sin(x)-1.+cos(x))
の式はどのようにして得られたのでしょうか?
投稿: | 2019年8月22日 (木) 10時40分