ホームページTips・script.aculo.us、x3dom、WEB3D、WEBGL、HTML5、等の
javascriptサンプル・使い方・入門(samples・examples)



Page 1
Page 2
Page 3
戻る

更新前のキャッシュが残っていると、正常に表示されない場合があります。
その場合、キャッシュの消去をしてから、リロードしてください。




 ■■■ NAS6LIB ■■■ 

ライセンスはGPLです

javascript ダウンロードページ

タイマー、ベクトル、行列、四元数、対数四元数、2/3D CG 行列計算 javascript ライブラリ
& ゲーム フレームワーク
timer,vector,matrix,quaternion,logarithm quaternion,2/3D CG matrix calculation javascript library
and game framework
Download : NAS6LIB_1_9_2_javascripts.zip:The latest update version:最新更新版
2016/05/24:Released NAS6LIB_1_0_0
2016/05/29:Update NAS6LIB_1_0_3:note:For safety reasons, it was subjected to a normalized to each calculation:安全の為、各計算にノーマライズをほどこした
2016/05/29:Note:english version:Source file in the folder is only './javascripts_english/' is the same.It was unified folder
2016/05/31:Update NAS6LIB_1_1_0:note:clean up & 1st step of debug is complete:清書とデバッグ第一段階終了
2016/06/26:Update NAS6LIB_1_2_0:note:Renewal
2016/07/28:Update NAS6LIB_1_3_0:note:add ./nas6lib/keyboard.js
2016/07/31:Update NAS6LIB_1_4_0:note:N6LMatrix.Vector() perfect calc
2016/08/04:Update NAS6LIB_1_5_0:note:add Str(), Parse(str), ToX3DOM(b) and FromX3DOM(sf)
2016/08/14:Update NAS6LIB_1_6_0:note:add Get/Set-Col/Row(), MoveMat(), LookAtMat2() and RotArcQuat()
2021/07/27:Update NAS6LIB_1_7_0:note:add ./nas6lib/hsv.js
2021/09/28:Update NAS6LIB_1_8_0:note:corrected to class description:クラス記述に訂正した
2022/10/11:Update NAS6LIB_1_8_1:note:clean up kepler
2023/07/12:Update NAS6LIB_1_8_2:note:add ./nas6lib/prime.js
2024/03/22:Update NAS6LIB_1_9_0:note:refine ToSchwartz()
2024/03/25:Update NAS6LIB_1_9_1:note:add GetEccentricity()
2024/04/09:Update NAS6LIB_1_9_2:note:add comment

NAS6LIB ヘルプ ドキュメント.htm
NAS6LIB ヘルプ ドキュメント.zip
NAS6LIB Help Document English.htm
NAS6LIB Help Document English.zip


NAS6LIB chktest.htm
NAS6LIB chktest.zip:Download src files
ベクター←→行列←→四元数の相互変換検証ページです。計算完璧
This interconversion verification page of vector ← → matrix ← → quaternion perfect calc


Update NAS6LIB_1_9_0より物理計算のシュワルツシルト補正項ToSchwartz()を
var ret = 3.0 * v * v / ( 1.0 - (e * e)); //楕円一般相対論
if(0.95 < e) ret = -0.5 * v * v; //直線特殊相対論
に更新しました(v:軌道速度,e:離心率)
計算は多分完璧です


 ■■■ 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・ルンゲクッタ法で作った 相対性理論的ニュートン力学物理エンジンで惑星軌道シミュレーターを作る

その13:経路探索(A*:A-STAR)&巡回セールスマン問題 : 巨大サイズ : くろにゃんこ

その14:プログラミングにおける配列テーブルテクニック
その15:javascriptのクラス活用法
その16:透視射影公式テスト

その17:ケプラー方程式カプセルライブラリ使用法
その18:CSVファイル処理
その19:物理演算その5・重力多体問題
その20:同次座標について(3D座標系の基本の基本)
その21:おさらいコモンクラスの宣言
その22:物理エンジンライブラリ解説(ケプラー方程式・ルンゲクッタ・相対論的万有引力)


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

THREE.JS (半透明シェーダー)

THREE.JS 3D演算で必要な計算(具体例)★とても重要★
THREE.JS THREE-VRM をいじってみた






