「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は中心に大質量(10000)の正電荷粒子を配置し、周りに負電荷の小質量粒子を配置して配置して、負電荷の大きさ変えてを与えています。負電荷の大きさによって引力の大きさが異なり楕円軌道運動や双曲線軌道運動を行います。 万有引力の場合と同様に特定の初速度を与えると円軌道運動を行なわせることもできます。
(図1)クーロン相互作用による荷電粒子の運動(GIFアニメーション)
クーロン相互作用の与え方
physics.jsにおいて「クーロン相互作用」も仮想物理実験室オブジェクト(PhysLabクラス)のsetInteractionメソッドで追加することができます。第一引数と第二引数に結合する3次元オブジェクト、第三引数に万有引力相互作用を表すステート定数(PHYSICS.CoulombInteraction)、第四引数に誘電率を与えます。誘電率については後述します。
【プログラムソース1】クーロン相互作用の指定例(SinglePendulumMotion.html)
//////////////////////////////////////////////////////////////////// PHYSICS.physLab.balls = []; for( var i = 0; i<6; i++ ){ //球オブジェクトの準備 PHYSICS.physLab.ball[ i ] = new PHYSICS.Sphere({ ~ 省略 ~ }); //球オブジェクトを登場 PHYSICS.physLab.objects.push( PHYSICS.physLab.balls[ i ] ); } //////////////////////////////////////////////////////////////////// //初速度と相互作用の準備 //////////////////////////////////////////////////////////////////// PHYSICS.physLab.balls[ 0 ].position.set( 0, 0, 0 ); PHYSICS.physLab.balls[ 0 ].velocity.set( 0, 0, 0 ); PHYSICS.physLab.balls[ 0 ].mass = 10000; for( var i=1; i<6; i++ ){ PHYSICS.physLab.balls[ i ].position.set( 10, 0, 0 ); PHYSICS.physLab.balls[ i ].velocity.set( 0, 10, 0 ); PHYSICS.physLab.balls[ i ].mass = 1; PHYSICS.physLab.balls[ i ].charge = -i*2; //クーロン相互作用の定義 PHYSICS.physLab.setInteraction( PHYSICS.physLab.balls[ 0 ], PHYSICS.physLab.balls[ i ], PHYSICS.UniversalGravitation, { epsilon : 0.01, //誘電率 } ); } //仮想物理実験室のスタートメソッドの実行 PHYSICS.physLab.startLab();
物理学のはなし:クーロンの法則
クーロン力は電荷をもつ粒子(荷電粒子)同士に働く力です。18世紀、粒子の電荷の大きさに比例し、距離の2乗に反比例することが実験で示されました。 2つの荷電粒子の電荷をと、2粒子間の距離をrとした場合、クーロン力は次のとおりに表されます。
は誘電率と呼ばれる量で荷電粒子間に加わるクーロン力の大きさを与えるパラメータです。 誘電率はクーロン力を与える式の分母にあるので、小さいほどクーロン力は大きくなります。とが異符号の場合にはクーロン力は引力(負値)、同符号の場合に斥力(正値)となります。この法則は「クーロンの法則」と呼ばれます。