|
|
|
|
@ -367,7 +367,14 @@ struct OrbitalBasis {
|
|
|
|
|
|
|
|
|
|
static OrbitalBasis calculate_orbital_basis(Vec3 r_vec, Vec3 velocity, Vec3 e_vec) { |
|
|
|
|
OrbitalBasis basis; |
|
|
|
|
basis.periapsis_dir = vec3_normalize(e_vec); |
|
|
|
|
Vec3 e_dir = vec3_normalize(e_vec); |
|
|
|
|
|
|
|
|
|
// For circular orbits, use position direction as periapsis direction
|
|
|
|
|
if (vec3_magnitude(e_dir) < 0.001) { |
|
|
|
|
basis.periapsis_dir = vec3_normalize(r_vec); |
|
|
|
|
} else { |
|
|
|
|
basis.periapsis_dir = e_dir; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Vec3 h_vec = vec3_cross(r_vec, velocity); |
|
|
|
|
basis.normal = vec3_normalize(h_vec); |
|
|
|
|
|