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

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; LaunchAngle = config.LaunchAngle;
Type = config.Type; Type = config.Type;
Count = config.Count; Count = config.Count;
SmokePosition = position;
// 初始化性能参数 // 初始化性能参数
ExplosionHeight = config.ExplosionHeight; ExplosionHeight = config.ExplosionHeight;

View File

@ -17,6 +17,15 @@ namespace ActiveProtect.Models
public class TerminalMillimeterWaveJammer : JammerBase public class TerminalMillimeterWaveJammer : JammerBase
{ {
#region #region
/// <summary>
/// 获取干扰器所属的末敏弹ID
/// </summary>
/// <value>
/// 干扰器所属的末敏弹ID
/// </value>
public string MissileId { get; private set; }
/// <summary> /// <summary>
/// 获取干扰波长范围 /// 获取干扰波长范围
/// </summary> /// </summary>
@ -83,13 +92,6 @@ namespace ActiveProtect.Models
#endregion #endregion
#region 仿 #region 仿
/// <summary>
/// 获取干扰类型
/// </summary>
/// <value>
/// 当前使用的干扰方式
/// </value>
public JammingType Type { get; private set; }
/// <summary> /// <summary>
/// 获取干扰开始时间 /// 获取干扰开始时间
@ -123,23 +125,21 @@ namespace ActiveProtect.Models
/// <param name="position">干扰器的初始位置</param> /// <param name="position">干扰器的初始位置</param>
/// <param name="orientation">干扰器的初始朝向</param> /// <param name="orientation">干扰器的初始朝向</param>
/// <param name="manager">仿真管理器实例</param> /// <param name="manager">仿真管理器实例</param>
/// <param name="tankId">所属坦克的ID</param> /// <param name="missileId">所属末敏弹的ID</param>
/// <param name="config">干扰器配置参数</param> /// <param name="config">干扰器配置参数</param>
public TerminalMillimeterWaveJammer(string id, Vector3D position, Orientation orientation, public TerminalMillimeterWaveJammer(string id, Vector3D position, Orientation orientation,
ISimulationManager manager, string tankId, TerminalMillimeterWaveJammerConfig config) ISimulationManager manager, string missileId, TerminalMillimeterWaveJammerConfig config)
: base(id, position, orientation, manager, tankId, config.MaxJammingPower, : base(id, position, orientation, manager, missileId, config.MaxJammingPower,
config.InitialJammingPower, config.PowerIncreaseRate, config.MaxJammingCooldown) config.InitialJammingPower, config.PowerIncreaseRate, config.MaxJammingCooldown)
{ {
// 初始化干扰参数 // 初始化干扰参数
MissileId = missileId;
WavelengthRange = config.WavelengthRange; WavelengthRange = config.WavelengthRange;
AngleRange = config.AngleRange; AngleRange = config.AngleRange;
ResponseTime = config.ResponseTime; ResponseTime = config.ResponseTime;
EffectiveRange = config.EffectiveRange; EffectiveRange = config.EffectiveRange;
JammingProbability = config.JammingProbability; JammingProbability = config.JammingProbability;
DetectionRange = config.DetectionRange; DetectionRange = config.DetectionRange;
PulseFrequency = config.PulseFrequency;
PulseWidth = config.PulseWidth;
Type = config.Type;
// 初始化状态参数 // 初始化状态参数
ResetJammingStatus(); ResetJammingStatus();
@ -164,7 +164,7 @@ namespace ActiveProtect.Models
/// <param name="evt">威胁探测事件参数</param> /// <param name="evt">威胁探测事件参数</param>
private void OnThreatDetected(TerminalThreatDetectionEvent evt) private void OnThreatDetected(TerminalThreatDetectionEvent evt)
{ {
if (evt?.TargetId == TankId) if (evt?.TargetId == MissileId)
{ {
CurrentTargetDistance = evt.Distance; CurrentTargetDistance = evt.Distance;
if (CurrentTargetDistance <= DetectionRange) if (CurrentTargetDistance <= DetectionRange)
@ -225,26 +225,6 @@ namespace ActiveProtect.Models
// 根据距离计算实际干扰功率 // 根据距离计算实际干扰功率
double distanceRatio = Math.Min(1, EffectiveRange / CurrentTargetDistance); double distanceRatio = Math.Min(1, EffectiveRange / CurrentTargetDistance);
CurrentJammingPower = MaxJammingPower * distanceRatio * JammingProbability; 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> /// <summary>
@ -258,13 +238,9 @@ namespace ActiveProtect.Models
{ {
SenderId = Id, SenderId = Id,
Timestamp = SimulationManager.CurrentTime, Timestamp = SimulationManager.CurrentTime,
TargetId = TankId, TargetId = MissileId,
JammingPower = CurrentJammingPower, JammingPower = CurrentJammingPower,
JammingType = Type, Frequency = PulseFrequency
Distance = CurrentTargetDistance,
Duration = JammingDuration,
PulseFrequency = PulseFrequency,
PulseWidth = PulseWidth
}); });
} }
} }
@ -276,7 +252,6 @@ namespace ActiveProtect.Models
public override string GetJammingStatus() public override string GetJammingStatus()
{ {
return $"末敏弹毫米波干扰器 {Id}:\n" + return $"末敏弹毫米波干扰器 {Id}:\n" +
$" 干扰类型: {Type}\n" +
$" 状态: {(IsJamming ? "" : "")}\n" + $" 状态: {(IsJamming ? "" : "")}\n" +
$" 当前功率: {CurrentJammingPower:F2}/{MaxJammingPower:F2}\n" + $" 当前功率: {CurrentJammingPower:F2}/{MaxJammingPower:F2}\n" +
$" 目标距离: {CurrentTargetDistance:F1}\n" + $" 目标距离: {CurrentTargetDistance:F1}\n" +
@ -284,30 +259,4 @@ namespace ActiveProtect.Models
$" 干扰概率: {JammingProbability:P2}"; $" 干扰概率: {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> /// </value>
public double PulseWidth { get; set; } public double PulseWidth { get; set; }
/// <summary>
/// 干扰类型
/// </summary>
/// <value>
/// 使用的干扰方式(噪声、欺骗、箔条、组合)
/// </value>
public JammingType Type { get; set; }
#endregion #endregion
#region #region
@ -1117,7 +1111,6 @@ namespace ActiveProtect.Simulation
DetectionRange = 2000.0; // 2000米 DetectionRange = 2000.0; // 2000米
PulseFrequency = 1000.0; // 1000Hz PulseFrequency = 1000.0; // 1000Hz
PulseWidth = 1e-6; // 1微秒 PulseWidth = 1e-6; // 1微秒
Type = JammingType.CombinedJamming;
MaxJammingPower = 1000.0; // 1000瓦 MaxJammingPower = 1000.0; // 1000瓦
InitialJammingPower = 400.0; // 400瓦 InitialJammingPower = 400.0; // 400瓦

View File

@ -1,5 +1,6 @@
using ActiveProtect.Utility; using ActiveProtect.Utility;
using ActiveProtect.Models; using ActiveProtect.Models;
using System.Net.Mime;
namespace ActiveProtect.Simulation namespace ActiveProtect.Simulation
{ {
@ -435,6 +436,54 @@ namespace ActiveProtect.Simulation
/// </summary> /// </summary>
public float Density { get; set; } 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; }
} }
} }