Skip to content

dvansonsbeek/3d

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌌 Interactive 3D Solar System Simulation

License: GPL v3 Version Three.js

Solar System Simulation

πŸš€ Live Demo β€” Experience the simulation in your browser

The Interactive 3D Solar System Simulation shows the precession / eccentricity / inclination / obliquity / perihelion date movements of Earth, Moon, Sun and Planets coming together in a Holistic-Year cycle of 298,176 years, an Axial precession cycle of ~22,937 years, an Inclination precession cycle of 99,392 years and a Perihelion precession cycle of 18,636 years.


πŸ“¦ Installation

Prerequisites

  • Node.js (v16 or higher)
  • npm (comes with Node.js)

Quick Start

# Clone the repository
git clone https://github.com/dvansonsbeek/3d.git

# Navigate to project directory
cd 3d

# Install dependencies
npm install

# Start development server
npm start

The simulation will open in your browser at http://localhost:1234

Build for Production

npm run build

πŸ”­ The Model Explained

How it is modelled

  • The EARTH-WOBBLE-CENTER is the center of our solar system.
  • Earth is wobbling clockwise around the EARTH-WOBBLE-CENTER in a period of ~22,937 solar years, also known as Axial precession and therefore the Axial tilt changes.
  • The PERIHELION-OF-EARTH is orbiting the EARTH-WOBBLE-CENTER - and therefore Earth - counter-clockwise in a period of 99,392 solar years, also known as Inclination precession and therefore the inclination tilt changes.
  • Axial precession meets Inclination precession every 18,636 years.
  • Our Sun is orbiting the PERIHELION-OF-EARTH in a period of 1 solar year.
  • Therefore it shows as if the Sun is orbiting Earth.

What is actually happening

  • The Sun is (still) the center of our solar system.
  • Earth is wobbling clockwise around the EARTH-WOBBLE-CENTER in a period of ~22,937 solar years, also known as Axial precession and therefore the Axial tilt changes.
  • The PERIHELION-OF-EARTH is wobbling around the Sun counter-clockwise in a period of 99,392 solar years, also known as Inclination precession and therefore the inclination tilt changes.
  • Axial precession meets Inclination precession every 18,636 years.
  • Earth is orbiting the PERIHELION-OF-EARTH - close to the Sun - in a period of 1 solar year.
  • Therefore it shows Earth is actually orbiting the Sun.
  • So we still live in a Heliocentric solar system.
  • All planets in our solar system are orbiting their perihelion-point according to Kepler's 3rd law.

Additional explanation

  • The inclination (J2000 value ~1.57869Β°) and axial tilt together result in the obliquity of Earth's axis (J2000 value +23Β°26'21").
  • There are only two counter movements around Earth working against each other in a ratio of 3:13 ; Inclination:Axial which explains all movements around Earth (precession, eccentricity, obliquity, inclination, etc)
  • The currently experienced precession is NOT the mean value and all precession movements are always experienced in the same ratio (e.g. experienced perihelion precession is 13/16th of Axial precession: ~25,771Γ—13/16 = ~20,939 years)
  • The Perihelion precession cycle of 18,636 years determines the natural cycles of the length of solar days, sidereal days, solar years, sidereal years and anomalistic years.
  • The EARTH-WOBBLE-CENTER was aligned in 1246 AD with the PERIHELION-OF-EARTH and therefore the length of solar year in days and the length of sidereal year in seconds were MEAN in 1246 AD.
  • The difference between the sidereal day - stellar day leads to the difference solar year – sidereal year.

For more details see holisticuniverse.com.


🎯 Why 298,176 Years?

