「physics.js」による仮想物理実験室
球体を単振動運動させよう!~線形ばね相互作用の与え方~
はじめに
本項物理シミュレーション環境構築用HTML5フレームワーク「physics.js」を用いて物理シミュレーションを行うための手順をチュートリアル形式で紹介する記事です。 最新版「physics.js」(リビジョン14、2017年04月05日現在)をここからダウンロードしてください。以下はチュートリアルの目次です。
- 1. 仮想物理実験室のつくりかた
- 2. 3次元オブジェクトを配置しよう!
- 3. 球体を運動させてみよう!~運動の有無・位置・速度の与え方~
- 4. 球体に重力を与えよう!~一定力の与え方~
- 5. 球体を床面に衝突させよう!~衝突相互作用の与え方~
- 6. 球体を回転運動させよう!~角速度の与え方~
- 7. 球体に空気抵抗を与えよう~抵抗力の与え方~
- 8. 運動する球体同士の衝突~衝突相互作用の与え方2~
- 9. 球体を単振動運動させよう!~線形ばね相互作用の与え方~
- 10. 球体を単振子運動させよう!~2点間距離固定拘束力の与え方~
- 11. 球体を楕円軌道運動させよう!~万有引力相互作用の与え方~
- 12. 万有引力によるポテンシャルエネルギーの3次元表示モード~ポテンシャルエネルギーの可視化方法~
- 13. 万有引力相互作用で円軌道運動をさせるための初速度の与え方
- 14. クーロン力で点電荷を運動させよう!~クーロン相互作用の与え方~
小技
3次元オブジェクト
- ・Floorクラス(床オブジェクト)
- ・Axisクラス(軸オブジェクト)
- ・Planeクラス(平面オブジェクト)
- ・Circleクラス(円オブジェクト)
- ・Boxクラス(箱オブジェクト)
- ・Cylinderクラス(円柱オブジェクト)
- ・Lineクラス(線オブジェクト)
- ・Pointクラス(点オブジェクト)
- ・Polygonクラス(ポリゴンオブジェクト)
- ・地球オブジェクト(Earthクラス)
- ・Surfaceクラス(曲面オブジェクト)
単振動運動する重力場中の球体
単振動運動とは、たとえばばねに吊るされたおもりが上下に運動する振動運動です。このような振動運動は元の位置に戻ろうとする復元力が働くことで生じます。
この復元力で最も単純なのが、支点からの距離に比例した復元力を与える線形ばねです。線形ばねについては後述する「物理学のはなし」にて解説します。
図1はこの線形ばねで結合された重力場中の球体の運動です。単振動している様子がわかると思います。6つの振動運動はばね定数(距離に比例する復元力の比例定数)が異なり、左から順番に2.0, 2.2, 2.4, 2.6, 2.8, 3.0が与えられています。ばね定数が大きいほど、振動の振幅が小さく、かつ振動数が大きくなります。
(図1)支点に線形ばねで結合された球体の運動(GIFアニメーション)
線形ばね相互作用の与え方
線形ばね相互作用も仮想物理実験室オブジェクト(PhysLabクラス)のsetInteractionメソッドで追加します。 第一引数と第二引数に結合する3次元オブジェクト、第三引数に線形ばね相互作用を表すステート定数(PHYSICS.LinearSpringConnection)、 第四引数に線形ばねのパラメータを与えます。線形ばねのパラメータには、復元力を規定する「ばね定数」「ばねの自然長」の他に、復元力には影響を与えない線形ばね可視化用のばねオブジェクトのパラメータを指定することができます。
【プログラムソース1】運動する球体同士の衝突(ballsCollision.html)
//////////////////////////////////////////////////////////////////// PHYSICS.physLab.balls = []; PHYSICS.physLab.boxes = []; for( var i = 0; i<5; i++ ){ //球オブジェクトの準備 PHYSICS.physLab.ball[ i ] = new PHYSICS.Sphere({ ~ 省略 ~ }); //球オブジェクトを登場 PHYSICS.physLab.objects.push( PHYSICS.physLab.balls[ i ] ); //箱オブジェクトの準備 PHYSICS.physLab.boxes[ i ] = new PHYSICS.Box({ ~ 省略 ~ }); //箱オブジェクトを登場 PHYSICS.physLab.objects.push( PHYSICS.physLab.boxes[ i ] ); } //////////////////////////////////////////////////////////////////// //相互作用の準備 //////////////////////////////////////////////////////////////////// //球体同士の衝突相互作用 for( var i = 0; i<5; i++ ){ //線形ばねの定義 PHYSICS.physLab.setInteraction( PHYSICS.physLab.balls[ i ], PHYSICS.physLab.boxes[ i ], PHYSICS.LinearSpringConnection, { k : 2.0+0.2*i, //ばね弾性力 L0 : 0.0, //ばねの自然長 visible : true, //ばねの表示 color : 0x3e8987, //描画色 radius :0.15, //ばねの半径 tube :0.03, //管の半径 windingNumber : 10 //ばねの巻数 } ); //重力の設定 (省略) ); //仮想物理実験室のスタートメソッドの実行 PHYSICS.physLab.startLab();
物理学のはなし7:ばねの復元力と線形近似
線形ばねの「線形」と「1次式」という意味を表す形容詞で、ばねの自然長からの伸びに比例した復元力が生じるばねを指します。 この比例定数はばね定数と呼ばれ、大きいほど強い復元力を生じます。ばね定数を、ばねの伸びをと表した場合、復元力は
で表されます。符号がマイナスなのは伸びの方向と反対方向の力であることを意味します。この復元力の表式は非常に理想化されているように感じるかもしれませんが、現実的なばねでも伸びが小さい領域ではこの表式が成り立ちます。というのも、現実的なばねの復元力は伸びに対して厳密には比例ではありません。つまり、伸びに比例する項だけではなく、伸びの2乗、伸びの3乗・・・に比例する項も存在します。
しかしながら、が1よりも十分小さい場合には、2乗以降の項は1乗よりも小さくなるため、無視することができます。
このように伸びの2乗以降を無視する近似は線形近似(第一次近似)と呼ばれ、物理現象を理解する上で最もよく利用される近似となります。
伸びの2乗以降が復元力に寄与するばねは非線形ばねと呼ばれ、式では取り扱いが難しくなっていきます。