与えられた幅と高さに応じてカテナリー曲線を作成し、選択されたポイントの高さを表示します。
概要
本プログラムは、与えられた幅と高さに応じてカテナリー曲線を作成し、選択されたポイントの高さを表示します。
カテナリー曲線(Catenary)は物理学や幾何学では、密度が均一な鎖やケーブルなどが両端部分のみ固定されて、それ自体の重量だけで垂れているときに表示される曲線です。双曲線余弦関数で表すことができ、数学的には異なるが、放物線と似ているため混同されることがあります。カテナリー曲線のアーチは、カテナリー曲線を裏返した形状に設計して、すべての荷重が圧縮応力でのみ作用するように作られた構造物であるが、このような物理的な定義に基づくとカテナリー曲線状にアーチを作った時は引張応力が発生せず、最も頑丈です。(Wikipediaから説明の抜粋と修正)
下は、カテナリー曲線を利用した例です。
( https://en.wikipedia.org/wiki/Catenary から抜粋)
様々な使い道を考慮して、カテナリー曲線の幅を 1/2n で割ったときの各ポイントの高さを表示することができるようにしました。結果画面は、基本的なグラフ画面に加え、PDFおよび汎用CADファイルに出力することができます。
カテナリー曲線はカテナリー曲線の方程式に基づいて作成することができ、直交座標でカテナリー曲線の方程式は、式(1)のような形になります。
ここで cosh は双曲線余弦関数であり、aは懸垂曲線の曲げ程度を表すパラメータです。上記の式を利用して、実際にカテナリー曲線の幅と頂点の高さを入力してカテナリー曲線を作成するためには、式(1)を変換する必要があり、高さが同じである 2点 P1、P2があるとき、式(1)は、下記の式(2)のように変換されます。
ここで arcosh は逆双曲線余弦関数であり、WはP1、P2の水平距離としてカテナリー曲線の幅に対応し、Hはカテナリー曲線の頂点の高さ(P1= P2との高さの差)です。
ここまでは一般的な数学内容ですが、カテナリー曲線の方程式は、方程式をaについてまとめることができないという大きな問題を抱えています。つまり、WとHを入力してaを求めたらカテナリー曲線を作成することができますので、aを見つけることが重要なのですが、カテナリー曲線の方程式は、a=... W... H... の形に変換することができないということです。(私の数学能力不足かも知れません。もし式変換ができる方がいれば教えてください。)したがって、この問題を解決するためには仕方なく帰納計算に依存するしかありません。
以下は帰納法による本プログラムの計算プロセスです。
希望するカテナリー曲線の幅とHから適切なaの開始値を求める。
aを開始値から0.0001ずつ増加させながら、最大900万回繰り返し計算し、希望するカテナリー曲線の幅とWとの誤差が0.001よりも小さいa値を探す。
上記で見つかったaの値を入れたときのW値を求める。
上記のW、a、Hと式(2)を利用して、グラフを描く。
このような手順で計算されます。すなわち、本プログラムで得られた結果であるaの値は、最大0.001の誤差を持ち、それに応じW値も非常に小さい誤差を持つことになります。また、値に応じては何万回以上の計算を繰り返すので、計算に時間がかかります。しかし、最近改良で、高速化プロセスを搭載したので今ではほとんど瞬時に計算を終えるようになりました。
用途
カテナリー曲線が必要なすべての場所に使用できます。私の場合は、バイオリンのバースバーの初期の形態(ベースバーの各点の高さ)を決めるときに使用します(バイオリンのベースバー制作時にカテナリー曲線を使用する方法については、後日レポートする予定です)。
チェロのベースバーの制作にも使えるように計算可能なカテナリー曲線の最大幅を600に指定しました。
インストール
本プログラムは、ポータブルバージョンであるため、インストール作業は必要ありません。解凍し「Catenary_Curve_Generator_v.X.X.X」フォルダにある「Catenary_Curve_Generator_v.X.X.X.exe」ファイルをダブルクリックすると、すぐにプログラムが実行されます。ただし、コンピュータの性能によっては実行に時間がかかる場合もあります。
Comments