This number fits all observations best:

  1. Historic value longitude of perihelion 90Β°: 1245-12-14
  2. J2000 value longitude of perihelion: 6h51m47s = ~102.947Β°
  3. The Length of solar day, solar year in days, sidereal year in seconds aligned to 3D longitude values and historic values:
    • 1246 Length of solar day in SI seconds was ~31,556,929.19 SI seconds
    • 1246 Length of sidereal year in SI seconds was ~31,558,149.6847 SI seconds
    • 1246 Length of solar day was ~86,399.9913 SI seconds because of historic Delta T predictions
  4. Climate graphs with ~100k cycles as a cycle of 99,392 years (three times 99,392 years = 298,176 years)
  5. End of Last Glacial Maximum (LGM) around 21,000 BC and end of Younger Dryas around 9800 BC
  6. KEY EVIDENCE: Mercury perihelion precession aligned to exactly 532.3 arc seconds per century
  7. KEY EVIDENCE: Ratio Earth to EARTH-WOBBLE-CENTER compared to Earth to the Sun (~324.5) explains the difference sidereal day - stellar day leads to the difference solar year - sidereal year (~324.5/13Γ—16 = ~399.3)
  8. KEY EVIDENCE: Difference stellar day and sidereal day exactly according to theory (86164.0989036905-86164.0905308328)Γ—1000 = 8.37286 ms
  9. Obliquity correct both historic and current values
  10. Orbital Inclination to ICRF correct both historic and current values
  11. Eccentricity correct both historic and current values

πŸš€ Technical Basics

  • Uses a teaching/visualization scale: 1 AU = 100 units; 1 solar year = 2Ο€ (the fundamental time angle)
  • All other motions are expressed relative to these bases
  • The startdate is set to 21-06-2000 00:00 UTC because:
    • Close to actual June solstice (01:47 AM in the morning of 21 June)
    • Earth axis is pointing (close) to Polaris
    • Close to J2000 values so we can check and compare all values

πŸ›οΈ Core Architecture

Supports:

  • Planet tilts and custom orbit inclinations
  • Optional ring textures
  • Emissive + textured planets
  • Non-planet objects (perihelion, cycles) using MeshBasicMaterial
  • Starfield background and constellations
  • Dynamic ascending nodes and apparent inclinations

πŸ”¦ Lighting & Shadows

  • Primary light: DirectionalLight simulating the Sun
  • Dynamic shadow frustum: Updated based on focused planet
  • Fallback PointLight: Used when the Sun itself is selected
  • Shadows: Enabled only for true planets (not trace objects)

🌈 Materials

  • Planets: MeshPhongMaterial with bump, specular, and emissive options
  • Trace objects: MeshBasicMaterial with optional dimmed texture or fallback color

πŸ›°οΈ Scene Structure

Each planet is structured like this:

orbitContainer β†’ holds full orbit structure
  └── orbit β†’ holds orbit visuals and pivot
       └── pivotObj β†’ origin point offset to simulate eccentricity
            └── rotationAxis β†’ applies axial tilt
                 └── planetMesh β†’ spherical geometry, holds material
                      β”œβ”€β”€ ringObj (optional) β†’ Saturn-style rings
                      └── axisHelperObj (optional) β†’ debugging aid

🎯 Camera and Focus System

  • Focused object stored in o.lookAtObj
  • Camera controls.target updates each frame to follow focus
  • Light and ring center dynamically update with the focused object
  • Default focus on Earth

✨ Visual Effects

  • Focus ring: Shown around Earth when Sun is selected
  • Sun glow: Dynamically scaled by camera distance
  • Name tags and constellations: Fading and scaling based on camera distance
  • DOM overlay label: Follows selected planet on screen
  • Planet Hierarchy Inspector: Debug and analysis tool for orbital mechanics

🧠 UI Features

  • dat.GUI panel for visibility toggles
  • Zodiac glow toggle
  • Time controls (play, pause, speed)
  • Export functionality for solstice dates and object positions

πŸ“š Documentation

Detailed documentation is available in the /docs folder:


πŸ”œ Roadmap

  • Create 100% correct formulas for solstice dates (beyond J. Meeus formula)
  • Invariable plane improvements
  • Start model at 12-14-1246 for exact eccentricity
  • Confirm correct orbits for the Moon
  • Confirm correct orbits for all planets
  • Add more celestial objects

⭐ Credits


🧾 License

This software is licensed under the GNU General Public License (GPL-3.0).

See the LICENSE for details.


πŸ“© Contact

For questions about the model or if you want to help develop this further: