※このページではHTML5 (及びthree.js) 、数値計算ライブラリ (Numeric.js) を使用しています
ローカルファイル
読込ファイル(モデルファイル):
書込ファイル名(時系列データ):
対象物体
時刻まで
操作方法
基本操作マウスドラッグ(左ボタン) | 対象物を回転させます。 |
マウスドラッグ(右ボタン) | 対象物を平行移動させます。 |
マウスドラッグ(中央ボタン or ホイール) | 対象物を拡大・縮小させます。 |
開始 | 計算を開始します。 |
停止 | 計算を一時停止します。 |
初期状態に戻る | 物体の位置・速度を初期状態に戻します。 |
ファイル | ローカルファイルの読み込み・書き込みをします。 読み込みはモデルファイルを読み込みます。 対象ファイルを選択し、「読込」ボタンを押してください。 書き込みは1物体の位置・向き(オイラーパラメータ)の時刻歴データを出力します。 ファイル名・出力する物体・計算の終了時刻を入力後、 「書込」ボタンを押すとブラウザによってダウンロードされます。 (Javascriptの仕様で読み込みとは異なる操作になります。) なお出力時には時刻歴計算を実施するため相応の時間がかかります。 |
コンフィグ | モデルの表示設定をします。 コンター非表示でのモデル表示色、光源位置を設定できます。 |
X | 視点をx軸方向にしてy-z面を表示します。 |
Y | 視点をy軸方向にしてx-z面を表示します。 |
Z | 視点をz軸方向にしてx-y面を表示します。 |
プログラム概要
マルチボディダイナミクス(多体系運動)シミュレーションのプログラムです。
ここでは球を連ねた鎖(一昔前の照明スイッチの鎖のイメージ)
の振り子をシミュレートしています。
(解像度が粗くて球に見えないかもしれませんが。)
重力は z 軸−側に働いています。
時間積分は陽解法である4次のルンゲ=クッタ法を用いています。
汎用性が高いプログラムなので追々改造して色々使おうかと考えています。
今のところ妄想しているだけですが。
10自由度でこの動きならロボットできそうだなーとか。
参考文献
マルチボディダイナミクス(1)−基礎理論− 日本機械学会編 コロナ社
マルチボディダイナミクス(2)−数値解析と実際− 日本機械学会編 コロナ社
three.js による HTML5 3D グラフィックス[改訂版]上・下 遠藤理平著 カットシステム
three.js
Numeric Javascript