From 40ff101b6deb5c0d717727d7e392d883cabf4583 Mon Sep 17 00:00:00 2001 From: xfy Date: Thu, 16 Jul 2026 18:38:42 +0800 Subject: [PATCH] fix(planets): wire planet_radius_factor UI slider into orbit radii MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "Radius factor k" UI slider wrote params.planet_radius_factor and triggered respawn via the dirty flag, but spawn_planet_system ignored it — every planet's radius_factor came from rng.gen_range(2.0..4.0), so the slider was a silent no-op (it changed the ISCO readout label and respawned, but the actual orbit radii never reflected its value). Now samples radius_factor as planet_radius_factor ± 0.75, so the slider controls the orbital scale while preserving per-planet radius diversity (no fully-identical radii). Clamped to >=1.0 so jitter near the slider's low end can't drop a planet inside the ISCO. Caught by the Phase 3.4 final code review. --- src/scene/planets.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/scene/planets.rs b/src/scene/planets.rs index 7ff64df..f56058d 100644 --- a/src/scene/planets.rs +++ b/src/scene/planets.rs @@ -172,7 +172,10 @@ pub fn spawn_planet_system( let inclination = rng.gen_range(0.0..PI); let longitude = rng.gen_range(0.0..TAU); let phase = rng.gen_range(0.0..TAU); - let radius_factor = rng.gen_range(2.0..4.0); + // 半径因子以 UI 的 planet_radius_factor 为中心 ±0.75 散布, 既让滑条 + // 真正控制轨道尺度, 又保留 per-planet 半径多样性 (避免全同半径). + // 滑条范围 1.5..=5.0, 散布后实际 k ∈ [0.75, 5.75], 钳到 ISCO 外. + let radius_factor = (params.planet_radius_factor + rng.gen_range(-0.75..0.75)).max(1.0); // 颜色: 暖色行星 (橙/红/黄系), 避开蓝色 (易与背景星混淆) let hue = rng.gen_range(0.02..0.13); let color = hsv_to_rgb(hue, rng.gen_range(0.5..0.9), rng.gen_range(0.7..1.0));