ちょこっとjavascriptメモ
・自作クラスにtypenameプロパティを作って、型名を文字列で入れておくと、型判別が簡単で便利
・javascriptは型チェックがないので、コンストラクタの引数をtypenameで振り分ければ、いろんな構築宣言が出来て便利
・また、var a = new ClassA(class_a_obj);でdeep copyになるように実装するとさらに便利
・javascriptで参照オブジェクトを作るのは、var a = new Array(); でa[0]に突っ込めばおけ
・thisそのもののメソッドの引数渡しはエラーになるので、newで構築しているはずだから、var me = this;でmeを渡すとなぜか都合がいい





reveal.jsのテスト
reveal.jsというhtml/cssスライドショーライブラリがあって、試しに使ってみた





スケジューラー.htm

スケジューラー.zip



タイマーを用いたスケジューラー(アラーム)(タイマーマネージャーN6LTimerMan)のサンプル


コードの場所:
/javascripts/nas6lib/timer.js


タイマーマネージャー:
N6LTimerMan;
注釈:タイマーをいくつ作っても、setTimeout()はN6LTimerManに1個の一元管理です

構築:
new N6LTimerMan();

タイマー追加:
N6LTimerMan.add();

タイマーチェック間隔変更:
N6LTimerMan.changeinterval(int)
int:変更値:ミリ秒

開始:
N6LTimerMan.start()

停止:
N6LTimerMan.stop()


タイマー:
N6LTimerMan.timer[id];
id:タイマー番号

開始:
N6LTimerMan.timer[id].start();

停止:
N6LTimerMan.timer[id].stop();

リセット:
N6LTimerMan.timer[id].reset();

コピー:
N6LTimerMan.timer[id].copy(src);
src:元データ

経過時間:
N6LTimerMan.timer[id].now();

アラームセット:
N6LTimerMan.timer[id].setalerm(func(id),alm);
func(id):時間になった時に呼び出されるメソッド
alm:アラーム時間:ミリ秒

func(id)にid以外のデータを渡したいときは、サンプルのfunc周りを変更して、引数を渡すようにする
あるいは、グローバル変数で渡す

使用例:

//グローバルポジション
var TMan = new N6LTimerMan(); //構築

//タイマーが必要なメソッド内
...{
 ...
 TMan.add(); //タイマー追加
 TMan.timer[0].setalerm(function() { SignalFunc(0); }, 1000); //1秒後アラームセット
 ...
}

//呼び出しメソッド
function SignalFunc(id) {
 ...
 TMan.timer[id].setalerm(function() { SignalFunc(id); }, 1000); //連続セット
 //再帰関数的ではあるが、一連の処理の中に、setTimeout()が含まれているので
 //コールスタックを戻しているから、連続ループでもスタックオーバーフローにならない
 ...
}

呼び出し時間は、N6LTimerMan.interval=25(デフォルト値)以上が好ましいです





 ■■■ 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・ルンゲクッタ法で作った 相対性理論的ニュートン力学物理エンジンで惑星軌道シミュレーターを作る

その13:経路探索(A*:A-STAR)&巡回セールスマン問題 : 巨大サイズ : くろにゃんこ

その14:プログラミングにおける配列テーブルテクニック
その15:javascriptのクラス活用法
その16:透視射影公式テスト

その17:ケプラー方程式カプセルライブラリ使用法
その18:CSVファイル処理
その19:物理演算その5・重力多体問題
その20:同次座標について(3D座標系の基本の基本)
その21:おさらいコモンクラスの宣言
その22:物理エンジンライブラリ解説(ケプラー方程式・ルンゲクッタ・相対論的万有引力)


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

THREE.JS (半透明シェーダー)

THREE.JS 3D演算で必要な計算(具体例)★とても重要★
THREE.JS THREE-VRM をいじってみた



ポリゴンテスト.htm

ポリゴンテスト.zip

ポリゴンテスト_FPS.htm

ポリゴンテスト_FPS.zip

polygon test english.htm

polygon test english.zip

3D回転テストrottest.htm

3D回転テストrottest.zip

3D回転テスト・姿勢ベクトルpostest.htm

3D回転テスト・姿勢ベクトルpostest.zip




