本プログラムは、Webブラウザ上で動作する強震動シミュレーターです。実際の強震観測記録(CSVデータ)を読み込み、その波形データに基づいて仮想空間内の振動台を加振させることで、地震時における室内の家具の挙動(転倒、滑動、ロッキングなど)を3D物理演算により疑似的に再現します。
Github Pages https://princepsnumerorum.github.io/shaking_table_test/
- 3Dリアルタイム物理演算: Three.js(3D描画)とCannon.js(剛体演算)を組み合わせ、地震波の3成分(NS、EW、UD)の入力を同時に受ける複雑な家具の挙動をリアルタイムにシミュレーションします。
- 多様な家具モデルとカスタマイズ: 本棚、衣装棚、机、椅子、ベッド、冷蔵庫、天井からの吊り照明などを配置可能です。コントロールパネルから各家具の「質量」や「重心高(%)」を変更し、パラメータの違いによる挙動の変化を比較できます。
- 波形チャートの連動可視化: 読み込んだデータから加速度・速度・変位グラフ(NS・EW・UDの3成分)を自動生成し、シミュレーションの進行時刻と完全に連動したシークバーを表示します。
- 高度な再生コントロール: 再生速度の変更(0.25倍〜2.0倍)、振幅倍率の調整および開始時刻(スキップ)設定機能を備えています。
以下の強震波形CSVファイルに対応しています。ファイルのエンコーディング(UTF-8、Shift-JIS)はシステムが自動で判別します。
- K-NET / KiK-net 形式(防災科学技術研究所)
ヘッダー行(
#で始まる行)を自動解析し、サンプリング周波数、継続時間、観測点コード、地震の発生時刻およびマグニチュード等を抽出します。KiK-netの6成分データが入力された場合は、地表成分(ch4〜6)を自動的に抽出して使用します。 - 気象庁(JMA)強震観測フォーマット NS、EW、UDの3成分がカンマ区切りで記録された標準的なCSV形式です。ヘッダー情報からサンプリングレートを自動で取得します。
ご提示いただいた文章の構成とニュアンスを活かしつつ、実際のソースコードに実装されている数学的・物理的アルゴリズム(漸化式や撃力ベースの摩擦モデル)を正確に反映させた形にブラッシュアップしました。そのままコピー&ペーストしてご活用いただけます。
加速度波形から変位波形へ積分変換する際、低周波ノイズに起因するベースライン・ドリフト(変位の発散)を防ぐため、データ形式に応じて以下の信号処理を適用しています。
-
K-NET / KiK-net データへの処理
全波形の平均値を算出してオフセット(ゼロ点ずれ)を除去した後、斎藤(1978)の漸化式フィルタ設計に準拠した5次Butterworthハイパスフィルター(通過域
$f_p$ = 0.1 Hz、阻止域$f_{\text{stop}}$ = 0.05 Hz、$A_p$ = 0.1 dB、$A_s$ = 10.0 dB)を適用します。実装されているデジタルフィルタ(2次セクション)の差分方程式は以下の通りです。
加速度波形にHPFをかけた後、以下の台形公式を用いて時間積分を行って速度を算出し、再度HPFを適用。さらに積分して変位を算出しHPFを適用する多段処理を踏んでいます。
-
気象庁データへの処理
気象庁公式の積分漸化式を用いています。速度波形は「カットオフ5秒の3次Butterworth積分特性(係数
$G, A_1, A_2, A_3$ )」、変位波形は「1倍強震計特性(固有周期$T_0$ = 6 s、減衰定数$h$ = 0.55に相当する係数$H, C_1, C_2, D_0, D_1, D_2$ )」の漸化式により算出されます。
速度の算出:
変位の算出:
入力波形が100Hz以外の場合は、係数設計に合わせるため事前に100Hzへの線形リサンプリング処理が自動適用されます。
リアルタイム物理エンジンによる通常の実装では、地震動のように微小な外力が連続して加わる環境で、本来静止しているべき物体が滑るように動いてしまうクリープ現象が発生することがあります。本シミュレーターではこの問題点を解消するため、インパルス(撃力)ベースの静止摩擦アルゴリズムを毎サブステップ
-
法線方向実効重力の計算: 毎フレーム、入力波形の上下動成分
$a_{y,\text{table}}$ による影響を加味した実効重力$g_{\text{eff}}$ を計算し、突き上げによる摩擦力の低下を正確に評価します。
-
静止摩擦限界の比較: 水平面内において、床に対する家具の相対速度を完全にゼロにするために必要な撃力(Impulse)要求値
$J_{\text{need}}$ と、クーロンの摩擦法則に基づく静止摩擦撃力の上限$J_{\max}$ を比較します。本モデルでは静止摩擦係数を動摩擦の1.3倍($\mu_s = 1.3\mu_k$)と設定し、垂直抗力$N = m \cdot g_{\text{eff}}$ として計算します。
-
速度の強制固着: 要求撃力が上限内に収まる($J_{\text{need}} \le J_{\max}$)場合、慣性力が静止摩擦限界を下回っていると判定し、物理エンジンの動摩擦計算をオーバーライドして家具の水平方向の速度を振動台(床面)に強制的に固着させます。同時に、鉛直軸(Yaw角)まわりの回転滑りに対しても、慣性モーメント
$I_y$ と接触面の有効半径$r_{\text{eff}}$ を用いた上限付きねじり摩擦撃力($L_{\max}$)を適用し、不自然なスピンを抑制します。
急激な加速度変化によって生じる誤判定(壁の突き抜け)を防ぐため、以下の最適化を行っています。
- タイムステップと反復回数: 物理演算のタイムステップを1/240秒に細分化し、ソルバーの反復回数を40に設定することで、ブラウザ環境における計算負荷と物理的精度の最適なバランスを確保しています。
- 力学挙動のチューニング: 家具ごとの重心オフセット(
cogY)を細かく設定し、現実の家具に近いリアルな転倒モーメントを再現しています。
- 波形ファイルの用意: 防災科学技術研究所(NIED)または気象庁が提供する強震観測データ(.csv)をダウンロードしておきます。
- 読み込み: 画面左側のコントロールパネルにある「CSVを読み込む」ボタンから対象のファイルを選択します(2004年新潟県中越地震の川口波など、一部フォーマットがズレているファイルは、Excelのデータツール「区切り位置」で修正してください)。
- 家具の設定: リストからシミュレーションを行いたい家具にチェックを入れます。必要に応じて「質量(kg)」や「重心高(%)」の数値を変更してください。
- 配置: 「室内に配置(リセット)」ボタンを押すと、初期状態として3D空間内に家具がセットされます。
- 加振: 「加振開始」ボタンを押すとシミュレーションがスタートします。
本シミュレーターは教育・防災啓発を目的とした簡易的な物理演算シミュレーターです。実際の地震時における家具の挙動・建物応答を正確に再現するものではありません。 本プログラムの計算結果を、実際の建築物や家具の耐震設計、安全性評価、または防災計画・被害想定の根拠として直接使用することは固く禁じます。現実の家具の挙動は、床材の微小な不均一性、建物の共振特性など、様々な要因によって複雑に変化します。本プログラムの使用によって生じたいかなる損害・不利益についても、作者は一切の責任を負いかねますので、あらかじめご了承ください。