Skip to content

About

JavaFX-based Solar System Simulator

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SolarSystemFX

JavaFXによる太陽系シミュレーターです。
以前のProcessing版(旧プロジェクト)から移行して再設計・実装を行っています。

旧バージョン(Processing版)

旧バージョンのソースはこちら: https://github.com/0x000x7f/project2

実行方法

mvn clean javafx:run

使用技術

  • Java 21
  • JavaFX 21.0.1
  • Maven 3.9.6

主な機能

1. 基本機能

  • 太陽系の天体表示
    • 太陽
    • 惑星(水星~冥王星)
    • 月(地球の衛星)
  • 軌道の描画
    • 楕円軌道の正確な表現
    • 黄道面に対する傾斜角の考慮
    • 離心率の考慮
  • カメラ操作
    • フォーカス
    • 移動
    • ズーム

2. 最近の更新(2024-06-18)

  1. 軌道計算の改善

    • 計算順序の最適化(位置計算→角度更新)
    • 2次元表示に適した軌道傾斜の計算方法を実装
    • 角度の正規化による数値誤差の低減
  2. 表示の改善

    • 惑星のラベルを軌道上に配置
    • 軌道とラベルの色を20%明るく調整
    • 衛星(月)のラベルを非表示に変更
  3. 冥王星の実装

    • 最も大きな離心率(0.25)を持つ軌道
    • 最も大きな軌道傾斜角(15.5度)
    • 最も遅い公転速度(0.00006)

ライセンス

MIT License

座標系と軌道面

  • 黄道面(ecliptic plane)を基準面として使用
    • 黄道面:地球の公転軌道を含む平面
    • 太陽系の天体の軌道は、この黄道面に対する傾斜角で表現
    • 地球の軌道傾斜角を0度として、他の天体の傾斜角を相対的に表現

機能一覧

1. 基本機能

  • 太陽系の天体表示
    • 太陽
    • 惑星(水星~冥王星)
    • 月(地球の衛星)
  • 軌道の描画
    • 楕円軌道の正確な表現
    • 黄道面に対する傾斜角の考慮
    • 離心率の考慮
  • カメラ操作
    • フォーカス
    • 移動
    • ズーム

2. デバッグ機能

  • デバッグ情報表示(Dキー)
  • ヘルプ情報表示(Hキー)
  • 構造情報表示(Vキー)

3. 表示制御機能

  • 軌道の表示/非表示(Oキー)
  • ラベルの表示/非表示(Lキー)
  • 中心線の表示/非表示(Cキー)
  • 距離ガイドの表示/非表示(Gキー)

4. 天体の表示/非表示

  • 数字キーによる個別の天体の表示/非表示
    • 1: 水星
    • 2: 金星
    • 3: 地球
    • 4: 火星
    • 5: 木星
    • 6: 土星
    • 7: 天王星
    • 8: 海王星
    • 9: 冥王星
    • 0: 太陽
  • 全体の表示/非表示(Tキー)

実装の詳細

天体の特性

  1. 太陽

    • 位置: 画面中央
    • サイズ: 半径30
    • 色: 黄色
  2. 惑星

    • 水星: 距離100, 半径5, 灰色
    • 金星: 距離150, 半径8, オレンジ
    • 地球: 距離200, 半径10, 青色
    • 火星: 距離250, 半径7, 赤色
    • 木星: 距離350, 半径20, オレンジ
    • 土星: 距離450, 半径17, 黄色
    • 天王星: 距離550, 半径12, シアン
    • 海王星: 距離650, 半径12, 青色
    • 冥王星: 距離750, 半径4, 薄灰色
  3. 月

    • 地球からの距離: 20
    • サイズ: 半径3
    • 色: 薄灰色

軌道パラメータ

  • 離心率

    • 水星: 0.206
    • 金星: 0.007
    • 地球: 0.017
    • 火星: 0.094
    • 木星: 0.049
    • 土星: 0.057
    • 天王星: 0.046
    • 海王星: 0.011
    • 冥王星: 0.25
  • 軌道傾斜角(度)

    • 水星: 7.0
    • 金星: 3.4
    • 地球: 0.0
    • 火星: 1.9
    • 木星: 1.3
    • 土星: 2.5
    • 天王星: 0.8
    • 海王星: 1.8
    • 冥王星: 15.5

開発時の課題と解決策

1. 表示制御の問題

  • 問題: 太陽の表示/非表示が機能しない
  • 原因: 表示制御の条件分岐が不適切
  • 解決: 個別の表示状態と全体の表示状態の両方を考慮するように修正

2. 位置の問題

  • 問題: 太陽が画面左上に表示される
  • 原因: setCenterの呼び出しが抜けていた
  • 解決: initializeSolarSystem()で中心位置を設定

3. 月の実装

  • 問題: 月が太陽を中心に回ってしまう
  • 原因: 月の軌道計算が不適切
  • 解決: Moonクラスを別途実装し、地球を中心に回るように修正

4. パフォーマンス

  • 問題: 多数の天体描画時の処理負荷
  • 解決: 描画処理の最適化と条件分岐の整理

今後の改善点

  1. テクスチャマッピングの実装
  2. アニメーションの改善
  3. 多言語対応
  4. 外部設定ファイルのサポート
  5. パフォーマンスのさらなる最適化

技術スタック

  • Java
  • JavaFX
  • Maven

ビルドと実行

mvn clean package
mvn javafx:run

状態

  • JavaFXプロジェクト構造:✅
  • 描画Canvasの移行:✅
  • UI構築・クリック選択:🔄 実装中
  • YAMLによる外部定義:⏳ 未着手

詳細な移行背景と計画は README_solar_migration.md をご覧ください。

機能

  • 太陽系の3D表示
  • 惑星の公転と自転
  • カメラ操作(ズーム、パン)
  • 軌道表示
  • デバッグ情報表示

開発環境

  • Java 21(21.0.7)
  • Maven 3.9.6
  • JavaFX SDK 21.0.1

プロジェクト構造

SolarSystem/
├── src/
│   └── main/
│       ├── java/
│       │   └── solar/
│       │       ├── MainFX.java
│       │       ├── SolarSystemManager.java
│       │       ├── ...
│       └── resources/
│           └── (空でもOK)
├── pom.xml
├── README.md
├── README_solar_migration.md
└── docs/
    ├── architecture_v_2.md
    └── requirements_v_2.md

移行について

このプロジェクトは、ProcessingからJavaFXへの移行プロジェクトです。 詳細は README_solar_migration.md を参照してください。

About

JavaFX-based Solar System Simulator

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages