修改末敏弹干扰器和烟幕干扰器
This commit is contained in:
parent
48378bdbf9
commit
cbb533b47d
@ -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;
|
||||||
|
|||||||
@ -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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -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瓦
|
||||||
|
|||||||
@ -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; }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user