From a7abba5de7680803ac55ef2208fcfdbb360e6ba4 Mon Sep 17 00:00:00 2001 From: Tian jianyong <11429339@qq.com> Date: Thu, 10 Apr 2025 19:39:00 +0800 Subject: [PATCH] =?UTF-8?q?Fix=E4=BA=86=E4=B8=80=E4=BA=9B=E5=B9=B2?= =?UTF-8?q?=E6=89=B0=E6=B5=8B=E8=AF=95=E7=9A=84=20BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Indicator/LaserDesignatorTests.cs | 10 ++-- .../Jamming/InfraredDetectorJammingTests.cs | 24 +++++----- .../src/Jamming/LaserBeamRiderJammingTests.cs | 11 +++-- .../Jamming/LaserDesignatorJammingTests.cs | 46 +++++++++--------- .../Jamming/LaserRangefinderJammingTests.cs | 48 +++++++++---------- .../MillimeterWaveAltimeterJammingTests.cs | 38 +++++++-------- .../MillimeterWaveRadiometerJammingTests.cs | 34 +++++++------ .../indicators/laser_designators/ld_001.json | 2 +- ThreatSource/src/Indicator/LaserBeamRider.cs | 18 +++++-- ThreatSource/src/Indicator/LaserDesignator.cs | 10 ++-- ThreatSource/src/Sensor/LaserRangefinder.cs | 2 + .../src/Sensor/MillimeterWaveAltimeter.cs | 2 + .../src/Simulation/SimulationConfig.cs | 9 ++++ 13 files changed, 135 insertions(+), 119 deletions(-) diff --git a/ThreatSource.Tests/src/Indicator/LaserDesignatorTests.cs b/ThreatSource.Tests/src/Indicator/LaserDesignatorTests.cs index 7116ba4..20efeab 100644 --- a/ThreatSource.Tests/src/Indicator/LaserDesignatorTests.cs +++ b/ThreatSource.Tests/src/Indicator/LaserDesignatorTests.cs @@ -26,7 +26,7 @@ namespace ThreatSource.Tests.Indicator { LaserPower = 1000, LaserDivergenceAngle = 0.001, - JammingResistanceThreshold = 10000, + JammingResistanceThreshold = 1.0, LaserWavelength = 1.06 }; @@ -42,7 +42,7 @@ namespace ThreatSource.Tests.Indicator var designatorInitialMotion = new MotionParameters { - Position = new Vector3D(0, 0, 0), + Position = new Vector3D(0, 100, 0), Orientation = new Orientation(0, 0, 0), InitialSpeed = 0 }; @@ -106,9 +106,9 @@ namespace ThreatSource.Tests.Indicator _simulationManager.PublishEvent(new LaserJammingEvent { JammingPower = jammingPower, - Wavelength = 1.05, - JammingSourcePosition = new Vector3D(50, 0, 0), - JammingDirection = new Vector3D(-1, 0, 0), + Wavelength = 1.06, + JammingSourcePosition = new Vector3D(0, 10, 0), + JammingDirection = new Vector3D(0, 1, 0), JammingAngleRange = Math.PI / 4, JammingMode = JammingMode.Noise, SenderId = "jammer1" diff --git a/ThreatSource.Tests/src/Jamming/InfraredDetectorJammingTests.cs b/ThreatSource.Tests/src/Jamming/InfraredDetectorJammingTests.cs index 04ef939..c114f21 100644 --- a/ThreatSource.Tests/src/Jamming/InfraredDetectorJammingTests.cs +++ b/ThreatSource.Tests/src/Jamming/InfraredDetectorJammingTests.cs @@ -75,13 +75,13 @@ namespace ThreatSource.Tests.Jamming // 创建干扰事件 var jammingEvent = new InfraredJammingEvent { - JammingPower = 500.0, // 高于阈值 - Wavelength = 4, // 中波红外范围 - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), // 指向探测器 - JammingAngleRange = Math.PI / 4, // 45度角 + JammingPower = 500.0, + Wavelength = 4, + JammingSourcePosition = new Vector3D(10, 10, 0), // 更靠近探测器,且角度更小 + JammingDirection = new Vector3D(-0.7071, -0.7071, 0), // 45度角指向探测器 + JammingAngleRange = Math.PI / 4, JammingMode = JammingMode.Noise, - Duration = null // 持续干扰 + Duration = null }; // Act @@ -147,11 +147,11 @@ namespace ThreatSource.Tests.Jamming { JammingPower = 500.0, Wavelength = 4, - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), + JammingSourcePosition = new Vector3D(10, 10, 0), + JammingDirection = new Vector3D(-0.7071, -0.7071, 0), JammingAngleRange = Math.PI / 4, JammingMode = JammingMode.Noise, - Duration = 0.5 // 0.5秒后过期 + Duration = 0.5 }; // Act - 应用干扰 @@ -180,11 +180,11 @@ namespace ThreatSource.Tests.Jamming { JammingPower = 500.0, Wavelength = 4, - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), + JammingSourcePosition = new Vector3D(10, 10, 0), + JammingDirection = new Vector3D(-0.7071, -0.7071, 0), JammingAngleRange = Math.PI / 4, JammingMode = JammingMode.Noise, - Duration = null // 持续干扰 + Duration = null }; // Act - 应用干扰 diff --git a/ThreatSource.Tests/src/Jamming/LaserBeamRiderJammingTests.cs b/ThreatSource.Tests/src/Jamming/LaserBeamRiderJammingTests.cs index 0cbea2e..cd27c7f 100644 --- a/ThreatSource.Tests/src/Jamming/LaserBeamRiderJammingTests.cs +++ b/ThreatSource.Tests/src/Jamming/LaserBeamRiderJammingTests.cs @@ -30,6 +30,7 @@ namespace ThreatSource.Tests.Jamming var config = new LaserBeamRiderConfig { LaserPower = 100, + LaserWavelength = 1.06, ControlFieldDiameter = 5.0, MaxGuidanceDistance = 5000, JammingResistanceThreshold = 0.05 // 设置干扰抗性阈值为50mW @@ -77,7 +78,7 @@ namespace ThreatSource.Tests.Jamming var jammingEvent = new LaserJammingEvent { JammingPower = 2000, // 高功率干扰 - Wavelength = 1.05, + Wavelength = 1.06, JammingSourcePosition = new Vector3D(50, 0, 0), JammingDirection = new Vector3D(-1, 0, 0), // 指向激光驾束仪 JammingAngleRange = Math.PI / 4, // 45度角 @@ -109,7 +110,7 @@ namespace ThreatSource.Tests.Jamming var jammingEvent = new LaserJammingEvent { JammingPower = 2000, // 高功率干扰 - Wavelength = 1.05, + Wavelength = 1.06, JammingSourcePosition = new Vector3D(50, 0, 0), JammingDirection = new Vector3D(-1, 0, 0), JammingAngleRange = Math.PI / 4, @@ -152,7 +153,7 @@ namespace ThreatSource.Tests.Jamming var jammingEvent = new LaserJammingEvent { JammingPower = 2000, // 高功率干扰 - Wavelength = 1.05, + Wavelength = 1.06, JammingSourcePosition = new Vector3D(50, 0, 0), JammingDirection = new Vector3D(-1, 0, 0), JammingAngleRange = Math.PI / 4, @@ -190,7 +191,7 @@ namespace ThreatSource.Tests.Jamming var jammingEvent = new LaserJammingEvent { JammingPower = 2000, // 高功率干扰 - Wavelength = 1.05, + Wavelength = 1.06, JammingSourcePosition = new Vector3D(50, 0, 0), JammingDirection = new Vector3D(-1, 0, 0), JammingAngleRange = Math.PI / 4, @@ -225,7 +226,7 @@ namespace ThreatSource.Tests.Jamming var jammingEvent = new LaserJammingEvent { JammingPower = 2000, // 高功率干扰 - Wavelength = 1.05, + Wavelength = 1.06, JammingSourcePosition = new Vector3D(50, 0, 0), JammingDirection = new Vector3D(-1, 0, 0), JammingAngleRange = Math.PI / 4, diff --git a/ThreatSource.Tests/src/Jamming/LaserDesignatorJammingTests.cs b/ThreatSource.Tests/src/Jamming/LaserDesignatorJammingTests.cs index 72f75df..35502f1 100644 --- a/ThreatSource.Tests/src/Jamming/LaserDesignatorJammingTests.cs +++ b/ThreatSource.Tests/src/Jamming/LaserDesignatorJammingTests.cs @@ -30,8 +30,8 @@ namespace ThreatSource.Tests.Jamming { LaserPower = 100, LaserDivergenceAngle = 0.001, - JammingResistanceThreshold = 0.01, // 设置干扰抗性阈值为10mW,适应球面扩散模型 - LaserWavelength = 1.06 + JammingResistanceThreshold = 0.05, // 干扰阈值50mW + LaserWavelength = 1.06 // 工作波长1.06μm }; // 初始化激光指示器 @@ -76,13 +76,13 @@ namespace ThreatSource.Tests.Jamming // 创建干扰事件 var jammingEvent = new LaserJammingEvent { - JammingPower = 2000, // 高于阈值 - Wavelength = 1.05, - JammingSourcePosition = new Vector3D(50, 0, 0), - JammingDirection = new Vector3D(-1, 0, 0), // 指向激光指示器 - JammingAngleRange = Math.PI / 4, // 45度角 + JammingPower = 2000, + Wavelength = 1.06, // 匹配波长1.06μm + JammingSourcePosition = new Vector3D(5, 0, 0), + JammingDirection = new Vector3D(-1, 0, 0), + JammingAngleRange = Math.PI / 4, JammingMode = JammingMode.Noise, - Duration = null // 持续干扰 + Duration = null }; // Act @@ -105,7 +105,7 @@ namespace ThreatSource.Tests.Jamming var jammingEvent = new LaserJammingEvent { JammingPower = 500, // 角度范围外的干扰 - Wavelength = 1.05, + Wavelength = 1.06, JammingSourcePosition = new Vector3D(0, 50, 0), // 位于上方 JammingDirection = new Vector3D(0, 0, 1), // 指向前方,不是指向指示器 JammingAngleRange = 0.1, // 很小的角度范围 @@ -132,7 +132,7 @@ namespace ThreatSource.Tests.Jamming var jammingEvent = new LaserJammingEvent { JammingPower = 10, // 低功率干扰 - Wavelength = 1.05, + Wavelength = 1.06, JammingSourcePosition = new Vector3D(50, 0, 0), JammingDirection = new Vector3D(-1, 0, 0), JammingAngleRange = Math.PI / 4, @@ -181,13 +181,13 @@ namespace ThreatSource.Tests.Jamming // 创建有限时间的干扰事件 var jammingEvent = new LaserJammingEvent { - JammingPower = 500, // 有限时间的干扰 - Wavelength = 1.05, - JammingSourcePosition = new Vector3D(50, 0, 0), + JammingPower = 500, + Wavelength = 1.06, // 匹配波长1.06μm + JammingSourcePosition = new Vector3D(5, 0, 0), JammingDirection = new Vector3D(-1, 0, 0), JammingAngleRange = Math.PI / 4, JammingMode = JammingMode.Noise, - Duration = 0.5 // 0.5秒后过期 + Duration = 0.5 }; // Act - 应用干扰 @@ -217,13 +217,13 @@ namespace ThreatSource.Tests.Jamming // 创建持续干扰事件 var jammingEvent = new LaserJammingEvent { - JammingPower = 500, // 持续干扰 - Wavelength = 1.05, - JammingSourcePosition = new Vector3D(50, 0, 0), + JammingPower = 500, + Wavelength = 1.06, // 匹配波长1.06μm + JammingSourcePosition = new Vector3D(5, 0, 0), JammingDirection = new Vector3D(-1, 0, 0), JammingAngleRange = Math.PI / 4, JammingMode = JammingMode.Noise, - Duration = null // 持续干扰 + Duration = null }; // Act - 应用干扰 @@ -253,9 +253,9 @@ namespace ThreatSource.Tests.Jamming // 创建干扰事件 var jammingEvent = new LaserJammingEvent { - JammingPower = 500, // 照射禁用测试 - Wavelength = 1.05, - JammingSourcePosition = new Vector3D(50, 0, 0), + JammingPower = 500, + Wavelength = 1.06, // 匹配波长1.06μm + JammingSourcePosition = new Vector3D(5, 0, 0), JammingDirection = new Vector3D(-1, 0, 0), JammingAngleRange = Math.PI / 4, JammingMode = JammingMode.Noise @@ -285,7 +285,7 @@ namespace ThreatSource.Tests.Jamming var matchingJammingEvent = new LaserJammingEvent { JammingPower = 2000, - Wavelength = 1.05, + Wavelength = 1.06, // 匹配波长1.06μm JammingSourcePosition = new Vector3D(50, 0, 0), JammingDirection = new Vector3D(-1, 0, 0), JammingAngleRange = Math.PI / 4, @@ -306,7 +306,7 @@ namespace ThreatSource.Tests.Jamming var nonMatchingJammingEvent = new LaserJammingEvent { JammingPower = 2000, - Wavelength = 1.55, + Wavelength = 1.56, JammingSourcePosition = new Vector3D(50, 0, 0), JammingDirection = new Vector3D(-1, 0, 0), JammingAngleRange = Math.PI / 4, diff --git a/ThreatSource.Tests/src/Jamming/LaserRangefinderJammingTests.cs b/ThreatSource.Tests/src/Jamming/LaserRangefinderJammingTests.cs index 933fa2b..8d4de6b 100644 --- a/ThreatSource.Tests/src/Jamming/LaserRangefinderJammingTests.cs +++ b/ThreatSource.Tests/src/Jamming/LaserRangefinderJammingTests.cs @@ -73,13 +73,12 @@ namespace ThreatSource.Tests.Jamming // 创建干扰事件 var jammingEvent = new LaserJammingEvent { - JammingPower = 500.0, // 高于阈值 - Wavelength = 1.064, // 匹配测距仪波长 - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), // 指向测距仪 - JammingAngleRange = Math.PI / 4, // 45度角 - JammingMode = JammingMode.Noise, - Duration = null // 持续干扰 + JammingPower = 500, + Wavelength = 1.06, + JammingSourcePosition = new Vector3D(0, 10, 0), + JammingDirection = new Vector3D(0, -1, 0), + JammingAngleRange = Math.PI / 4, + JammingMode = JammingMode.Noise }; // Act @@ -97,8 +96,8 @@ namespace ThreatSource.Tests.Jamming // 创建角度范围外的干扰事件 var jammingEvent = new LaserJammingEvent { - JammingPower = 500.0, - Wavelength = 1.064, + JammingPower = 500, + Wavelength = 1.06, JammingSourcePosition = new Vector3D(0, 150, 0), // 位于上方 JammingDirection = new Vector3D(0, 0, 1), // 指向前方,不是指向测距仪 JammingAngleRange = 0.1, // 很小的角度范围 @@ -121,7 +120,7 @@ namespace ThreatSource.Tests.Jamming var jammingEvent = new LaserJammingEvent { JammingPower = 10.0, // 低于阈值 - Wavelength = 1.064, + Wavelength = 1.06, JammingSourcePosition = new Vector3D(50, 100, 0), JammingDirection = new Vector3D(-1, 0, 0), JammingAngleRange = Math.PI / 4, @@ -143,13 +142,13 @@ namespace ThreatSource.Tests.Jamming // 创建有限时间的干扰事件 var jammingEvent = new LaserJammingEvent { - JammingPower = 500.0, - Wavelength = 1.064, - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), + JammingPower = 500, + Wavelength = 1.06, + JammingSourcePosition = new Vector3D(0, 10, 0), + JammingDirection = new Vector3D(0, -1, 0), JammingAngleRange = Math.PI / 4, JammingMode = JammingMode.Noise, - Duration = 0.5 // 0.5秒后过期 + Duration = 0.5 }; // Act - 应用干扰 @@ -176,13 +175,12 @@ namespace ThreatSource.Tests.Jamming // 创建持续干扰事件 var jammingEvent = new LaserJammingEvent { - JammingPower = 500.0, - Wavelength = 1.064, - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), + JammingPower = 500, + Wavelength = 1.06, + JammingSourcePosition = new Vector3D(0, 10, 0), + JammingDirection = new Vector3D(0, -1, 0), JammingAngleRange = Math.PI / 4, - JammingMode = JammingMode.Noise, - Duration = null // 持续干扰 + JammingMode = JammingMode.Noise }; // Act - 应用干扰 @@ -212,10 +210,10 @@ namespace ThreatSource.Tests.Jamming // 创建干扰事件 var jammingEvent = new LaserJammingEvent { - JammingPower = 500.0, - Wavelength = 1.064, - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), + JammingPower = 500, + Wavelength = 1.06, + JammingSourcePosition = new Vector3D(0, 10, 0), + JammingDirection = new Vector3D(0, 1, 0), JammingAngleRange = Math.PI / 4, JammingMode = JammingMode.Noise }; diff --git a/ThreatSource.Tests/src/Jamming/MillimeterWaveAltimeterJammingTests.cs b/ThreatSource.Tests/src/Jamming/MillimeterWaveAltimeterJammingTests.cs index 249c3cd..5f8a5a4 100644 --- a/ThreatSource.Tests/src/Jamming/MillimeterWaveAltimeterJammingTests.cs +++ b/ThreatSource.Tests/src/Jamming/MillimeterWaveAltimeterJammingTests.cs @@ -73,13 +73,12 @@ namespace ThreatSource.Tests.Jamming // 创建干扰事件 var jammingEvent = new MillimeterWaveJammingEvent { - JammingPower = 500.0, // 高于阈值 - Wavelength = 3.0, // 3毫米波长 - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), // 指向测高雷达 - JammingAngleRange = Math.PI / 4, // 45度角 - JammingMode = JammingMode.Noise, - Duration = null // 持续干扰 + JammingPower = 500, + Wavelength = 3.0, + JammingSourcePosition = new Vector3D(0, 50, 0), + JammingDirection = new Vector3D(0, -1, 0), + JammingAngleRange = Math.PI / 6, + JammingMode = JammingMode.Noise }; // Act @@ -167,10 +166,10 @@ namespace ThreatSource.Tests.Jamming var jammingEvent = new MillimeterWaveJammingEvent { JammingPower = 500.0, - Wavelength = 3.0, - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), - JammingAngleRange = Math.PI / 4, + Wavelength = 3.0, // 设置为3mm波段的波长 + JammingSourcePosition = new Vector3D(0, 120, 0), + JammingDirection = new Vector3D(0, -1, 0), + JammingAngleRange = Math.PI / 6, JammingMode = JammingMode.Noise, Duration = 0.5 // 0.5秒后过期 }; @@ -200,12 +199,11 @@ namespace ThreatSource.Tests.Jamming var jammingEvent = new MillimeterWaveJammingEvent { JammingPower = 500.0, - Wavelength = 3.0, - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), - JammingAngleRange = Math.PI / 4, - JammingMode = JammingMode.Noise, - Duration = null // 持续干扰 + Wavelength = 3.0, // 设置为3mm波段的波长 + JammingSourcePosition = new Vector3D(0, 120, 0), + JammingDirection = new Vector3D(0, -1, 0), + JammingAngleRange = Math.PI / 6, + JammingMode = JammingMode.Noise }; // Act - 应用干扰 @@ -237,9 +235,9 @@ namespace ThreatSource.Tests.Jamming { JammingPower = 500.0, Wavelength = 3.0, - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), - JammingAngleRange = Math.PI / 4, + JammingSourcePosition = new Vector3D(0, 120, 0), + JammingDirection = new Vector3D(0, -1, 0), + JammingAngleRange = Math.PI / 6, JammingMode = JammingMode.Noise }; diff --git a/ThreatSource.Tests/src/Jamming/MillimeterWaveRadiometerJammingTests.cs b/ThreatSource.Tests/src/Jamming/MillimeterWaveRadiometerJammingTests.cs index 6f40071..094d6f2 100644 --- a/ThreatSource.Tests/src/Jamming/MillimeterWaveRadiometerJammingTests.cs +++ b/ThreatSource.Tests/src/Jamming/MillimeterWaveRadiometerJammingTests.cs @@ -75,9 +75,8 @@ namespace ThreatSource.Tests.Jamming var jammingEvent = new MillimeterWaveJammingEvent { JammingPower = 500.0, // 高于阈值 - Wavelength = 3.0, // 3毫米波长 - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), // 指向辐射计 + JammingSourcePosition = new Vector3D(10, 10, 0), + JammingDirection = new Vector3D(-0.7071, -0.7071, 0), // 45度角指向辐射计 JammingAngleRange = Math.PI / 4, // 45度角 JammingMode = JammingMode.Noise, Duration = null // 持续干扰 @@ -167,13 +166,13 @@ namespace ThreatSource.Tests.Jamming // 创建有限时间的干扰事件 var jammingEvent = new MillimeterWaveJammingEvent { - JammingPower = 500.0, - Wavelength = 3.0, - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), + JammingPower = 500, + Wavelength = 3.0, // 3mm波段 + JammingSourcePosition = new Vector3D(0, 120, 0), + JammingDirection = new Vector3D(0, -1, 0), JammingAngleRange = Math.PI / 4, JammingMode = JammingMode.Noise, - Duration = 0.5 // 0.5秒后过期 + Duration = 0.5 }; // Act - 应用干扰 @@ -200,13 +199,12 @@ namespace ThreatSource.Tests.Jamming // 创建持续干扰事件 var jammingEvent = new MillimeterWaveJammingEvent { - JammingPower = 500.0, - Wavelength = 3.0, - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), + JammingPower = 500, + Wavelength = 3.0, // 3mm波段 + JammingSourcePosition = new Vector3D(0, 120, 0), + JammingDirection = new Vector3D(0, -1, 0), JammingAngleRange = Math.PI / 4, - JammingMode = JammingMode.Noise, - Duration = null // 持续干扰 + JammingMode = JammingMode.Noise }; // Act - 应用干扰 @@ -245,10 +243,10 @@ namespace ThreatSource.Tests.Jamming // 创建干扰事件 var jammingEvent = new MillimeterWaveJammingEvent { - JammingPower = 500.0, - Wavelength = 3.0, - JammingSourcePosition = new Vector3D(50, 100, 0), - JammingDirection = new Vector3D(-1, 0, 0), + JammingPower = 500, + Wavelength = 3.0, // 3mm波段 + JammingSourcePosition = new Vector3D(0, 10, 0), + JammingDirection = new Vector3D(0, -1, 0), JammingAngleRange = Math.PI / 4, JammingMode = JammingMode.Noise }; diff --git a/ThreatSource/data/indicators/laser_designators/ld_001.json b/ThreatSource/data/indicators/laser_designators/ld_001.json index 9dc8216..6c1c1b8 100644 --- a/ThreatSource/data/indicators/laser_designators/ld_001.json +++ b/ThreatSource/data/indicators/laser_designators/ld_001.json @@ -6,8 +6,8 @@ "type": "LaserDesignator", "designatorConfig": { "laserPower": 5000, - "laserDivergenceAngle": 0.0003, "laserWavelength": 1.06, + "laserDivergenceAngle": 0.0003, "laserCodeConfig": { "code": { "codeType": "PRF", diff --git a/ThreatSource/src/Indicator/LaserBeamRider.cs b/ThreatSource/src/Indicator/LaserBeamRider.cs index d45c251..96405d4 100644 --- a/ThreatSource/src/Indicator/LaserBeamRider.cs +++ b/ThreatSource/src/Indicator/LaserBeamRider.cs @@ -46,6 +46,17 @@ namespace ThreatSource.Indicator /// public double LaserPower { get; private set; } + + /// + /// 获取或设置激光波长 + /// + /// + /// 单位:微米 + /// 影响激光波束的波长特性 + /// + public double LaserWavelength { get; private set; } = 1.06; + + /// /// 获取或设置激光发散角 /// @@ -120,6 +131,7 @@ namespace ThreatSource.Indicator : base(id, motionParameters, simulationManager) { LaserPower = config.LaserPower; + LaserWavelength = config.LaserWavelength; ControlFieldDiameter = config.ControlFieldDiameter; LaserDirection = Vector3D.Zero; MaxGuidanceDistance = config.MaxGuidanceDistance; @@ -249,12 +261,10 @@ namespace ThreatSource.Indicator Mode = evt.JammingMode, Duration = evt.Duration }; - - // 检查波长匹配(激光特定逻辑) - bool isWavelengthInRange = evt.Wavelength >= 1.0 && evt.Wavelength <= 1.1; // 使用JammableComponent进行干扰判断 - if (isWavelengthInRange) + // 检查波长匹配(激光特定逻辑) + if (evt.Wavelength == LaserWavelength) { ApplyJamming(parameters); Debug.WriteLine($"干扰状态 - IsJammed: {IsJammed}"); diff --git a/ThreatSource/src/Indicator/LaserDesignator.cs b/ThreatSource/src/Indicator/LaserDesignator.cs index 36237b2..c550b27 100644 --- a/ThreatSource/src/Indicator/LaserDesignator.cs +++ b/ThreatSource/src/Indicator/LaserDesignator.cs @@ -85,7 +85,7 @@ namespace ThreatSource.Indicator /// 指示器工作所需的工作波长 /// 用于波长范围匹配检查 /// - public double Wavelength { get; private set; } = 1.06; + public double LaserWavelength { get; private set; } = 1.06; /// /// 初始化激光指示器的新实例 @@ -114,7 +114,7 @@ namespace ThreatSource.Indicator LaserDivergenceAngle = config.LaserDivergenceAngle; LaserCodeConfig = config.LaserCodeConfig; JammingThreshold = config.JammingResistanceThreshold; - Wavelength = config.LaserWavelength; + LaserWavelength = config.LaserWavelength; // 设置干扰阈值并添加支持的干扰类型 InitializeJamming(JammingThreshold, [JammingType.Laser]); @@ -220,12 +220,10 @@ namespace ThreatSource.Indicator Mode = evt.JammingMode, Duration = evt.Duration }; - - // 检查波长匹配(激光特定逻辑) - bool isWavelengthInRange = evt.Wavelength == Wavelength; // 使用JammableComponent进行干扰判断 - if (isWavelengthInRange) + // 检查波长匹配(激光特定逻辑) + if (evt.Wavelength == LaserWavelength) { ApplyJamming(parameters); Debug.WriteLine($"干扰状态 - IsJammed: {IsJammed}"); diff --git a/ThreatSource/src/Sensor/LaserRangefinder.cs b/ThreatSource/src/Sensor/LaserRangefinder.cs index 034c891..a1dae56 100644 --- a/ThreatSource/src/Sensor/LaserRangefinder.cs +++ b/ThreatSource/src/Sensor/LaserRangefinder.cs @@ -227,6 +227,7 @@ namespace ThreatSource.Sensor { Debug.WriteLine($"激光测距仪受到干扰,功率:{parameters.Power}瓦特"); sensorData.IsValid = false; + sensorData.Distance = 0; // 在干扰状态下将距离设置为0 } } @@ -240,6 +241,7 @@ namespace ThreatSource.Sensor { Debug.WriteLine("激光测距仪干扰已清除"); sensorData.IsValid = true; + sensorData.Distance = currentDistance; } } diff --git a/ThreatSource/src/Sensor/MillimeterWaveAltimeter.cs b/ThreatSource/src/Sensor/MillimeterWaveAltimeter.cs index f712b18..b04fe6f 100644 --- a/ThreatSource/src/Sensor/MillimeterWaveAltimeter.cs +++ b/ThreatSource/src/Sensor/MillimeterWaveAltimeter.cs @@ -230,6 +230,7 @@ namespace ThreatSource.Sensor { Debug.WriteLine($"毫米波测高雷达受到干扰,功率:{parameters.Power}瓦特"); sensorData.IsValid = false; + sensorData.Altitude = 0; // 被干扰时将高度值设为0 } } @@ -243,6 +244,7 @@ namespace ThreatSource.Sensor { Debug.WriteLine("毫米波测高雷达干扰已清除"); sensorData.IsValid = true; + sensorData.Altitude = currentAltitude; // 恢复正常的高度测量值 } } } diff --git a/ThreatSource/src/Simulation/SimulationConfig.cs b/ThreatSource/src/Simulation/SimulationConfig.cs index a23da81..bd379ff 100644 --- a/ThreatSource/src/Simulation/SimulationConfig.cs +++ b/ThreatSource/src/Simulation/SimulationConfig.cs @@ -174,6 +174,15 @@ namespace ThreatSource.Simulation /// public double LaserPower { get; set; } = 0; + /// + /// 获取或设置激光波长 + /// + /// + /// 单位:微米 + /// 影响制导波束的波长特性 + /// + public double LaserWavelength { get; set; } = 1.06; + /// /// 获取或设置控制场直径 ///