3Dプログラミング入門講座・その10:物理演算その2・相対性理論的ニュートン力学




電卓で相対性理論を解く方法


ニュートンの運動の第一法則
を改良して
ニュートンの運動の第一法則相対性理論補正
とする

###############
物体は、他の全ての物体から十分離れて
なんの影響も受けない状態では
静止または相対性理論による慣性抵抗を受ける
これを相対性理論補正の慣性の法則とする
###############

v≪cとして

直線運動の慣性抵抗は
-0.5(v/c)^2

円運動の慣性抵抗は
3(v/c)^2

合わせると
2.5(v/c)^2

とこうすれば
ニュートン力学も相対性理論位に
精密になると思います

################

計算例

L=1光年
v=0.5c
特殊相対性理論
a=√(1-(v/c)^2)=0.866
La/v=0.433[年]
相対性理論的慣性抵抗
a'=1-0.5(v/c)^2=0.875
La'/v=0.437[年]

GPS衛星
1日86400[s]
速度4000[m]
1日軌道長L=345600000[m]
理論値38.4e-6[s/日]
a=(1+38.4e-6)=1.0000384
La/v=86403.31776
(86403.31776/86400-1)=38.4e-6[s/日]
相対性理論的慣性抵抗
a'=(1+2.5(v/c)^2×86400)
=(1+4.45e-10×86400)
=(1+38.5e-6)=1.0000385
La'/v=86403.3264
(86403.3264/86400-1)=38.5e-6[s/日]

################
速度合成則
ある座標系K
Kに対して速度Vの等速運動を
している座標系K'
x軸ブーストに回転して

その速度合成則は

γ=(1-0.5(V/c)^2)とし

v'x=(vx-V)/(1-(vxV/c^2))
v'y=(vy/(1-(vxV/c^2)))γ
v'z=(vz/(1-(vxV/c^2)))γ

vx=(v'x+V)/(1+(v'xV/c^2))
vy=(v'y/(1+(v'xV/c^2)))γ
vz=(v'z/(1+(v'xV/c^2)))γ

x軸ブーストしたら元の回転に戻す

ソースコード参照
[./javascripts/nas6lib/rngkt.js(N6LRngKt.VelocityAdd3D())]
################

計算例
速度w(0.5c,0.25c,0.25c)に
速度W(-0.25c,-0.25c,-0.5c)を加える

x軸ブーストに回転する

w・x=(-0.25)c^2=-0.25c^2
左右手系の符号s=w・xの符号×-1
|w|=√(0.25+0.125+0.125)c=0.707c
|x|=c
cosΘ=(w・x)/|x||w|=-0.353607
wとxのなす角Θ=s×(cos^-1Θ)=1.93222
垂直ベクトルを回転軸とする
A=w×x=(0,0.25,-0.25)
wをA軸周りに回転
q=cos(Θ/2)+Asin(Θ/2)
=(0.568504,0,-0.2056701,0.2056701)

○○○|1-2y^2-2z^2○2xy-2wz○2zx+2wy|

Rq=○|2xy+2wz○1-2x^2-2z^2○2yz-2wx|

○○○|2zx-2wy○2yz+2wx○1-2x^2-2y^2|

○○○|1.1692○0.233849○0.233849|

Rq=○|-0.233849○0.915399○-0.0846|

○○○|-0.233849○-0.0846○0.915399|

行列をノーマライズする
|Rq[0]|=2.052894
|Rq[1]|=0.899798
|Rq[2]|=0.899798

○○○|0.569537○0.113912○0.113912|

Rqn=○|-0.25989○○○1○○○-0.094021|

○○○|-0.25989○-0.094021○○○○○1|

RqnW=(-0.44934c,-0.138017c,-0.411522c)=v'
V=(0.707c,0,0)

γ=(1-0.5(V/c)^2)=0.7500755

vax=(v'x+V)/(1+(v'xV/c^2))
=(-0.44934c+0.707c)/(0.682317)
=(0.25766c)/(0.682317)=0.377625c
vay=(v'y/(1+(v'xV/c^2)))γ
=(-0.138017c/(0.682317))0.7500755
=-0.151723c
vaz=(v'z/(1+(v'xV/c^2)))γ
=-0.452389c
v=va=(0.377625c,-0.151723c,-0.452389c)

元の回転に戻す

q'=cos(-Θ/2)+Asin(-Θ/2)
=(0.568504,0,0.2056701,-0.2056701)

○○○|0.569537○-0.113912○-0.113912|

R'qn=○|0.25989○○○1○○○-0.094021|

○○○|0.25989○-0.094021○○○○○1|

R'qnv=(0.283887c,-0.011048c,-0.339983c)=w'

ガリレイ変換における
w+W=(0.25c,0,-0.25c)
と求められた
w'=(0.283887c,-0.011048c,-0.339983c)
比べて、まあ妥当なんじゃないかと思います
ガリレイ変換に比べて加速しているのは
時間の縮みのせいなんじゃないかなあ

よってwにWを加えてw'が求められた

もっと単純な計算例
速度w(0.5c,0,0)に
速度W(0.25c,0,0)を加える

vax=(v'x+V)/(1+(v'xV/c^2))
=(0.5c+0.25c)/(1.125)
=0.667c
vay=(v'y/(1+(v'xV/c^2)))γ
=0
vaz=(v'z/(1+(v'xV/c^2)))γ
=0
v=va=(0.667c,0,0)

################
速度加速則
速度v,加速度a,時間dtのとき
|v|において最大値の軸をnとすると
v(n以外二つ)=√((1-v(n)^2)/2)

vab=tanh(|a|dt)
vac=(|v|+vab)/(|v|vab+1)

ret=(v+adt)

もしも1<vacだったら
ret=ret/vac

ソースコード参照
[./javascripts/nas6lib/rngkt.js(N6LRngKt.VelocityAccl3D())]
################

後はルンゲクッタ法で積分をすれば完成

ソースコード参照
[./javascripts/nas6lib/rngkt.js(N6LRngKt.accel())]
[./javascripts/nas6lib/rngkt.js(N6LRngKt.UpdateFrame())]
################




3Dプログラミング入門講座
NAS6LIB
ポリゴンテスト解説・x3dom使い方
その1:ベクトル
その2:行列
その3:クォータニオン
その4:基本総復習・実践
その5:応用その1・メッシュアニメーション、動的テクスチャ
その6:応用その2・GLSL、カスタムシェーダー、キーボード、ファイル
その7:応用その3・ゲームプログラミング、タグの動的追加
その8:応用その4・GLSL、シェーダー、その2
その9:物理演算その1・電卓で相対性理論を解く方法
その10:物理演算その2・相対性理論的ニュートン力学
その11:物理演算その3・ケプラー方程式で惑星軌道シミュレーターを作る
その12:物理演算その4・ルンゲクッタ法で作った 相対性理論的ニュートン力学物理エンジンで惑星軌道シミュレーターを作る


 ■■■ THREE.JSプログラミング講座 ■■■ 
THREE.JSテスト解説・THREE.JS使い方
THREE.JS examplesをいじってみた(フレネル反射透過シェーダー)


<<prev 電卓で相対性理論を解く方法 : ケプラー方程式で惑星軌道シミュレーターを作る next>>




戻る