x3dom、自作ライブラリを用いたポリゴンのサンプル
タイマー、ベクトル、行列、四元数、対数四元数、2/3D CG 行列計算 javascript ライブラリ
timer,vector,matrix,quaternion,logarithm quaternion,2/3D CG matrix calculation javascript library

x3domは回転行列を回転ベクトルで保持しているので、ちょっとやっかいだけれど
自作ライブラリで、回転行列←→回転ベクトル、回転行列←→四元数
の相互変換を作ったら使いやすくなった
ついでに、タイマーを使ったメインループを作って、オブジェクト姿勢計算は
自作ライブラリでやって、ループ内からx3domに随時適用の方法だと
いつもの3Dプログラミングの感じで出来ました
手前味噌だけどNAS6LIBがあればx3domで簡単に何でも出来ます
バグ取りとエラー例外処理をもっとやらないとな・・・
bHomoフラグまわりがバグの住処・・・まだいないかな・・・
通常と同次座標を混在して使うことも出来るところはあるけど、かなり危険です
Front Faceに色を塗ってEulerAngle(オイラー角)を分かりやすくした

N6LMatrix.Vector()で、th=nπの時、N6LMatrix.Quratenion().Axis()で軸と角度を求めた
これで、全ての場合で、回転ベクトルが求められるようになった

「対角行列で」トレースが1の行列は右手か左手の法則でありえないから
M=
1, 0, 0, 0
0, 1, 0, 0
0, 0, 0,-1
0, 0,-1, 0
RV=3.14,0,0.707,0.707
とかが対応するのかなぁ・・・?

だから、多分、全ての場合で、回転ベクトルが求められるようになった

バグりそうな目星(うっかりするところ):
・ゼロ除算、-の根、undefined
・値や絶対値の1.0オーバー(ノーマライズされていない、逆三角関数の範囲外、など)
・objA = new N6LType(objB);とするところを、objA = objB;としてしまって、ディープコピーのし忘れ
・bHomoフラグ関連(bHomoが同次座標行列N6LMatrixの各行のN6LVectorはfalseなのに対して
それを軸として取り出そうとするときは、.SetHomo(true)をして
その後、元の行列を使うときは、.SetHomo(false)をしなければならない、など)
*SetHomo()がバグの元なので、その実行でthisの変更するのをやめて、戻り値を返す方式にした
*行や列の操作に、より安全なGet/Set-Col/Row()関数を用意した





スライドショー.htm

スライドショー.zip



script.aculo.us、x3domを共存して用いたスライドショー(3Dギャラリー)のサンプル

共存させるためのヘッダ部分


<!DOCTYPE html>
<html lang="ja">
<head>
<title>スライドショー</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">

<script language="JavaScript" type="text/javascript" src="./javascripts/scriptaculous/lib/prototype.js"></script>
<script language="JavaScript" type="text/javascript" src="./javascripts/scriptaculous/src/scriptaculous.js"></script>
<script language="JavaScript" type="text/javascript" src="./javascripts/scriptaculousAddNAS6/scriptaculousAddNAS6.js"></script>
<script language="JavaScript" type="text/javascript" src="./javascripts/nas6/common.js"></script>
<script language="JavaScript" type="text/javascript" src="./javascripts/nas6/slideshow.js"></script>

<!-- 共存スクリプト //-->
<script language="JavaScript" type="text/javascript">
for(var m in Array.prototype){
 Object.defineProperty(Array.prototype, m, { enumerable: false });
}
</script>

<script language="JavaScript" type="text/javascript" src="./javascripts/x3dom/jquery-2.1.4.min.js" ></script>
<link rel='stylesheet' type='text/css' href='./javascripts/x3dom/x3dom.css'>

<!-- 共存スクリプト //-->
<script language="JavaScript" type="text/javascript">jQuery.noConflict();</script>

<script language="JavaScript" type='text/javascript' src='./javascripts/x3dom/x3dom.js'> </script>
<link rel='stylesheet' type='text/css' href='./javascripts/x3dom/x3dom.css'>
<script language="JavaScript" type="text/javascript" src="./javascripts/nas6/slideshowx3dom.js"></script>

