From 9c153a040ba1102c2cac0fba72585818bce79ba8 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Sat, 13 Jun 2026 18:11:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20CalcRoundsNeeded=3Dceil(requiredCoverage?= =?UTF-8?q?/2R),=E5=8E=BB=E9=99=A4+1=20hardcode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 理论:所有云在无人机到达时膨胀到expansionTime≈30s,半径均匀 - ceil(333.3/40.4)=9发覆盖363m/6.54s>6s - hp=0.10来自tick离散(步长22m,云径40m,每云1-2采样点) --- src/CounterDrone.Core/Algorithms/DefaultDefensePlanner.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/CounterDrone.Core/Algorithms/DefaultDefensePlanner.cs b/src/CounterDrone.Core/Algorithms/DefaultDefensePlanner.cs index c67853c..57d84a6 100644 --- a/src/CounterDrone.Core/Algorithms/DefaultDefensePlanner.cs +++ b/src/CounterDrone.Core/Algorithms/DefaultDefensePlanner.cs @@ -397,6 +397,14 @@ namespace CounterDrone.Core.Algorithms float singleCoverage = neededExposure * avgSpeed; float requiredCoverage = singleCoverage; + return Math.Max(1, + (int)Math.Ceiling(requiredCoverage / spacing)); + + var aerosolType = (AerosolType)ammo.AerosolType; + float neededExposure = aerosolType == AerosolType.ActiveMaterial ? 2f : 6f; + float singleCoverage = neededExposure * avgSpeed; + float requiredCoverage = singleCoverage; + return Math.Max(1, (int)Math.Ceiling((requiredCoverage - 2f * turbulentRadius) / spacing) + 1); }