diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a06429..808571f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,12 +12,14 @@ - 支持与 Simulink 模型的数据交互 - 实现实时仿真数据同步 - 处理不同时间步长的协调 -- 毫米波跟踪和锁定阶段采用脉冲多普勒制导 - 命中概率和系统随机噪声 ## [1.1.21] - 2025-05-24 - 增加了升力加速度的计算 - 将发射、巡航、制导三个阶段汇聚到导弹基类中 +- 将毫米波制导的扫描阶段改为螺旋扫描,并调整了参数 +- 完善了集成测试的菜单逻辑,可以反复运行了 +- 给导弹增加了巡航攻角、制导下视角参数,完善了三个阶段的朝向逻辑 ## [1.1.20] - 2025-05-19 - 增加了SwerlingRCS回波模型 diff --git a/ThreatSource.Tests/src/Guidance/MillimeterWaveGuidanceSnrAveragingTests.cs b/ThreatSource.Tests/src/Guidance/MillimeterWaveGuidanceSnrAveragingTests.cs new file mode 100644 index 0000000..4fc8640 --- /dev/null +++ b/ThreatSource.Tests/src/Guidance/MillimeterWaveGuidanceSnrAveragingTests.cs @@ -0,0 +1,152 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using ThreatSource.Guidance; +using ThreatSource.Simulation; +using ThreatSource.Equipment; +using ThreatSource.Utils; +using System.Diagnostics; + +namespace ThreatSource.Tests.Guidance +{ + /// + /// 毫米波制导系统SNR平均化功能测试 + /// + [TestClass] + public class MillimeterWaveGuidanceSnrAveragingTests + { + private SimulationManager? simulationManager; + private MillimeterWaveGuidanceSystem? guidanceSystem; + private Tank? target; + + [TestInitialize] + public void Setup() + { + simulationManager = new SimulationManager(); + + // 创建毫米波制导配置 + var config = new MillimeterWaveGuidanceConfig + { + MaxDetectionRange = 5000.0, + FieldOfViewAngle = 15.0, + WaveFrequency = 9.4e10, + SearchBeamWidth = 5.0, + TrackBeamWidth = 4.0, + LockBeamWidth = 3.0, + RecognitionSNRThreshold = -25.0, + LockSNRThreshold = -15.0, // 使用新的放宽阈值 + TransmitPower = 0.3, + AntennaGainDB = 23.0, + NoiseFigureDB = 7.0, + SystemLossDB = 6.0, + MonopulseSensitivity = 0.1, + LockConfirmationTime = 0.15, + PulseDuration = 1.0e-6, + JammingResistanceThreshold = 1.0e-5 + }; + + // 创建制导系统 + guidanceSystem = new MillimeterWaveGuidanceSystem( + "test_guidance", + "test_missile", + 100.0, + 4.0, + config, + simulationManager); + + // 创建目标坦克 + var tankProperties = new EquipmentProperties + { + Type = EquipmentType.Tank, + RcsPattern = new RcsPattern() + }; + + var initialKState = new KinematicState + { + Position = new Vector3D(1000, 0, 0), // 1000米距离 + Velocity = new Vector3D(0, 0, 0), + Orientation = new Orientation(0, 0, 0), + Speed = 0 + }; + + target = new Tank("test_tank", tankProperties, initialKState, simulationManager); + + // 激活目标和制导系统 + target.Activate(); + guidanceSystem.Activate(); + + // 注册到仿真管理器 + simulationManager.RegisterEntity("test_tank", target); + } + + [TestCleanup] + public void Cleanup() + { + guidanceSystem?.Deactivate(); + target?.Deactivate(); + } + + /// + /// 测试SNR平均化功能是否能提高锁定稳定性 + /// + [TestMethod] + public void TestSnrAveraging_ImprovesLockStability() + { + // 模拟从Search -> Track -> Lock的过程 + + // 1. 首先进入Track模式(模拟已经找到目标) + guidanceSystem.GetType() + .GetMethod("SwitchToTrackMode", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) + ?.Invoke(guidanceSystem, null); + + // 2. 更新几次以稳定Track模式 + for (int i = 0; i < 10; i++) + { + guidanceSystem.Update(0.1); + } + + // 3. 切换到Lock模式 + guidanceSystem.GetType() + .GetMethod("SwitchToLockMode", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) + ?.Invoke(guidanceSystem, null); + + // 4. 验证Lock模式下的SNR平均化 + int lockSuccessCount = 0; + int totalUpdates = 20; + + for (int i = 0; i < totalUpdates; i++) + { + guidanceSystem.Update(0.1); + + if (guidanceSystem.HasTarget) + { + lockSuccessCount++; + } + + // 输出调试信息 + Debug.WriteLine($"Update {i + 1}: HasTarget = {guidanceSystem.HasTarget}, IsInLockMode = {guidanceSystem.IsInLockMode}"); + } + + // 验证锁定稳定性有所改善 + double successRate = (double)lockSuccessCount / totalUpdates; + Debug.WriteLine($"Lock success rate: {successRate:P2} ({lockSuccessCount}/{totalUpdates})"); + + // 期望成功率应该合理(考虑到RCS波动) + Assert.IsTrue(successRate > 0.3, $"Lock success rate should be > 30%, but was {successRate:P2}"); + Assert.IsTrue(guidanceSystem.IsInLockMode, "Should remain in Lock mode"); + } + + /// + /// 测试新的SNR阈值设置 + /// + [TestMethod] + public void TestNewSnrThreshold_IsApplied() + { + // 验证新的SNR阈值已经应用 + var config = guidanceSystem.GetType() + .GetField("config", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) + ?.GetValue(guidanceSystem) as MillimeterWaveGuidanceConfig; + + Assert.IsNotNull(config, "Config should not be null"); + Assert.AreEqual(-15.0, config.LockSNRThreshold, 0.1, "Lock SNR threshold should be -15.0 dB"); + } + } +} \ No newline at end of file diff --git a/ThreatSource/data/missiles/composite/cg_001.toml b/ThreatSource/data/missiles/composite/cg_001.toml index 363fcee..1cdbe11 100644 --- a/ThreatSource/data/missiles/composite/cg_001.toml +++ b/ThreatSource/data/missiles/composite/cg_001.toml @@ -19,6 +19,8 @@ Mass = 25.0 ExplosionRadius = 5.0 HitProbability = 0.9 SelfDestructHeight = 0.0 +CruiseAttackAngle = 5.0 # 巡航阶段攻角 (度) +GuidanceSeekingAngle = 15.0 # 制导阶段导引头下视角 (度) InfraredRadiationIntensity = 96.0 # 红外辐射强度 (瓦特/球面度) UltravioletRadiationIntensity = 100.0 # 紫外辐射强度 (瓦特/球面度) # --- 复合制导特定属性 --- @@ -49,20 +51,6 @@ MinTimeWithGuidanceBeforeSwitchSeconds = 60.0 # 设置为MaxFlightTime,使其 ContinueChainOnFailure = false # 这是最后一个,失败也无需继续 # --- 各制导模式的详细配置 --- -[InfraredImagingGuidanceConfig] -MaxDetectionRange = 1000.0 # 最大探测距离 (米) -SearchFieldOfView = 12.0 # 搜索视场角 (度) -TrackFieldOfView = 6.0 # 跟踪视场角 (度) -ImageWidth = 640 # 图像宽度 (像素) -ImageHeight = 480 # 图像高度 (像素) -BackgroundIntensity = 1.0e-4 # 背景辐射强度 (瓦特/球面度) -SearchRecognitionProbability = 0.6 # 搜索模式目标识别概率阈值 -TrackRecognitionProbability = 0.8 # 跟踪模式目标识别概率阈值 -TargetLostTolerance = 0.3 # 目标丢失容忍时间 (秒) -LockConfirmationTime = 0.5 # 锁定确认时间 (秒) -JammingResistanceThreshold = 1.0e-5 # 干扰抗性阈值 (瓦特) -Wavelength = 3.0 # 波长 (微米) - [MillimeterWaveGuidanceConfig] MaxDetectionRange = 5000.0 # 最大探测距离 (米) FieldOfViewAngle = 30.0 # 视场角 (度) - 扩大搜索范围提高目标捕获率 @@ -89,4 +77,18 @@ SystemLossDB = 6.0 # 系统损耗 (分贝) MonopulseSensitivity = 0.1 # 单脉冲灵敏度系数 - 优化测角精度 YawControlEffectiveness = 120.0 # 偏航控制有效性 (度/秒^2 或类似单位) PitchControlEffectiveness = 150.0 # 俯仰控制有效性 (度/秒^2 或类似单位) -JammingResistanceThreshold = 1.0e-5 # 干扰抗性阈值 (瓦特) \ No newline at end of file +JammingResistanceThreshold = 1.0e-5 # 干扰抗性阈值 (瓦特) + +[InfraredImagingGuidanceConfig] +MaxDetectionRange = 1000.0 # 最大探测距离 (米) +SearchFieldOfView = 12.0 # 搜索视场角 (度) +TrackFieldOfView = 6.0 # 跟踪视场角 (度) +ImageWidth = 640 # 图像宽度 (像素) +ImageHeight = 480 # 图像高度 (像素) +BackgroundIntensity = 1.0e-4 # 背景辐射强度 (瓦特/球面度) +SearchRecognitionProbability = 0.6 # 搜索模式目标识别概率阈值 +TrackRecognitionProbability = 0.8 # 跟踪模式目标识别概率阈值 +TargetLostTolerance = 0.3 # 目标丢失容忍时间 (秒) +LockConfirmationTime = 0.5 # 锁定确认时间 (秒) +JammingResistanceThreshold = 1.0e-5 # 干扰抗性阈值 (瓦特) +Wavelength = 3.0 # 波长 (微米) \ No newline at end of file diff --git a/ThreatSource/data/missiles/composite/cg_002.toml b/ThreatSource/data/missiles/composite/cg_002.toml index e8f33ef..811736a 100644 --- a/ThreatSource/data/missiles/composite/cg_002.toml +++ b/ThreatSource/data/missiles/composite/cg_002.toml @@ -19,6 +19,8 @@ Mass = 25.0 ExplosionRadius = 5.0 HitProbability = 0.9 SelfDestructHeight = 0.0 +CruiseAttackAngle = 5.0 # 巡航阶段攻角 (度) +GuidanceSeekingAngle = 15.0 # 制导阶段导引头下视角 (度) InfraredRadiationIntensity = 96.0 # 红外辐射强度 (瓦特/球面度) UltravioletRadiationIntensity = 100.0 # 紫外辐射强度 (瓦特/球面度) # --- 复合制导特定属性 --- diff --git a/ThreatSource/data/missiles/ir_command/irc_001.toml b/ThreatSource/data/missiles/ir_command/irc_001.toml index fa37bb4..dbf3b3f 100644 --- a/ThreatSource/data/missiles/ir_command/irc_001.toml +++ b/ThreatSource/data/missiles/ir_command/irc_001.toml @@ -7,21 +7,22 @@ En = "IR Command Guided Missile-001" [Properties] Type = "InfraredCommandGuidance" # 属性中的类型,与顶层Type一致 -MaxSpeed = 300.0 # 最大速度 (米/秒) +MaxSpeed = 250.0 # 最大速度 (米/秒) MaxFlightTime = 60.0 # 最大飞行时间 (秒) MaxFlightDistance = 5000.0 # 最大飞行距离 (米) -MaxAcceleration = 150.0 # 最大加速度 (米/秒^2) -ProportionalNavigationCoefficient = 4.0 # 比例导引系数 -LaunchAcceleration = 150.0 # 发射加速度 (米/秒^2) -MaxEngineBurnTime = 2.0 # 最大发动机燃烧时间 (秒) +MaxAcceleration = 100.0 # 最大加速度 (米/秒^2) +ProportionalNavigationCoefficient = 3.0 # 比例导引系数 +LaunchAcceleration = 100.0 # 发射加速度 (米/秒^2) +MaxEngineBurnTime = 3.0 # 最大发动机燃烧时间 (秒) CruiseTime = 2.0 # 巡航时间 (秒) Mass = 23.5 # 质量 (千克) ExplosionRadius = 5.0 # 爆炸半径 (米) HitProbability = 0.9 # 命中概率 SelfDestructHeight = 0.0 # 自毁高度 (米) -InfraredRadiationIntensity = 96.0 # 红外辐射强度 (瓦特/球面度) +CruiseAttackAngle = 5.0 # 巡航阶段攻角 (度) +GuidanceSeekingAngle = 0.0 # 制导阶段导引头下视角 (度) +InfraredRadiationIntensity = 96.0 # 红外辐射强度 (瓦特/球面度) UltravioletRadiationIntensity = 100.0 # 紫外辐射强度 (瓦特/球面度) -# TrackerSensitivity, CommandLatency, IrSignature 在JSON中为null,此处省略 [InfraredCommandGuidanceConfig] JammingResistanceThreshold = 1.0e-5 # 干扰抗性阈值 (瓦特) \ No newline at end of file diff --git a/ThreatSource/data/missiles/ir_imaging/itg_001.toml b/ThreatSource/data/missiles/ir_imaging/itg_001.toml index 9d4c861..7243c4b 100644 --- a/ThreatSource/data/missiles/ir_imaging/itg_001.toml +++ b/ThreatSource/data/missiles/ir_imaging/itg_001.toml @@ -13,13 +13,15 @@ MaxFlightDistance = 5000.0 MaxAcceleration = 100.0 ProportionalNavigationCoefficient = 4.0 LaunchAcceleration = 100.0 -MaxEngineBurnTime = 2.5 -CruiseTime = 3.0 +MaxEngineBurnTime = 3.0 +CruiseTime = 2.5 Mass = 25.0 ExplosionRadius = 5.0 HitProbability = 0.9 SelfDestructHeight = 0.0 -InfraredRadiationIntensity = 96.0 # 红外辐射强度 (瓦特/球面度) +CruiseAttackAngle = 5.0 # 巡航阶段攻角 (度) +GuidanceSeekingAngle = 6.0 # 制导阶段导引头下视角 (度) +InfraredRadiationIntensity = 96.0 # 红外辐射强度 (瓦特/球面度) UltravioletRadiationIntensity = 100.0 # 紫外辐射强度 (瓦特/球面度) [InfraredImagingGuidanceConfig] diff --git a/ThreatSource/data/missiles/laser_beam_rider/hj10.toml b/ThreatSource/data/missiles/laser_beam_rider/hj10.toml index 5384760..943cd8b 100644 --- a/ThreatSource/data/missiles/laser_beam_rider/hj10.toml +++ b/ThreatSource/data/missiles/laser_beam_rider/hj10.toml @@ -19,6 +19,8 @@ Mass = 24.5 # 质量 (千克) ExplosionRadius = 5.0 # 爆炸半径 (米) HitProbability = 0.9 # 命中概率 SelfDestructHeight = 0.0 # 自毁高度 (米) +CruiseAttackAngle = 5.0 # 巡航阶段攻角 (度) +GuidanceSeekingAngle = 0.0 # 制导阶段导引头下视角 (度) InfraredRadiationIntensity = 96.0 # 红外辐射强度 (瓦特/球面度) UltravioletRadiationIntensity = 100.0 # 紫外辐射强度 (瓦特/球面度) diff --git a/ThreatSource/data/missiles/laser_semi_active/lsgm_001.toml b/ThreatSource/data/missiles/laser_semi_active/lsgm_001.toml index c3df2f0..8b5441e 100644 --- a/ThreatSource/data/missiles/laser_semi_active/lsgm_001.toml +++ b/ThreatSource/data/missiles/laser_semi_active/lsgm_001.toml @@ -11,15 +11,17 @@ Type = "LaserSemiActiveGuidance" # properties内部的类型标识符 MaxSpeed = 800.0 # 最大速度 (m/s) MaxFlightTime = 60.0 # 最大飞行时间 (秒) MaxFlightDistance = 20000.0 # 最大飞行距离 (米) -MaxAcceleration = 50.0 # 最大横向加速度 (m/s^2) +MaxAcceleration = 100.0 # 最大横向加速度 (m/s^2) ProportionalNavigationCoefficient = 3.0 # 比例导引系数 LaunchAcceleration = 0.0 # 初始发射加速度 (m/s^2) -MaxEngineBurnTime = 0.0 # 发动机最大燃烧时间 (秒) -CruiseTime = 10.0 #巡航阶段时长 (秒) +MaxEngineBurnTime = 2.0 # 发动机最大燃烧时间 (秒) +CruiseTime = 1.0 #巡航阶段时长 (秒) Mass = 22.0 # 导弹质量 (kg) ExplosionRadius = 5.0 # 爆炸半径 (米) HitProbability = 0.9 # 固有命中概率 (0.0 到 1.0) SelfDestructHeight = 0.0 # 离地自毁高度 (米) +CruiseAttackAngle = 5.0 # 巡航阶段攻角 (度) +GuidanceSeekingAngle = 15.0 # 制导阶段导引头下视角 (度) InfraredRadiationIntensity = 96.0 # 红外辐射强度 (瓦特/球面度) UltravioletRadiationIntensity = 100.0 # 紫外辐射强度 (瓦特/球面度) diff --git a/ThreatSource/data/missiles/mmw/mmw_001.toml b/ThreatSource/data/missiles/mmw/mmw_001.toml index 19e0a07..209481d 100644 --- a/ThreatSource/data/missiles/mmw/mmw_001.toml +++ b/ThreatSource/data/missiles/mmw/mmw_001.toml @@ -13,12 +13,14 @@ MaxFlightDistance = 8000.0 # 最大飞行距离 (米) MaxAcceleration = 100.0 # 最大加速度 (米/秒^2) ProportionalNavigationCoefficient = 4.0 # 比例导引系数 LaunchAcceleration = 100.0 # 发射加速度 (米/秒^2) -MaxEngineBurnTime = 2.5 # 最大发动机燃烧时间 (秒) -CruiseTime = 3.5 # 巡航时间 (秒) +MaxEngineBurnTime = 3.0 # 最大发动机燃烧时间 (秒) +CruiseTime = 2.5 # 巡航时间 (秒) Mass = 28.0 # 质量 (千克) ExplosionRadius = 5.0 # 爆炸半径 (米) HitProbability = 0.9 # 命中概率 SelfDestructHeight = 0.0 # 自毁高度 (米) +CruiseAttackAngle = 5.0 # 巡航阶段攻角 (度) +GuidanceSeekingAngle = 15.0 # 制导阶段导引头下视角 (度) InfraredRadiationIntensity = 96.0 # 红外辐射强度 (瓦特/球面度) UltravioletRadiationIntensity = 100.0 # 紫外辐射强度 (瓦特/球面度) diff --git a/ThreatSource/src/MIssile/BaseMissile.cs b/ThreatSource/src/MIssile/BaseMissile.cs index 17e78d1..717ba0c 100644 --- a/ThreatSource/src/MIssile/BaseMissile.cs +++ b/ThreatSource/src/MIssile/BaseMissile.cs @@ -266,13 +266,24 @@ namespace ThreatSource.Missile // 巡航阶段不使用制导 GuidanceAcceleration = Vector3D.Zero; - if(KState.Orientation.Pitch > 0) + // 调整速度方向为水平飞行 + if (Math.Abs(KState.Velocity.Y) > 0.1) // 如果有明显的垂直速度分量 { - KState.Orientation = new Orientation(KState.Orientation.Yaw, -0.01, KState.Orientation.Roll); + // 保持水平速度大小,消除垂直分量 + double horizontalSpeed = Math.Sqrt(KState.Velocity.X * KState.Velocity.X + KState.Velocity.Z * KState.Velocity.Z); + if (horizontalSpeed > 0.1) // 确保有水平速度 + { + Vector3D horizontalDirection = new Vector3D(KState.Velocity.X, 0, KState.Velocity.Z).Normalize(); + KState.Velocity = horizontalDirection * KState.Speed; + } } - // 计算升力加速度。在巡航阶段,升力加速度与重力加速度抵消 - LiftAcceleration = new Vector3D(0, PhysicalConstants.BeijingGravity, 0); + // 设置巡航攻角(相对于水平面) + double cruiseAttackAngleRad = Properties.CruiseAttackAngle * Math.PI / 180.0; + KState.Orientation = new Orientation(KState.Orientation.Yaw, cruiseAttackAngleRad, KState.Orientation.Roll); + + // 计算升力加速度:在巡航阶段,基于攻角计算升力 + LiftAcceleration = LiftModel.CalculateLiftAcceleration(Properties.CruiseAttackAngle); // 巡航阶段结束,进入制导阶段 if (FlightTime >= Properties.MaxEngineBurnTime + Properties.CruiseTime) @@ -331,10 +342,17 @@ namespace ThreatSource.Missile (KState.Position, KState.Velocity) = MotionAlgorithm.CalculateBallisticMotion(KState.Position, KState.Velocity, acceleration, deltaTime); } - // 在制导阶段,导弹指向速度方向(便于搜索跟踪) + // 在制导阶段,根据是否获得制导来调整导弹朝向 if(currentStage == MissileFlightStage.Guidance) { - KState.Orientation = Orientation.FromVector(KState.Velocity); + if (!IsGuidance) + { + // 导引头搜索阶段:保持水平飞行,导弹朝向向下一个固定角度进行搜索 + // 不改变速度向量,让导引头在下视角范围内搜索目标 + double seekingAngleRad = Properties.GuidanceSeekingAngle * Math.PI / 180.0; + KState.Orientation = new Orientation(KState.Orientation.Yaw, -seekingAngleRad, KState.Orientation.Roll); + } + // 如果IsGuidance为true,制导系统会通过GuidanceAcceleration自动调整导弹的飞行轨迹和朝向 } // 限制速度不超过最大速度 diff --git a/ThreatSource/src/MIssile/LaserSemiActiveGuidedMissile.cs b/ThreatSource/src/MIssile/LaserSemiActiveGuidedMissile.cs index 0c5dff3..8ee5066 100644 --- a/ThreatSource/src/MIssile/LaserSemiActiveGuidedMissile.cs +++ b/ThreatSource/src/MIssile/LaserSemiActiveGuidedMissile.cs @@ -99,24 +99,6 @@ namespace ThreatSource.Missile SimulationManager.UnregisterEntity(guidanceSystem.Id); } - /// - /// 更新巡航阶段状态 - /// - /// 时间步长,单位:秒 - /// - /// 巡航阶段处理: - /// - 启用制导控制 - /// - 更新制导系统 - /// - 计算制导加速度 - /// - 检查自毁条件 - /// - protected override void OnCruiseStage(double deltaTime) - { - base.OnCruiseStage(deltaTime); - - LiftAcceleration = Vector3D.Zero; - } - /// /// 更新制导阶段状态 /// diff --git a/ThreatSource/src/MIssile/MissileProperties.cs b/ThreatSource/src/MIssile/MissileProperties.cs index 9327a04..e74c672 100644 --- a/ThreatSource/src/MIssile/MissileProperties.cs +++ b/ThreatSource/src/MIssile/MissileProperties.cs @@ -355,6 +355,27 @@ namespace ThreatSource.Missile /// public double UltravioletRadiationIntensity { get; set; } + /// + /// 获取或设置巡航阶段攻角 + /// + /// + /// 单位:度 + /// 巡航阶段导弹的攻角,用于产生升力平衡重力 + /// 典型值为5度左右 + /// + public double CruiseAttackAngle { get; set; } + + /// + /// 获取或设置制导阶段导引头下视角 + /// + /// + /// 单位:度 + /// 制导阶段导引头相对于水平面的下视角 + /// 用于调整导弹朝向以便导引头能够搜索和跟踪目标 + /// 不同导弹类型有不同的典型值 + /// + public double GuidanceSeekingAngle { get; set; } + /// /// 制导组件套件。仅当 Type 为 CompositeGuidance 时有效。 /// 列表中的顺序可能也暗示了串行模式下的默认阶段顺序,除非 ActivationTrigger 另有复杂规定,并结合Priority。 @@ -415,6 +436,8 @@ namespace ThreatSource.Missile SelfDestructHeight = 0; InfraredRadiationIntensity = 100.0; UltravioletRadiationIntensity = 100.0; + CruiseAttackAngle = 5.0; + GuidanceSeekingAngle = 10.0; // 设置复合制导相关属性的默认值 if(Type == MissileType.CompositeGuidance) diff --git a/docs/project/tunning.md b/docs/project/tunning.md index a7dd21c..63a8607 100644 --- a/docs/project/tunning.md +++ b/docs/project/tunning.md @@ -510,29 +510,29 @@ - 发射角度:0.04 弧度 3. 红外指令 - - 发射加速度:150 m/s² - - 发动机最大燃烧时间:2.0 秒 - - 巡航时间:2 秒 + - 发动机最大燃烧时间:3.0 秒 + - 巡航时间:2.0 秒 4. 红外热成像 - 发射加速度:100 m/s² - - 发动机最大燃烧时间:2.5 秒 - - 巡航时间:3.0 秒 + - 发动机最大燃烧时间:3.0 秒 + - 巡航时间:2.5 秒 - - 发射角度:0.12 弧度(此时巡航高度 150 米,制导阶段起始角度-0.01弧度) + - 发射角度:PI/15 弧度(12度,此时巡航高度 130 米) 5. 毫米波末制导 - 发射加速度:100 m/s² - - 发动机最大燃烧时间:2.5 秒 - - 巡航时间:3.0 秒 + - 发动机最大燃烧时间:3.0 秒 + - 巡航时间:2.5 秒 - - 发射角度:0.05 弧度(此时巡航高度 15 米,制导阶段起始角度-0.02弧度,搜索视场角 15 度) + - 发射角度:0.05 弧度 6. 激光半主动 - 比例引导系数:3 - 发射加速度:0.0 m/s² - 发动机最大燃烧时间:0.0 秒 - - 巡航时间:10.0 秒 + - 发射阶段时间:2.0 秒 + - 巡航时间:1.0 秒 - - 发射距离:10000 m + - 发射距离:5000 m - 发射速度:700 m/s - 发射角度:Math.PI/20(大约 3 度) 7. 复合制导 @@ -540,6 +540,6 @@ - 发动机最大燃烧时间:2.5 秒 - 巡航时间:3.0 秒 - - 发射角度:0.05 弧度(此时巡航高度 15 米,制导阶段起始角度-0.02弧度,毫米波搜索视场角 15 度) + - 发射角度:0.05 弧度(此时巡航高度 15 米) diff --git a/tools/ComprehensiveMissileSimulator.cs b/tools/ComprehensiveMissileSimulator.cs index 316d040..c2b8454 100644 --- a/tools/ComprehensiveMissileSimulator.cs +++ b/tools/ComprehensiveMissileSimulator.cs @@ -334,7 +334,7 @@ namespace ThreatSource.Tools.MissileSimulation { var motionParameters = new KinematicState { - Position = new Vector3D(10000, 1, 10), + Position = new Vector3D(5000, 1, 10), Orientation = new Orientation(Math.PI/2, Math.PI/20, 0), Speed = 700 }; @@ -415,7 +415,7 @@ namespace ThreatSource.Tools.MissileSimulation var motionParameters = new KinematicState { Position = new Vector3D(2000, 1, 0), - Orientation = new Orientation(Math.PI/2, 0.12, 0), + Orientation = new Orientation(Math.PI/2, Math.PI/15, 0), Speed = 10 };