<style>
article, aside, dialog, figure, footer, header,
hgroup, menu, nav, section { display: block; }
#x3dabs{
 position: absolute;
 float: left;
 top: -75px;
 left: 10px;
 border: 0;
}
div.bmenu {
 float:left;
 width:39px;
 height:46px;
 z-index:2;
}
div.menu {
 float:left;
 width:80px;
 height:46px;
 z-index:2;
}
</style>
</head>

x3dom内部で、Array.prototypeの列挙をしてコードを実行しているので
script.aculo.usを読み込んだ後に、prototype.jsが
Array.prototypeに付け加えた列挙を禁止する必要があります
//列挙の禁止
for(var m in Array.prototype){
 Object.defineProperty(Array.prototype, m, { enumerable: false });
あとはx3domを読み込む前に、jQueryを読み込んでから
jQuery.noConflict()をして、$()の衝突を避ければOKです
この共存スクリプトをタグコメントアウトすると
なぜだか不思議とエラーになるので注意してください
あと、Array.prototypeの列挙を禁止した副作用があるかもしれません





スライドショー2.htm

スライドショー2.zip



x3domを用いたスライドショー(3Dギャラリー)のサンプル2
とてもシンプルに実装できます





スライドショーWithReveal.htm

スライドショーWithReveal.zip



x3dom,reveal.jsを用いたスライドショー(3Dギャラリー)のサンプル
reveal.jsのページ送りハック
このサンプルのような感じでreveal.jsにページ送り命令が出せます





太陽系惑星軌道計算シミュレーターフォーム by javascript.htm

太陽系惑星軌道計算シミュレーターフォーム by javascript.zip



x3dom、自作ライブラリを用いた太陽系シミュレーターのjavascriptのサンプル

軸の向きは(destx = srcy, desty = -srcx, destz = srcz)になっています
Edgeで閲覧すると処理が重くなってくる時があります
その場合、IEのリセットをしてください

このページの相対性理論は以下の加速度を使っています
線素
ds^2=-(cdt)^2+dx^2+dy^2+dz^2
w=ctiという4次元球
r^2=w^2+x^2+y^2+z^2
r^2=(cti)^2+x^2+y^2+z^2
からなり、円運動としてシュワルツシルト解の解法で解くと、
a=d^2r/dt^2=-(GM/r^2)(1.0+3.0(V/c)^2)
r半径G万有引力定数M質量V軌道速度c光速度
改訂版
後述する光の湾曲から係数を吟味して
a=d^2r/dt^2=-(GM/r^2)(1.0+(V/c)^2)
はきれいな形となったのでこちらを使用するようにしました
再改訂版
計算したら
特殊相対論補正項=-0.5(V/c)^2
一般相対論補正項=3.0(V/c)^2
合わせた相対論補正項=2.5(V/c)^2
a=d^2r/dt^2=-(GM/r^2)(1.0+2.5(V/c)^2)
っぽいのでこれを採用
これは回転中心の系から見た時間座標(つまり太陽の系)を用いたものになります





相対性理論衛星軌道計算シミュレーターフォーム by javascript.htm

相対性理論衛星軌道計算シミュレーターフォーム by javascript.zip



x3dom、自作ライブラリを用いた相対性理論衛星軌道計算シミュレーターのjavascriptのサンプル
軸の向きは(destx = srcy, desty = -srcx, destz = srcz)になっています
経過時間=0.0は 1970/1/1 9:0:0 (日本時間) です
Edgeで閲覧すると処理が重くなってくる時があります
その場合、IEのリセットをしてください
Jupiter swing byはSpeedの値で誤差が出ます





水星近日点移動計算シミュレーターフォーム by javascript.htm

水星近日点移動計算シミュレーターフォーム by javascript.zip

計量(c,i,j,k)のシュワルツシルト(球対称性を持つアインシュタイン方程式の真空解)の線素は 
τ固有時間c光速度t座標時r動径座標θ余緯度座標φ経度座標2m=rsシュワルツシルト半径=2GM/c^2M質量 
ds^2=(1-rs/r)c^2dt^2-dr^2/(1-rs/r)-r^2dθ^2-r^2sin^2θdψ^2
ds^2=(1-2m/r)c^2dt^2-dr^2/(1-2m/r)-r^2dθ^2-r^2sin^2θdψ^2・・・(*1)
その変分問題
δ∫((1-2m/r)c^2(dt/ds)^2-(dr/ds)^2/(1-2m/r)-r^2(dθ/ds)^2-r^2sin^2θ(dψ/ds)^2)ds=0・・・(*2)
各成分に対する方程式を導出すると
i=1,r,(*1)/ds^2
1=(1-2m/r)c^2(dt/ds)^2-(dr/ds)^2/(1-2m/r)-r^2(dθ/ds)^2-r^2sin^2θ(dψ/ds)^2・・・(*1A)
i=2,θ,
(d/ds)(r^2(dθ/ds))=r^2sinθcosθ(dψ/ds)^2・・・(*1B)
i=3,ψ,
(d/ds)(r^2sin^2θ(dψ/ds))=0・・・(*1C)
i=0,ct
(d/ds)((1-2m/r)(dt/ds))=0・・・(*1D)
成分を選んで
θはπ/2、dθ/ds=0、の赤道面上での話とし、θは定数なので(*1B)は無視する
ψは(*1C)よりr^2(dψ/ds)=h(定数)角運動量保存・・・(*3)
tは(*1D)より(1-2m/r)(dt/ds)=l(定数)エネルギー量保存・・・(*4)
(*1A)より
(1-2m/r)=(cl)^2-(dr/ds)^2-(h/r)^2(1-2m/r)・・・(*5)
rをψの関数として微分したものは
(d/dψ)(r(ψ))=r'=(dr/ds)(ds/dψ),(*3)より
(dr/ds)=r'(dψ/ds)=hr'/r^2,r=1/u,r'=-u'/u^2,(*5)より
(1-2mu)=(cl)^2-(hu')^2-(hu)^2(1-2mu)
u'^2=((cl)^2-1)/h^2+2mu/h^2-u^2+2mu^3・・・(*6)
ψで微分して
2u'u''=2mu'/h^2-2uu'+6mu^2u'・・・(*7)
u'=0,u=1/r(定数)という解は円軌道

u''+u=m/h^2+3mu^2・・・(*8)
この式はu''+u=m/h^2が万有引力の式に対応しイメージしてみると 
シュワルツシルト時空の重力による加速度RelativeGravityの式は 
r半径,G万有引力定数,M質量,V軌道速度,c光速度,S相対論補正項 
Rg=-(GM/r^2)(1+S) 
の形であるから 

ここで、h=r^2dψ/ds,m=kM/c^2,u=1/r,であって 
相対論補正項3mu^2を検証すると、m/h^2でくくり
u''+u=(m/h^2)(1+3mu^2/(m/h^2)=(m/h^2)(1+S)の形にして、Sを調べます
3mu^2/(m/h^2)=3u^2h^2=3(1/r^2)(r^2dψ/ds)^2=3r^2((dt/ds)(dψ/dt))^2=3r^2(dψ/dt)^2(1/c^2) 
=3(rdψ/dt)^2(1/c^2) 
(rdψ/dt)は円の接線方向の速度だからそれを軌道速度Vとみれば、3(V/c)^2と解けて 
相対論補正項S=3(V/c)^2だから 

ユークリッド幾何で 
シュワルツシルト時空の重力による加速度RelativeGravityの式は 
r半径,G万有引力定数,M質量,V軌道速度,c光速度,S相対論補正項 
Rg=-(GM/r^2)(1+S)=-(GM/r^2)(1+3(V/c)^2) 
と解ける

(*8)より
u''+u=A+εu^2・・・(*9)
u0=A+Bcosφとおくと
u(φ)=u0(φ)+εu1(φ)+ε^2u2(φ)+・・・
ε^2は小さいので無視する
u(φ)=A+Bcos((1+εk)φ)+εu1(φ)+・・・
u1''+u1=A^2+B^2cos^2φ+2(AB+kB)cosφ
k=-Aとして
u1''+u1=A^2+B^2cos^2φ=A^2+B^2(1+cos^2φ)/2=A^2+B^2/2+B^2cos^2φ/2=A^2+B^2/2-B^2cos^2φ/6
(*9)の近似解は
u(φ)=A+Bcos((1-εA)φ)+ε(A^2+B^2/2-B^2cos^2φ/6)
A=B=m/h^2=1/l,ε=3m,m=rs/2
u(φ)=(1/l)(1+cos((1-(3rs/2l))φ))+(9rs/4l^2)/2-(rs/4l^2)cos^2φ
第1項に注目しずれを調べる
cos((1-(3rs/2l))(2π+δφ))=-1
(1-(3rs/2l))(2π+δφ)=2π
δφ=3πrs/l
長軸L=2l/(1-e^2),離心率e,l=L(1-e^2)/2,r=L/2
δφ=3πrs/(r(1-e^2))[rad]
δφ=3(648000)rs/(r(1-e^2))[秒]

水星の離心率e=0.20563
水星の軌道長半径r=L/2=0.3871[AU]
1[AU]=149598700000[m]
水星の軌道長半径r=57909656770[m]
太陽のシュバルツシルト半径rs=2953[m]
水星の平均軌道速度V=47872.5[m/s]
光速度c=299792458[m/s]
V=√(rsc^2/2r)=47869.83528656[m/s]
V/c=1.596854714737e-4
(1-e^2)=0.9577163031
3π=9.42477796
3*360*60*60/2=1944000
2(V/c)^2=rs/r
rs/r=5.09932222829e-8
2(V/c)^2=5.09988996e-8

δφ=3π2(V/c)^2/(1-e^2)[rad]
δφ=5.018744e-7[rad]
δφ=3(648000)2(V/c)^2/(1-e^2)[秒]
δφ=0.10352[秒]

100年間の水星の近日点移動0.10352*415=42.9608[秒]


光の湾曲

rg太陽のシュバルツシルト半径=2.95e+6[m]、rs太陽の半径=6.955e+8[m]として
2rg/rs=4GMs/rsc^2=8.48e-6[rad]=1.75[秒]


シュワルツシルト時空の重力による加速度RelativeGravityの式は 
r半径,G万有引力定数,M質量,V軌道速度,c光速度,S相対論補正項 
Rg=-(GM/r^2)(1+S)=-(GM/r^2)(1+3(V/c)^2) 
万有引力定数G=6.67259e-11[m^3/kgs^2]、光速度:c=299792458[m/s]、太陽の質量Ms=1.9891e+30[kg]、 
太陽の直径2rsだけ進むのに速度cがかかる時間tは
t=2rs/c
その曲がる速度vは
v=Rgt
Rg=-(GM/r^2)(1+3(V/c)^2)=-4GMs/rs^2 
ゆえに
tanθ=v/c=(4GMs/rs^2)(2rs/c)/c=8GMs/rsc^2
θは1に比べて小さいから近似でき
θ=8GMs/rsc^2

あるいは

xy平面運動する物体の運動方程式
d^2x/dt^2=-4GMx/(x^2+y^2)^(2/3)
d^2y/dt^2=-4GMy/(x^2+y^2)^(3/2)
y軸に平行にx=rsを通る軌道x=rs,y=ct
d/dt≒cd/dy
d^2x/dy^2=-4GMsrs/c^2(rs^2+y^2)^(2/3)
近似解は
x=rs-(4GMs/rsc^2)√(rs^2+y^2)
|y|→∞でx→rs-(4GMs/rsc^2)|y|
したがって光の進行方向の変化δ
δ=8GMs/rsc^2

一般相対論だと
δ=4GMs/rsc^2
であるから

シュワルツシルト時空の重力による加速度RelativeGravityの式は 
r半径,G万有引力定数,M質量,V軌道速度,c光速度,S相対論補正項 
Rg=-(GM/r^2)(1+S)=-(GM/r^2)(1+1(V/c)^2) 

であれば、うまくいくのではないか



2r(V/c)^2=rs 
重力源シュワルツシルト半径=直径×(軌道速度/光速度)^2 

@1
太陽のシュバルツシルト半径rs=2953[m] 
光速度c=299792458[m/s] 
水星の軌道長半径r=57909656770[m] 
水星の平均軌道速度V=47872.5[m/s] 
rs=2r(V/c)^2=2953.328771 
金星の軌道長半径r=108208930000[m] 
金星の平均軌道速度V=35021.4[m/s] 
rs=2r(V/c)^2=2953.37571 
地球の軌道長半径r=149597870700[m] 
地球の平均軌道速度V=29780[m/s] 
rs=2r(V/c)^2=2952.31972872 
火星の軌道長半径r=227936640000[m] 
火星の平均軌道速度V=24130.9[m/s] 
rs=2r(V/c)^2=2953.5870263 
木星の軌道長半径r=778412010000[m] 
木星の平均軌道速度V=13069.7[m/s] 
rs=2r(V/c)^2=2958.893649 
土星の軌道長半径r=1426725400000[m] 
土星の平均軌道速度V=9672.4[m/s] 
rs=2r(V/c)^2=2970.2806 
天王星の軌道長半径r=2870990000000[m] 
天王星の平均軌道速度V=6800[m/s] 
rs=2r(V/c)^2=2954.18776416 
海王星の軌道長半径r=4495060000000[m] 
海王星の平均軌道速度V=5500[m/s] 
rs=2r(V/c)^2=3025.8644 


一般相対性理論万有引力加速度Rg=-(GM/r^2)(1+S)=-(GM/r^2)(1+K(V/c)^2) 
r半径,G万有引力定数,M質量,V軌道速度,c光速度,S相対論補正項 
K=1or2or3or3/r←これは小さすぎ 

K=1のとき
Rg=-(GM/r^2)(1+(V/c)^2) 
きれいな形
光の湾曲を満足する

K=2のとき
2(V/c)^2=rs/r 
の関係があるから
Rg=-(GM/r^2)(1+2(V/c)^2)=-(GM/r^2)(1+rs/r)
きれいな形
確かめ算はない

K=3のとき
Rg=-(GM/r^2)(1+3(V/c)^2)
3乗からの微分係数が出て3という係数ならそうかも
水星の近日点移動を満足する

どれか迷う


GPS衛星、速度は地球に対して毎秒約4000m。軌道は地球中心から26556752m 
特殊相対性理論の効果によりGPS衛星の原子時計は1日に7.2マイクロ秒ほど遅れます。 
一般相対性理論の効果から今度は1日あたり45.6マイクロ秒、時間が進む。 
差し引きで38.4マイクロ秒、時間が進んでしまいます。 

t'=t√(1-rs/r)=t√(1-2(v/c)^2) 
2(v/c)^2=3.56048e-16 

地球シュワルツシルト半径rs=0.009 
r=26556752

rs/r=3.38896865e-10

GPS衛星は人工物だから 
@1
のような完璧な軌道設定じゃないんだね

月で調べてみると 

rs=0.009 
r=384400000 
rs/r=2.341311e-11 

v=1022 
2(v/c)^2=2.32429e-11 

こういう風に完璧な軌道設定

直感では
墜落軌道:rs/r>2(v/c)^2 
安定軌道:rs/r=2(v/c)^2 
離脱軌道:rs/r<2(v/c)^2 
な気がするがどうだろう?


地球質量5.972e+24kg
地球半径6.371e+6[m]


GPS衛星
速度4000[m/s]
高度26556752[m]

特殊相対論効果-7.2e-6[s/day]
一般相対論効果45.6e-6[s/day]
足して38.4e-6[s/day]


相対論補正項は
α(v/c)^2=(4000/299792458)^2=1.78e-10α
1.78e-10α*86400=15.3e-6α=38.4e-6
α=2.5

係数のマジックナンバーは2.5だとつじつまが合う
でもこれは怪しいので

一般相対論だけとして再計算
相対論補正項は
α(v/c)^2=(4000/299792458)^2=1.78e-10α
1.78e-10α*86400=15.3e-6α=45.6e-6
α=3.0

係数のマジックナンバーは3だとつじつまが合う
これはいやマジで計算通り


ついでに特殊相対論として計算

相対論補正項は
α(v/c)^2=(4000/299792458)^2=1.78e-10α
1.78e-10α*86400=15.3e-6α=-7.2e-6
α=-0.5

で本当にいかがわしいけれど
α=3.0-0.5=2.5
で特殊+一般効果

したがって
シュワルツシルト時空の重力による加速度RelativeGravityの式は 
r半径,G万有引力定数,M質量,V軌道速度,c光速度,S相対論補正項 
Rg=-(GM/r^2)(1+S) 
相対論補正項S=2.5(V/c)^2
かな 






Page 1
Page 2
Page 3
戻る

更新前のキャッシュが残っていると、正常に表示されない場合があります。
その場合、キャッシュの消去をしてから、リロードしてください。