-
-
Notifications
You must be signed in to change notification settings - Fork 0
README‐Japanese

- 水星の近日点進動を99.9%以上の精度で再現
- 2.5PN項を含む相対論効果の検証可能
NAS6 によるプログラミング - nas6.net
NAS6LIB は、物理シミュレーション と 幾何学的変換 のための包括的な JavaScript ライブラリです。
元々はゲーム開発におけるリアルタイム 3D グラフィックス向けに開発されました。
基本的な線形代数演算を高度に最適化し、数値的に安定した実装を提供します。
主な特徴は、高度な 相対論的重力多体問題シミュレータ を備えており、水星の近日点通過などの複雑な軌道力学を再現できます。
動作環境 (オプション)
NAS6LIB は主要なブラウザ環境で動作します。
現在、以下のライブラリは必須ではありませんが、オプションとして動作を確認しています。
jQuery 3.7.1
x3dom 1.8.3
ThreeJS R177
関連ファイルは順次更新されます。
NAS6LIB で数値計算を行い、描画は既存の 3D ライブラリに任せることで、
このようなグラフィカルなページを作成できます。

太陽系シミュレーション (太陽系シミュレーション)
【太陽系シミュレーションDEMO】(https://nas6.net/solarsystem.htm)

衛星軌道シミュレーション (衛星軌道シミュレーション)
衛星軌道シミュレーション DEMO

フレネル効果 (Fresnel Effect)
フレネル効果デモ
NAS6LIB の動作を体験してください:
- メインデモページ: https://nas6mixfoolv.github.io/NAS6LIB/
- 太陽系惑星軌道シミュレーター: https://nas6.net/solarsystem.htm
- 衛星軌道シミュレーター: https://nas6.net/satellite.htm
- フレネル効果: [フレネル効果]デモ](https://nas6.net/javascripts/threejs/examples/WaterPlaneTest.htm)
リンク内の、
ijkl はテストする回転ベクトルです。
xyz は整合性を確認するオイラー角です。
-
自動テストによって有効性が検証されています:
デモ: https://nas6.net/testpoly_chktest/testpoly_chktest.htm -
3D回転テスト:
デモ: https://nas6.net/rot.htm
NAS6LIB_2_2_1 Zipファイル
SolarSystem デモ Zip ファイル
Satellite デモ Zip ファイル
シンプルテンプレート Zip ファイル
ThreeJS デモ Zip ファイル
自動テストによる有効性検証済み Zip ファイル
3D 回転テスト Zip ファイル
NAS6LIB は 通常の <script> で読み込める静的版 を基本としています。
必要な JavaScript ファイルを HTML に含めてください。
<script src="https://nas6mixfoolv.github.io/NAS6LIB/javascripts/nas6lib/vector.js"></script>
<script src="https://nas6mixfoolv.github.io/NAS6LIB/javascripts/nas6lib/matrix.js"></script>
<script src="https://nas6mixfoolv.github.io/NAS6LIB/javascripts/nas6lib/quaternion.js"></script>
<script src="https://nas6mixfoolv.github.io/NAS6LIB/javascripts/nas6lib/planet.js"></script>必要なユースケースに応じて、
vector.js, matrix.js, quaternion.js, planet.js などを追加してください。
もし ES Modules(import/export)で利用したい場合は、
同名の xxx.module.js を利用できます。
import { N6LVector } from "./vector.module.js";注意:
多くの.module.jsは「機械的にexportを追加しただけ」の最小対応です。
そのため、モジュール化に向かない構造のファイルでは
不具合が出る可能性があります。
問題があれば issue や PR をいただければ助かります。 NAS6LIB は基本的に静的版(通常の<script>)で利用できます。
ES Modules 版は必要なものだけ段階的に対応しており、
すべてのライブラリが完全にモジュール化されているわけではありません。
モジュール版で動作しない場合は、静的版をご利用ください。
簡単な JavaScript の例を以下に示します。
var v1 = new N6LVector([1, 2]);
var v2 = new N6LVector([3, 4]);
var v3 = v1.Add(v2);
console.log(v3.x); // 結果: [4, 6]NAS6LIB は、それぞれが特定の機能を提供する JavaScript モジュールのコレクションです。
vector.js: 2D、3D、N 次元計算のための基本的なベクトル演算を定義します。
matrix.js: 安定性とパフォーマンスを重視して設計されたコア行列演算が含まれています。
これには、同次座標(w パラメータを先頭とする)の独自の処理が含まれます。
quaternion.js: 回転を管理するための堅牢なクォータニオン演算を提供し、ジンバルロックなどの問題を回避するように設計されています。
rngkt.js: ルンゲ・クッタ法を実装します。これは常微分方程式を解くための強力な数値解析手法で、
物理シミュレーションでよく使用されます。
planet.js: ケプラー方程式の関数を備えており、軌道力学や天体シミュレーションに役立ちます。
masspoint.js: 物理シミュレーションなどで使われる、質点に関連する機能を実装します。
keyboard.js: インタラクティブアプリケーションのキーボード入力を管理し、高度なエイリアス管理と同時キー入力のサポートを提供します。
timer.js: 速度低下を引き起こすことなくメインループを効率的に実行し、シングルタスクのJavaScriptでマルチスレッドのような
フレームワークを実現するように設計されたタイマーマネージャーです。
hsv.js: HSV カラーモデルと RGB カラーモデル間の相互変換を処理します。
prime.js: 素数関連の計算用ユーティリティが含まれています。
common.js: 基本的なファイルダウンロードとユーティリティ関数を提供します。
このライブラリのベクトルと行列の要素順序は wxyz です。この順序により、同次座標(例: 2 次元の wxy と 3 次元の wxyz)において、
要素長の均一性と可変長が可能になります。計算も同次座標に合わせて調整され、すべての要素が w 値で除算されて算術演算が行われます。
例えば、Matrix × ZeroVector([1,0,0,0],bHomo=true) は、行列の平行移動同次ベクトルを返します。
NAS6LIB のコアとなる数学的計算(ベクトル、行列など)は、左手座標系に基づいています。
これは、DirectX ゲーム開発におけるその起源を反映しています。他の 3D ライブラリ
(例えば、主に右手座標系を使用する Three.js のような WebGL ベースのライブラリ)と統合する場合は、
特に Z 軸に関して、潜在的な軸の違いに注意してください。
主要なメソッドを含む詳細なクラスリスト、高度な相対論的軌道力学の公式、keyboard.js などのモジュールの具体的な使用例など、
より詳細な情報については、高度なドキュメントを参照してください。
NAS6LIB 高度なドキュメント
AdvancedReadMe
NAS6LIB のプロトタイプは、VC++ DirectX の航空戦闘ゲームから始まり、VB+VC#+XNA を経て、2016 年に現在の JavaScript
バージョンに引き継がれました。最初の開発は約 25 年前、2000 年頃に開始されました。将来的には、VC#+WASM として再び復活する可能性があります。
Programed by NAS6
note:NAS6LIB_1_2_0(2016/06/26):note:renewal
note:NAS6LIB_1_3_0(2016/07/29):note:add ./nas6lib/keyboard.js
note:NAS6LIB_1_4_0(2016/07/31):note:N6LMatrix.Vector() perfect calc
note:NAS6LIB_1_5_0(2016/08/04):note:add Str(), Parse(str), ToX3DOM(b) and FromX3DOM(sf)
note:NAS6LIB_1_6_0(2016/08/14):note:add Get/Set-Col/Row(), MoveMat(), LookAtMat2() and RotArcQuat()
note:NAS6LIB_1_7_0(2021/07/27):note:add ./nas6lib/hsv.js
note:NAS6LIB_1_8_0(2021/09/28):note:corrected to class description
note:NAS6LIB_1_9_0(2024/03/22):note:refine ToSchwartz()
note:NAS6LIB_1_9_1(2024/03/25):note:add GetEccentricity()
note:NAS6LIB_1_9_2(2024/04/09):note:add comment
note:NAS6LIB_2_0_0(2025/05/25):note:improved error handling
note:NAS6LIB_2_0_1(2025/05/26):note:Adaptation to the X3DOM environment
note:NAS6LIB_2_0_2(2025/06/08):note:N6LQuaternion bugfix
note:NAS6LIB_2_0_3(2025/06/10):note:N6LQuaternion & N6LLnQuaternion more bugfix
note:NAS6LIB_2_1_0(2025/06/11):note:add GetAccessor/Get/Set/Create
note:NAS6LIB_2_1_1(2025/06/14):note:refine Comp/Equal/EpsComp/EpsEqual
note:NAS6LIB_2_1_2(2025/06/17):note:Licensing arrangement
note:NAS6LIB_2_1_3(2025/10/11):note:N6LLnQuaternion bugfix
note:NAS6LIB_2_1_4(2025/11/04):note:N6LRngKt bugfix
note:NAS6LIB_2_1_5(2025/12/24):note:add clone()
note:NAS6LIB_2_1_6(2026/01/01):note:output log
note:NAS6LIB_2_1_7(2026/01/07):note:add ToGravityRadiationLoss()
note:NAS6LIB_2_1_8(2026/01/17):note:output log
note:NAS6LIB_2_2_0(2026/06/21):note:keplerWithAGM
note:NAS6LIB_2_2_1(2026/07/05):note:BugFix ToSchwartz, add timer.module.js, keyboard.module.js
note:NAS6LIB_2_2_2(2026/07/27):note:add ringbuffer.js, managedclass.js
note:NAS6LIB_2_2_3(2026/07/29):note:add date.js
note:NAS6LIB_2_2_4(2026/08/17):note:BugFix date.js
note:NAS6LIB_2_3_0(2026/08/19):note:supports ES modules.
note:NAS6LIB_2_3_1(2026/09/14):note:add BigIntCalculator.js BigFloatCalculator.js
licence:GPL-3.0