You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.8 KiB
2.8 KiB
Configuration File Assumptions and Issues
Key Assumptions Found:
1. Format Assumptions (from config_loader.cpp)
- Line buffer limited to 256 characters (config_loader.cpp:30)
- Name limited to 64 characters (config_loader.cpp:31)
- All 10 fields must be present:
name mass radius x y z parent_index r g b(config_loader.cpp:19) - File format is space-delimited
2. Solar System Configuration Issues:
Problem 1: Moon position is incorrect
- Earth is at:
(1.496e11, 0, 0)m - Moon is at:
(1.500e11, 0, 0)m - Distance: ~4 million km, but Earth-Moon distance should be ~384,400 km (~3.844e8 m)
- The Moon should be at approximately
(1.496e11 + 3.844e8, 0, 0)or similar
Problem 2: Jupiter's moons positions
- Jupiter is at:
(7.785e11, 0, 0)m - Io is at:
(8.207e11, 0, 0)m - 422 million km from Jupiter (should be ~422,000 km = 4.22e8 m) - Europa is at:
(8.456e11, 0, 0)m - 671 million km from Jupiter (should be ~671,000 km = 6.71e8 m) - Ganymede/Callisto have similar issues
The moon positions appear to use absolute coordinates matching their orbital radii around the Sun, not relative positions around their parent bodies!
3. Binary Star Configuration Issues:
Problem 1: Both stars have parent_index = -1 - FIXED
- StarA:
parent_index = -1 - StarB:
parent_index = -1 This means both are treated as root bodies with zero velocity (config_loader.cpp:69)They won't orbit each other!- FIXED: System now detects multiple root bodies, calculates barycenter, and sets appropriate orbital velocities (config_loader.cpp:64-146, bodies.cpp:101-124)
Problem 2: Planet positions
- PlanetA1 is at
(3.5e11, 0, 0)while StarA is at(3.0e11, 0, 0)- only 50 million km apart - PlanetB1 is at
(-4.2e11, 0, 0)while StarB is at(-3.7e11, 0, 0)- only 50 million km apart - These seem reasonable as absolute positions, but the velocity calculation assumes circular orbits
4. Velocity Calculation Assumptions (config_loader.cpp:63-118):
- All orbits are assumed to be circular
- Orbits are calculated in the XY plane perpendicular to Z-axis (config_loader.cpp:92)
- Root bodies (parent_index = -1) get zero velocity
- Velocities are calculated relative to parent, then parent's velocity is added
5. Critical Assumption:
The code assumes positions are absolute (heliocentric), but for child bodies like moons, the positions in the config should be relative to their parent. This is not clearly documented and appears inconsistent!
Recommended Actions:
- Fix moon positions in solar_system.txt to be correct absolute coordinates
- Fix binary star system to have one star orbit the other (or implement barycenter)
- Document whether positions should be absolute or relative to parent
- Add validation to check if child body positions make sense relative to parent