修改末敏弹干扰器和烟幕干扰器

This commit is contained in:
Tian jianyong 2025-02-14 11:54:58 +08:00
parent 48378bdbf9
commit cbb533b47d
4 changed files with 67 additions and 75 deletions

View File

@ -184,6 +184,7 @@ namespace ActiveProtect.Models
LaunchAngle = config.LaunchAngle;
Type = config.Type;
Count = config.Count;
SmokePosition = position;
// 初始化性能参数
ExplosionHeight = config.ExplosionHeight;

View File

@ -17,6 +17,15 @@ namespace ActiveProtect.Models
public class TerminalMillimeterWaveJammer : JammerBase
{
#region
/// <summary>
/// 获取干扰器所属的末敏弹ID
/// </summary>
/// <value>
/// 干扰器所属的末敏弹ID
/// </value>
public string MissileId { get; private set; }
/// <summary>
/// 获取干扰波长范围
/// </summary>
@ -83,13 +92,6 @@ namespace ActiveProtect.Models
#endregion
#region 仿
/// <summary>
/// 获取干扰类型
/// </summary>
/// <value>
/// 当前使用的干扰方式
/// </value>
public JammingType Type { get; private set; }
/// <summary>
/// 获取干扰开始时间
@ -123,23 +125,21 @@ namespace ActiveProtect.Models
/// <param name="position">干扰器的初始位置</param>
/// <param name="orientation">干扰器的初始朝向</param>
/// <param name="manager">仿真管理器实例</param>
/// <param name="tankId">所属坦克的ID</param>
/// <param name="missileId">所属末敏弹的ID</param>
/// <param name="config">干扰器配置参数</param>
public TerminalMillimeterWaveJammer(string id, Vector3D position, Orientation orientation,
ISimulationManager manager, string tankId, TerminalMillimeterWaveJammerConfig config)
: base(id, position, orientation, manager, tankId, config.MaxJammingPower,
ISimulationManager manager, string missileId, TerminalMillimeterWaveJammerConfig config)
: base(id, position, orientation, manager, missileId, config.MaxJammingPower,
config.InitialJammingPower, config.PowerIncreaseRate, config.MaxJammingCooldown)
{
// 初始化干扰参数
MissileId = missileId;
WavelengthRange = config.WavelengthRange;
AngleRange = config.AngleRange;
ResponseTime = config.ResponseTime;
EffectiveRange = config.EffectiveRange;
JammingProbability = config.JammingProbability;
DetectionRange = config.DetectionRange;
PulseFrequency = config.PulseFrequency;
PulseWidth = config.PulseWidth;
Type = config.Type;
// 初始化状态参数
ResetJammingStatus();
@ -164,7 +164,7 @@ namespace ActiveProtect.Models
/// <param name="evt">威胁探测事件参数</param>
private void OnThreatDetected(TerminalThreatDetectionEvent evt)
{
if (evt?.TargetId == TankId)
if (evt?.TargetId == MissileId)
{
CurrentTargetDistance = evt.Distance;
if (CurrentTargetDistance <= DetectionRange)
@ -225,26 +225,6 @@ namespace ActiveProtect.Models
// 根据距离计算实际干扰功率
double distanceRatio = Math.Min(1, EffectiveRange / CurrentTargetDistance);
CurrentJammingPower = MaxJammingPower * distanceRatio * JammingProbability;
// 根据干扰类型调整功率
switch (Type)
{
case JammingType.NoiseJamming:
// 噪声干扰,功率均匀分布
break;
case JammingType.DeceptionJamming:
// 欺骗干扰,功率集中
CurrentJammingPower *= 1.5;
break;
case JammingType.ChaffJamming:
// 箔条干扰,功率分散
CurrentJammingPower *= 0.8;
break;
case JammingType.CombinedJamming:
// 组合干扰,根据情况调整
CurrentJammingPower *= 1.2;
break;
}
}
/// <summary>
@ -258,13 +238,9 @@ namespace ActiveProtect.Models
{
SenderId = Id,
Timestamp = SimulationManager.CurrentTime,
TargetId = TankId,
TargetId = MissileId,
JammingPower = CurrentJammingPower,
JammingType = Type,
Distance = CurrentTargetDistance,
Duration = JammingDuration,
PulseFrequency = PulseFrequency,
PulseWidth = PulseWidth
Frequency = PulseFrequency
});
}
}
@ -276,7 +252,6 @@ namespace ActiveProtect.Models
public override string GetJammingStatus()
{
return $"末敏弹毫米波干扰器 {Id}:\n" +
$" 干扰类型: {Type}\n" +
$" 状态: {(IsJamming ? "" : "")}\n" +
$" 当前功率: {CurrentJammingPower:F2}/{MaxJammingPower:F2}\n" +
$" 目标距离: {CurrentTargetDistance:F1}\n" +
@ -284,30 +259,4 @@ namespace ActiveProtect.Models
$" 干扰概率: {JammingProbability:P2}";
}
}
/// <summary>
/// 干扰类型枚举
/// </summary>
public enum JammingType
{
/// <summary>
/// 噪声干扰,产生宽带噪声信号
/// </summary>
NoiseJamming,
/// <summary>
/// 欺骗干扰,产生虚假目标信号
/// </summary>
DeceptionJamming,
/// <summary>
/// 箔条干扰,释放金属箔条形成干扰云
/// </summary>
ChaffJamming,
/// <summary>
/// 组合干扰,同时使用多种干扰方式
/// </summary>
CombinedJamming
}
}

View File

@ -1052,13 +1052,7 @@ namespace ActiveProtect.Simulation
/// </value>
public double PulseWidth { get; set; }
/// <summary>
/// 干扰类型
/// </summary>
/// <value>
/// 使用的干扰方式(噪声、欺骗、箔条、组合)
/// </value>
public JammingType Type { get; set; }
#endregion
#region
@ -1117,7 +1111,6 @@ namespace ActiveProtect.Simulation
DetectionRange = 2000.0; // 2000米
PulseFrequency = 1000.0; // 1000Hz
PulseWidth = 1e-6; // 1微秒
Type = JammingType.CombinedJamming;
MaxJammingPower = 1000.0; // 1000瓦
InitialJammingPower = 400.0; // 400瓦

View File

@ -1,5 +1,6 @@
using ActiveProtect.Utility;
using ActiveProtect.Models;
using System.Net.Mime;
namespace ActiveProtect.Simulation
{
@ -435,6 +436,54 @@ namespace ActiveProtect.Simulation
/// </summary>
public float Density { get; set; }
/// <summary>
/// 烟幕厚度(米)
/// </summary>
public float Thickness { get; set; }
}
/// <summary>
/// 末敏弹毫米波干扰事件
/// </summary>
public class TerminalMillimeterWaveJammingEvent : SimulationEvent
{
/// <summary>
/// 目标ID
/// </summary>
public string? TargetId { get; set; }
/// <summary>
/// 干扰功率(瓦特)
/// </summary>
public double JammingPower { get; set; }
/// <summary>
/// 干扰频率(GHz)
/// </summary>
public double Frequency { get; set; }
/// <summary>
/// 距离(米)
/// </summary>
public double Distance { get; set; }
}
/// <summary>
/// 末敏弹威胁探测事件
/// </summary>
public class TerminalThreatDetectionEvent : SimulationEvent
{
/// <summary>
/// 目标ID
/// </summary>
public string? TargetId { get; set; }
/// <summary>
/// 目标距离(米)
/// </summary>
public double Distance { get; set; }
}
}