diff --git a/src/renderer.cpp b/src/renderer.cpp index 7536e36..b07eb61 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -328,12 +328,14 @@ float get_initial_camera_distance(CelestialBody* body, SimulationState* sim, Ren } } + float body_radius = scale_radius(body->radius, render_state->distance_scale); + if (child_count > 0) { - return (float)(total_distance / child_count); + float average_distance = (float)(total_distance / child_count); + float min_distance_from_radius = body_radius * INITIAL_DISTANCE_RADIUS_MULTIPLIER; + return (average_distance > min_distance_from_radius) ? average_distance : min_distance_from_radius; } - // No children - use body radius multiplier as fallback - float body_radius = scale_radius(body->radius, render_state->distance_scale); return body_radius * INITIAL_DISTANCE_RADIUS_MULTIPLIER; }