From 953ef0b96873e51fdee7feae21c20b3125d6fde8 Mon Sep 17 00:00:00 2001 From: Tian jianyong <11429339@qq.com> Date: Mon, 9 Jun 2025 14:27:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BA=86=20json=20=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E7=9A=84=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=9D=A6=E5=85=8B=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=EF=BC=8C=E5=B9=B6=E4=BF=AE=E6=94=B9=E4=BA=86?= =?UTF-8?q?=E5=9D=A6=E5=85=8B=E7=9A=84=E6=9C=9D=E5=90=91=E5=92=8C=E9=80=9F?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/equipments/apcs/apc_001.json | 35 --- .../data/equipments/helicopters/heli_001.json | 35 --- .../data/equipments/tanks/mbt_001.json | 35 --- .../data/indicators/ir_trackers/ir_001.json | 14 -- .../indicators/laser_beamriders/br_001.json | 19 -- .../indicators/laser_designators/ld_001.json | 19 -- .../jammers/ir_jammers/infrared_blocking.json | 14 -- .../ir_jammers/infrared_deception.json | 14 -- .../jammers/ir_jammers/infrared_standard.json | 14 -- .../ir_jammers/infrared_top_blocking.json | 14 -- .../jammers/laser_jammers/laser_blocking.json | 14 -- .../laser_jammers/laser_deception.json | 14 -- .../jammers/laser_jammers/laser_decoy.json | 16 -- .../jammers/laser_jammers/laser_decoy.toml | 2 +- .../laser_jammers/laser_top_blocking.json | 14 -- .../jammers/mmw_jammers/mmw_blocking.json | 14 -- .../jammers/mmw_jammers/mmw_compensation.json | 15 -- .../jammers/mmw_jammers/mmw_top_blocking.json | 14 -- .../data/jammers/smoke_grenades/infrared.json | 20 -- .../data/jammers/smoke_grenades/mmw.json | 20 -- .../data/jammers/smoke_grenades/surround.json | 22 -- .../data/jammers/smoke_grenades/top.json | 20 -- .../data/missiles/ir_command/irc_001.json | 28 --- .../data/missiles/ir_imaging/itg_001.json | 36 --- .../data/missiles/laser_beam_rider/hj10.json | 43 ---- .../missiles/laser_beam_rider/kornet.json | 28 --- .../data/missiles/laser_beam_rider/tow.json | 28 --- .../missiles/laser_semi_active/lsgm_001.json | 44 ---- ThreatSource/data/missiles/mmw/mmw_001.json | 58 ----- .../missiles/terminal_sensitive/tsm_001.json | 79 ------- ThreatSource/data/weathers/heavy_fog.json | 15 -- ThreatSource/data/weathers/heavy_rain.json | 15 -- ThreatSource/data/weathers/heavy_snow.json | 15 -- ThreatSource/data/weathers/light_fog.json | 15 -- ThreatSource/data/weathers/light_rain.json | 15 -- ThreatSource/data/weathers/light_snow.json | 15 -- ThreatSource/data/weathers/medium_fog.json | 15 -- ThreatSource/data/weathers/medium_rain.json | 15 -- ThreatSource/data/weathers/medium_snow.json | 15 -- ThreatSource/data/weathers/sandstorm.json | 15 -- ThreatSource/data/weathers/sunny.json | 15 -- ThreatSource/src/Jammer/BaseJammer.cs | 2 +- .../prtformance_test_result_0605.md | 2 + tools/ComprehensiveMissileSimulator.cs | 223 +++++++++++------- tools/Program.cs | 57 ++++- 45 files changed, 195 insertions(+), 996 deletions(-) delete mode 100644 ThreatSource/data/equipments/apcs/apc_001.json delete mode 100644 ThreatSource/data/equipments/helicopters/heli_001.json delete mode 100644 ThreatSource/data/equipments/tanks/mbt_001.json delete mode 100644 ThreatSource/data/indicators/ir_trackers/ir_001.json delete mode 100644 ThreatSource/data/indicators/laser_beamriders/br_001.json delete mode 100644 ThreatSource/data/indicators/laser_designators/ld_001.json delete mode 100644 ThreatSource/data/jammers/ir_jammers/infrared_blocking.json delete mode 100644 ThreatSource/data/jammers/ir_jammers/infrared_deception.json delete mode 100644 ThreatSource/data/jammers/ir_jammers/infrared_standard.json delete mode 100644 ThreatSource/data/jammers/ir_jammers/infrared_top_blocking.json delete mode 100644 ThreatSource/data/jammers/laser_jammers/laser_blocking.json delete mode 100644 ThreatSource/data/jammers/laser_jammers/laser_deception.json delete mode 100644 ThreatSource/data/jammers/laser_jammers/laser_decoy.json delete mode 100644 ThreatSource/data/jammers/laser_jammers/laser_top_blocking.json delete mode 100644 ThreatSource/data/jammers/mmw_jammers/mmw_blocking.json delete mode 100644 ThreatSource/data/jammers/mmw_jammers/mmw_compensation.json delete mode 100644 ThreatSource/data/jammers/mmw_jammers/mmw_top_blocking.json delete mode 100644 ThreatSource/data/jammers/smoke_grenades/infrared.json delete mode 100644 ThreatSource/data/jammers/smoke_grenades/mmw.json delete mode 100644 ThreatSource/data/jammers/smoke_grenades/surround.json delete mode 100644 ThreatSource/data/jammers/smoke_grenades/top.json delete mode 100644 ThreatSource/data/missiles/ir_command/irc_001.json delete mode 100644 ThreatSource/data/missiles/ir_imaging/itg_001.json delete mode 100644 ThreatSource/data/missiles/laser_beam_rider/hj10.json delete mode 100644 ThreatSource/data/missiles/laser_beam_rider/kornet.json delete mode 100644 ThreatSource/data/missiles/laser_beam_rider/tow.json delete mode 100644 ThreatSource/data/missiles/laser_semi_active/lsgm_001.json delete mode 100644 ThreatSource/data/missiles/mmw/mmw_001.json delete mode 100644 ThreatSource/data/missiles/terminal_sensitive/tsm_001.json delete mode 100644 ThreatSource/data/weathers/heavy_fog.json delete mode 100644 ThreatSource/data/weathers/heavy_rain.json delete mode 100644 ThreatSource/data/weathers/heavy_snow.json delete mode 100644 ThreatSource/data/weathers/light_fog.json delete mode 100644 ThreatSource/data/weathers/light_rain.json delete mode 100644 ThreatSource/data/weathers/light_snow.json delete mode 100644 ThreatSource/data/weathers/medium_fog.json delete mode 100644 ThreatSource/data/weathers/medium_rain.json delete mode 100644 ThreatSource/data/weathers/medium_snow.json delete mode 100644 ThreatSource/data/weathers/sandstorm.json delete mode 100644 ThreatSource/data/weathers/sunny.json diff --git a/ThreatSource/data/equipments/apcs/apc_001.json b/ThreatSource/data/equipments/apcs/apc_001.json deleted file mode 100644 index 1719051..0000000 --- a/ThreatSource/data/equipments/apcs/apc_001.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": { - "zh": "装甲运兵车-001", - "en": "Armored Personnel Carrier-001" - }, - "type": "APC", - "properties": { - "type": "APC", - "mass": 25000.0, - "length": 7.0, - "width": 3.2, - "height": 2.8, - "maxSpeed": 80.0, - "armorThickness": 400.0, - "radarCrossSection": 12.0, - "infraredRadiationIntensity": 2000.0, - "ultravioletRadiationIntensity": 12.0, - "millimeterWaveRadiationIntensity": 8.0, - "millimeterWaveRadiationTemperature": 350.0, - "laserReflectivity": 0.25, - "thermalPattern": { - "description": "3x3 matrix representing side view temperature distribution (°C)", - "static": [ - [35, 40, 65], - [30, 35, 70], - [40, 40, 45] - ], - "moving": [ - [40, 45, 70], - [35, 40, 75], - [50, 50, 55] - ] - } - } -} \ No newline at end of file diff --git a/ThreatSource/data/equipments/helicopters/heli_001.json b/ThreatSource/data/equipments/helicopters/heli_001.json deleted file mode 100644 index a1c6a96..0000000 --- a/ThreatSource/data/equipments/helicopters/heli_001.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": { - "zh": "武装直升机-001", - "en": "Attack Helicopter-001" - }, - "type": "Helicopter", - "properties": { - "type": "Helicopter", - "mass": 10000.0, - "length": 17.0, - "width": 3.0, - "height": 4.5, - "maxSpeed": 280.0, - "armorThickness": 150.0, - "radarCrossSection": 8.0, - "infraredRadiationIntensity": 3000.0, - "ultravioletRadiationIntensity": 20.0, - "millimeterWaveRadiationIntensity": 6.0, - "millimeterWaveRadiationTemperature": 450.0, - "laserReflectivity": 0.2, - "thermalPattern": { - "description": "3x3 matrix representing side view temperature distribution (°C)", - "static": [ - [85, 110, 80], - [35, 45, 40], - [30, 35, 30] - ], - "moving": [ - [90, 115, 85], - [40, 50, 45], - [35, 40, 35] - ] - } - } -} \ No newline at end of file diff --git a/ThreatSource/data/equipments/tanks/mbt_001.json b/ThreatSource/data/equipments/tanks/mbt_001.json deleted file mode 100644 index d784fc9..0000000 --- a/ThreatSource/data/equipments/tanks/mbt_001.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": { - "zh": "主战坦克-001", - "en": "Main Battle Tank-001" - }, - "type": "Tank", - "properties": { - "type": "Tank", - "mass": 50000.0, - "length": 10.0, - "width": 3.5, - "height": 2.4, - "maxSpeed": 70.0, - "armorThickness": 800.0, - "radarCrossSection": 15.0, - "infraredRadiationIntensity": 250.0, - "ultravioletRadiationIntensity": 15.0, - "millimeterWaveRadiationIntensity": 10.0, - "millimeterWaveRadiationTemperature": 150.0, - "laserReflectivity": 0.3, - "thermalPattern": { - "description": "3x3 matrix representing side view temperature distribution (°C)", - "static": [ - [40, 45, 80], - [35, 40, 90], - [50, 50, 60] - ], - "moving": [ - [45, 50, 85], - [40, 45, 95], - [65, 65, 75] - ] - } - } -} \ No newline at end of file diff --git a/ThreatSource/data/indicators/ir_trackers/ir_001.json b/ThreatSource/data/indicators/ir_trackers/ir_001.json deleted file mode 100644 index 00599a9..0000000 --- a/ThreatSource/data/indicators/ir_trackers/ir_001.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": { - "zh": "红外测角仪-001", - "en": "IR Tracker-001" - }, - "type": "InfraredTracker", - "infraredTrackerConfig": { - "maxTrackingRange": 10000.0, - "fieldOfView": 0.2, - "angleMeasurementAccuracy": 0.001, - "updateFrequency": 10.0, - "jammingResistanceThreshold": 1e-5 - } -} \ No newline at end of file diff --git a/ThreatSource/data/indicators/laser_beamriders/br_001.json b/ThreatSource/data/indicators/laser_beamriders/br_001.json deleted file mode 100644 index ceefcb6..0000000 --- a/ThreatSource/data/indicators/laser_beamriders/br_001.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": { - "zh": "激光驾束仪-001", - "en": "Laser Beam Rider-001" - }, - "type": "LaserBeamRider", - "beamRiderConfig": { - "power": 1000, - "wavelength": 1.06, - "jammingResistanceThreshold": 1e-5, - "controlFieldDiameter": 6.0, - "laserCodeConfig": { - "code": { - "codeType": "PRF", - "codeValue": 1010 - } - } - } -} \ No newline at end of file diff --git a/ThreatSource/data/indicators/laser_designators/ld_001.json b/ThreatSource/data/indicators/laser_designators/ld_001.json deleted file mode 100644 index dce17d9..0000000 --- a/ThreatSource/data/indicators/laser_designators/ld_001.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": { - "zh": "前视激光指示器-001", - "en": "Forward Looking Laser Designator-001" - }, - "type": "LaserDesignator", - "designatorConfig": { - "power": 5000, - "wavelength": 1.06, - "divergenceAngle": 0.0003, - "jammingResistanceThreshold": 1e-5, - "laserCodeConfig": { - "code": { - "codeType": "PRF", - "codeValue": 1010 - } - } - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/ir_jammers/infrared_blocking.json b/ThreatSource/data/jammers/ir_jammers/infrared_blocking.json deleted file mode 100644 index f7c0da3..0000000 --- a/ThreatSource/data/jammers/ir_jammers/infrared_blocking.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": { - "zh": "红外阻塞干扰器", - "en": "Infrared Blocking Jammer" - }, - "type": "Infrared", - "InfraredJammerConfig": { - "Power": 2000, - "Wavelength": 5, - "AngleRange": 10, - "Mode": "Blocking", - "Duration": 60 - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/ir_jammers/infrared_deception.json b/ThreatSource/data/jammers/ir_jammers/infrared_deception.json deleted file mode 100644 index d201f5f..0000000 --- a/ThreatSource/data/jammers/ir_jammers/infrared_deception.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": { - "zh": "红外欺骗干扰器", - "en": "Infrared Deception Jammer" - }, - "type": "Infrared", - "InfraredJammerConfig": { - "Power": 800, - "Wavelength": 5, - "AngleRange": 15, - "Mode": "Deception", - "Duration": 60 - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/ir_jammers/infrared_standard.json b/ThreatSource/data/jammers/ir_jammers/infrared_standard.json deleted file mode 100644 index 0ae783f..0000000 --- a/ThreatSource/data/jammers/ir_jammers/infrared_standard.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": { - "zh": "红外阻塞干扰器", - "en": "Infrared Blocking Jammer" - }, - "type": "Infrared", - "InfraredJammerConfig": { - "Power": 1000, - "Wavelength": 5, - "AngleRange": 10, - "Mode": "Blocking", - "Duration": 60 - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/ir_jammers/infrared_top_blocking.json b/ThreatSource/data/jammers/ir_jammers/infrared_top_blocking.json deleted file mode 100644 index 5c71e00..0000000 --- a/ThreatSource/data/jammers/ir_jammers/infrared_top_blocking.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": { - "zh": "红外阻塞干扰器", - "en": "Infrared Blocking Jammer" - }, - "type": "Infrared", - "InfraredJammerConfig": { - "Power": 2000, - "Wavelength": 5, - "AngleRange": 90, - "Mode": "Blocking", - "Duration": 60 - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/laser_jammers/laser_blocking.json b/ThreatSource/data/jammers/laser_jammers/laser_blocking.json deleted file mode 100644 index 98e5ec4..0000000 --- a/ThreatSource/data/jammers/laser_jammers/laser_blocking.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": { - "zh": "激光阻塞干扰器", - "en": "Laser Blocking Jammer" - }, - "type": "Laser", - "LaserJammerConfig": { - "Power": 2000, - "wavelength": 1.06, - "angleRange": 10, - "Mode": "Blocking", - "Duration": 60 - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/laser_jammers/laser_deception.json b/ThreatSource/data/jammers/laser_jammers/laser_deception.json deleted file mode 100644 index ee11f89..0000000 --- a/ThreatSource/data/jammers/laser_jammers/laser_deception.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": { - "zh": "激光欺骗干扰器", - "en": "Laser Deception Jammer" - }, - "type": "Laser", - "LaserJammerConfig": { - "Power": 800, - "Wavelength": 1.06, - "AngleRange": 15, - "Mode": "Deception", - "Duration": 60 - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/laser_jammers/laser_decoy.json b/ThreatSource/data/jammers/laser_jammers/laser_decoy.json deleted file mode 100644 index db440d4..0000000 --- a/ThreatSource/data/jammers/laser_jammers/laser_decoy.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": { - "zh": "激光诱偏目标", - "en": "Laser Decoy" - }, - "type": "LaserDecoy", - "LaserDecoyConfig": { - "Mode": "Deception", - "Power": 200.0, - "Wavelength": 1.06, - "DivergenceAngle": 0.001, - "ReflectiveArea": 1.2, - "ReflectionCoefficient": 0.8, - "Duration": 60.0 - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/laser_jammers/laser_decoy.toml b/ThreatSource/data/jammers/laser_jammers/laser_decoy.toml index d6cf739..aee5a51 100644 --- a/ThreatSource/data/jammers/laser_jammers/laser_decoy.toml +++ b/ThreatSource/data/jammers/laser_jammers/laser_decoy.toml @@ -7,7 +7,7 @@ En = "Laser Decoy" [LaserDecoyConfig] Mode = "Deception" # 模式 -Power = 200.0 # 功率 (瓦特) +Power = 10.0 # 功率 (瓦特) Wavelength = 1.06 # 波长 (微米) DivergenceAngle = 0.001 # 发散角 (弧度) ReflectiveArea = 1.2 # 反射面积 (平方米) diff --git a/ThreatSource/data/jammers/laser_jammers/laser_top_blocking.json b/ThreatSource/data/jammers/laser_jammers/laser_top_blocking.json deleted file mode 100644 index 8e580ab..0000000 --- a/ThreatSource/data/jammers/laser_jammers/laser_top_blocking.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": { - "zh": "激光阻塞干扰器", - "en": "Laser Blocking Jammer" - }, - "type": "Laser", - "LaserJammerConfig": { - "Power": 2000, - "wavelength": 1.06, - "angleRange": 90, - "Mode": "Blocking", - "Duration": 60 - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/mmw_jammers/mmw_blocking.json b/ThreatSource/data/jammers/mmw_jammers/mmw_blocking.json deleted file mode 100644 index f40ba05..0000000 --- a/ThreatSource/data/jammers/mmw_jammers/mmw_blocking.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": { - "zh": "毫米波阻塞干扰器", - "en": "Millimeter Wave Blocking Jammer" - }, - "type": "MillimeterWave", - "MillimeterWaveJammerConfig": { - "Power": 2000, - "Wavelength": 3.19, - "AngleRange": 15, - "Mode": "Blocking", - "Duration": 60 - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/mmw_jammers/mmw_compensation.json b/ThreatSource/data/jammers/mmw_jammers/mmw_compensation.json deleted file mode 100644 index e40f169..0000000 --- a/ThreatSource/data/jammers/mmw_jammers/mmw_compensation.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": { - "zh": "毫米波补偿干扰器", - "en": "Millimeter Wave Compensation Jammer" - }, - "type": "MillimeterWaveCompensation", - "MillimeterWaveCompensationJammerConfig": { - "CompensationTemperature": 293.15, - "Power": 1000, - "Wavelength": 8, - "AngleRange": 90, - "Mode": "Deception", - "Duration": 60 - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/mmw_jammers/mmw_top_blocking.json b/ThreatSource/data/jammers/mmw_jammers/mmw_top_blocking.json deleted file mode 100644 index 51c7429..0000000 --- a/ThreatSource/data/jammers/mmw_jammers/mmw_top_blocking.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": { - "zh": "毫米波顶部阻塞干扰器", - "en": "Millimeter Wave Top Blocking Jammer" - }, - "type": "MillimeterWave", - "MillimeterWaveJammerConfig": { - "Power": 2000, - "Wavelength": 3.19, - "AngleRange": 90, - "Mode": "Blocking", - "Duration": 60 - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/smoke_grenades/infrared.json b/ThreatSource/data/jammers/smoke_grenades/infrared.json deleted file mode 100644 index a6b689c..0000000 --- a/ThreatSource/data/jammers/smoke_grenades/infrared.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": { - "zh": "周边烟幕弹", - "en": "Surround Smoke Grenade" - }, - "type": "SmokeGrenade", - "SmokeGrenadeConfig": { - "smokeType": "Wall", - "IsObscuring": true, - "RadiationTemperature": 395.0, - "concentration": 0.2, - "duration": 60.0, - "wallWidth": 50.0, - "wallHeight": 10.0, - "cloudDiameter": 0.0, - "thickness": 5.0, - "formationDelay": 2.0, - "expansionRate": 5.0 - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/smoke_grenades/mmw.json b/ThreatSource/data/jammers/smoke_grenades/mmw.json deleted file mode 100644 index 593cf94..0000000 --- a/ThreatSource/data/jammers/smoke_grenades/mmw.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": { - "zh": "周边烟幕弹", - "en": "Surround Smoke Grenade" - }, - "type": "SmokeGrenade", - "SmokeGrenadeConfig": { - "smokeType": "Wall", - "IsObscuring": true, - "RadiationTemperature": 173.15, - "concentration": 0.2, - "duration": 60.0, - "wallWidth": 50.0, - "wallHeight": 10.0, - "cloudDiameter": 0.0, - "thickness": 5.0, - "formationDelay": 2.0, - "expansionRate": 5.0 - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/smoke_grenades/surround.json b/ThreatSource/data/jammers/smoke_grenades/surround.json deleted file mode 100644 index 2ca5f5a..0000000 --- a/ThreatSource/data/jammers/smoke_grenades/surround.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": { - "zh": "周边烟幕弹", - "en": "Surround Smoke Grenade" - }, - "type": "SmokeGrenade", - "SmokeGrenadeConfig": { - "smokeType": "Wall", - "IsObscuring": false, - "IsAntiInfrared": false, - "IsAntiMillimeterWave": false, - "RadiationTemperature": 293.15, - "concentration": 0.2, - "duration": 60.0, - "wallWidth": 50.0, - "wallHeight": 10.0, - "cloudDiameter": 0.0, - "thickness": 5.0, - "formationDelay": 2.0, - "expansionRate": 5.0 - } -} \ No newline at end of file diff --git a/ThreatSource/data/jammers/smoke_grenades/top.json b/ThreatSource/data/jammers/smoke_grenades/top.json deleted file mode 100644 index b4a5875..0000000 --- a/ThreatSource/data/jammers/smoke_grenades/top.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": { - "zh": "顶部烟幕弹", - "en": "Top Smoke Grenade" - }, - "type": "SmokeGrenade", - "SmokeGrenadeConfig": { - "smokeType": "Cloud", - "IsObscuring": true, - "RadiationTemperature": 395.0, - "concentration": 0.2, - "duration": 60.0, - "wallWidth": 0.0, - "wallHeight": 0.0, - "cloudDiameter": 20.0, - "thickness": 5.0, - "formationDelay": 1.5, - "expansionRate": 5.0 - } -} \ No newline at end of file diff --git a/ThreatSource/data/missiles/ir_command/irc_001.json b/ThreatSource/data/missiles/ir_command/irc_001.json deleted file mode 100644 index e794396..0000000 --- a/ThreatSource/data/missiles/ir_command/irc_001.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": { - "zh": "红外指令导引导弹-001", - "en": "IR Command Guided Missile-001" - }, - "type": "InfraredCommandGuidance", - "properties": { - "type": "InfraredCommandGuidance", - "maxSpeed": 300.0, - "maxFlightTime": 60.0, - "maxFlightDistance": 5000.0, - "maxAcceleration": 100.0, - "proportionalNavigationCoefficient": 3.0, - "launchAcceleration": 100.0, - "maxEngineBurnTime": 0.1, - "cruiseTime": 5.0, - "mass": 23.5, - "explosionRadius": 5.0, - "hitProbability": 0.9, - "selfDestructHeight": 0.0, - "trackerSensitivity": null, - "commandLatency": null, - "irSignature": null - }, - "infraredCommandGuidanceConfig": { - "jammingResistanceThreshold": 1e-5 - } -} \ No newline at end of file diff --git a/ThreatSource/data/missiles/ir_imaging/itg_001.json b/ThreatSource/data/missiles/ir_imaging/itg_001.json deleted file mode 100644 index e700ae8..0000000 --- a/ThreatSource/data/missiles/ir_imaging/itg_001.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": { - "zh": "红外成像末制导导弹-001", - "en": "IR Imaging Terminal Guided Missile-001" - }, - "type": "InfraredImagingTerminalGuidance", - "properties": { - "type": "InfraredImagingTerminalGuidance", - "maxSpeed": 250.0, - "maxFlightTime": 60.0, - "maxFlightDistance": 5000.0, - "maxAcceleration": 100.0, - "proportionalNavigationCoefficient": 3.0, - "launchAcceleration": 100.0, - "maxEngineBurnTime": 0.1, - "cruiseTime": 5.0, - "mass": 25.0, - "explosionRadius": 5.5, - "hitProbability": 0.9, - "selfDestructHeight": 0.0 - }, - "infraredImagingGuidanceConfig": { - "maxDetectionRange": 1000, - "searchFieldOfView": 0.209, - "trackFieldOfView": 0.052, - "imageWidth": 640, - "imageHeight": 512, - "backgroundIntensity": 1e-4, - "searchRecognitionProbability": 0.6, - "trackRecognitionProbability": 0.8, - "targetLostTolerance": 0.2, - "lockConfirmationTime": 0.3, - "jammingResistanceThreshold": 1e-5, - "waveLength": 3.0 - } -} \ No newline at end of file diff --git a/ThreatSource/data/missiles/laser_beam_rider/hj10.json b/ThreatSource/data/missiles/laser_beam_rider/hj10.json deleted file mode 100644 index a8e363c..0000000 --- a/ThreatSource/data/missiles/laser_beam_rider/hj10.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": { - "zh": "红箭-10", - "en": "HJ-10" - }, - "type": "LaserBeamRiderGuidance", - "properties": { - "type": "LaserBeamRiderGuidance", - "maxSpeed": 300.0, - "maxFlightTime": 60.0, - "maxFlightDistance": 5000.0, - "maxAcceleration": 100.0, - "proportionalNavigationCoefficient": 3.0, - "launchAcceleration": 100.0, - "maxEngineBurnTime": 0.1, - "cruiseTime": 5.0, - "mass": 24.5, - "explosionRadius": 5.0, - "hitProbability": 0.9, - "selfDestructHeight": 0.0, - "laserCodeConfig": { - "code": { - "codeType": "PRF", - "codeValue": 1010 - }, - "IsCodeEnabled": true, - "IsCodeMatchRequired": true - } - }, - "LaserBeamRiderGuidanceConfig": { - "minDetectablePower": 1e-10, - "detectorDiameter": 0.03, - "controlFieldDiameter": 20.0, - "proportionalGain": 30.0, - "integralGain": 0.05, - "derivativeGain": 5.0, - "nonlinearGain": 0.5, - "maxGuidanceAcceleration": 50.0, - "lowPassFilterCoefficient": 0.2, - "wavelength": 1.06, - "jammingResistanceThreshold": 1e-5 - } -} \ No newline at end of file diff --git a/ThreatSource/data/missiles/laser_beam_rider/kornet.json b/ThreatSource/data/missiles/laser_beam_rider/kornet.json deleted file mode 100644 index 8643d51..0000000 --- a/ThreatSource/data/missiles/laser_beam_rider/kornet.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": { - "zh": "科尔内特", - "en": "Kornet" - }, - "type": "LaserBeamRiderGuidance", - "properties": { - "type": "LaserBeamRiderGuidance", - "maxSpeed": 300.0, - "maxFlightTime": 70.0, - "maxFlightDistance": 5500.0, - "maxAcceleration": 110.0, - "proportionalNavigationCoefficient": 3.0, - "launchAcceleration": 100.0, - "maxEngineBurnTime": 12.0, - "cruiseTime": 5.0, - "mass": 27.0, - "explosionRadius": 5.5, - "hitProbability": 0.9, - "selfDestructHeight": 10.0, - "laserCodeConfig": { - "code": { - "codeType": "PRF", - "codeValue": 1100 - } - } - } -} \ No newline at end of file diff --git a/ThreatSource/data/missiles/laser_beam_rider/tow.json b/ThreatSource/data/missiles/laser_beam_rider/tow.json deleted file mode 100644 index fc33378..0000000 --- a/ThreatSource/data/missiles/laser_beam_rider/tow.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": { - "zh": "陶式导弹", - "en": "TOW" - }, - "type": "LaserBeamRiderGuidance", - "properties": { - "type": "LaserBeamRiderGuidance", - "maxSpeed": 278.0, - "maxFlightTime": 65.0, - "maxFlightDistance": 4500.0, - "maxAcceleration": 100.0, - "proportionalNavigationCoefficient": 3.0, - "launchAcceleration": 100.0, - "maxEngineBurnTime": 10.0, - "cruiseTime": 5.0, - "mass": 22.6, - "explosionRadius": 5.0, - "hitProbability": 0.9, - "selfDestructHeight": 10.0, - "laserCodeConfig": { - "code": { - "codeType": "PRF", - "codeValue": 1110 - } - } - } -} \ No newline at end of file diff --git a/ThreatSource/data/missiles/laser_semi_active/lsgm_001.json b/ThreatSource/data/missiles/laser_semi_active/lsgm_001.json deleted file mode 100644 index 18aa655..0000000 --- a/ThreatSource/data/missiles/laser_semi_active/lsgm_001.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": { - "zh": "激光半主动制导导弹-001", - "en": "Laser Semi-Active Guidance Missile-001" - }, - "type": "LaserSemiActiveGuidance", - "properties": { - "type": "LaserSemiActiveGuidance", - "maxSpeed": 800.0, - "maxFlightTime": 60.0, - "maxFlightDistance": 4000.0, - "maxAcceleration": 50.0, - "proportionalNavigationCoefficient": 2.0, - "launchAcceleration": 100.0, - "maxEngineBurnTime": 0.1, - "cruiseTime": 5.0, - "mass": 22.0, - "explosionRadius": 5.0, - "hitProbability": 0.9, - "selfDestructHeight": 0.0, - "laserCodeConfig": { - "code": { - "codeType": "PRF", - "codeValue": 1010 - }, - "IsCodeEnabled": true, - "IsCodeMatchRequired": true - } - }, - "laserSemiActiveGuidanceConfig": { - "fieldOfViewAngle": 30.0, - "lensDiameter": 0.1, - "sensorDiameter": 0.03, - "focusedSpotDiameter": 0.006, - "reflectionCoefficient": 0.2, - "targetReflectiveArea": 1.0, - "lockThreshold": 1e-7, - "spotOffsetSensitivity": 0.05, - "jammingResistanceThreshold": 1e-5, - "transmitterEfficiency": 0.85, - "receiverEfficiency": 0.8, - "wavelength": 1.06 - } -} \ No newline at end of file diff --git a/ThreatSource/data/missiles/mmw/mmw_001.json b/ThreatSource/data/missiles/mmw/mmw_001.json deleted file mode 100644 index 3c76ad4..0000000 --- a/ThreatSource/data/missiles/mmw/mmw_001.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": { - "zh": "毫米波末制导导弹-001", - "en": "Millimeter Wave Terminal Guided Missile-001" - }, - "type": "MillimeterWaveTerminalGuidance", - "properties": { - "type": "MillimeterWaveTerminalGuidance", - "maxSpeed": 250.0, - "maxFlightTime": 60.0, - "maxFlightDistance": 8000.0, - "maxAcceleration": 100.0, - "proportionalNavigationCoefficient": 3.0, - "launchAcceleration": 100.0, - "maxEngineBurnTime": 0.1, - "cruiseTime": 4.0, - "mass": 28.0, - "explosionRadius": 5.0, - "hitProbability": 0.9, - "selfDestructHeight": 0.0 - }, - "millimeterWaveGuidanceConfig": { - "maxDetectionRange": 5000.0, - "fieldOfViewAngle": 30.0, - "targetRecognitionProbability": 0.95, - "waveFrequency": 94e9, - "pulseDuration": 1e-6, - - "searchBeamWidth": 4.0, - "trackBeamWidth": 3.0, - "lockBeamWidth": 2.0, - - "scanAngularSpeedDeg": 180.0, - "spiralTightness": 1.2, - "spiralTurns": 2, - - "recognitionSNRThreshold": -25.0, - "lockSNRThreshold": -15.0, - - "targetLostTolerance": 0.8, - "lockConfirmationTime": 0.15, - - "pulseRepetitionFrequency": 1.0e-4, - "transmitPower": 0.3, - - "dopplerVelocityResolution": 1.0, - "maxMeasurableVelocity": 1000.0, - - "antennaGain": 35.0, - "noiseFigureDB": 7.0, - "systemLossDB": 6.0, - "monopulseSensitivity": 0.1, - - "yawControlEffectiveness": 120.0, - "pitchControlEffectiveness": 150.0, - "jammingResistanceThreshold": 1e-5 - } -} \ No newline at end of file diff --git a/ThreatSource/data/missiles/terminal_sensitive/tsm_001.json b/ThreatSource/data/missiles/terminal_sensitive/tsm_001.json deleted file mode 100644 index 90e1f70..0000000 --- a/ThreatSource/data/missiles/terminal_sensitive/tsm_001.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "name": { - "zh": "末敏导弹-001", - "en": "Terminal Sensitive Missile-001" - }, - "type": "TerminalSensitiveMissile", - "properties": { - "type": "TerminalSensitiveMissile", - "maxSpeed": 1000.0, - "maxFlightTime": 100.0, - "maxFlightDistance": 5000.0, - "maxAcceleration": 200.0, - "proportionalNavigationCoefficient": 3.0, - "launchAcceleration": 100.0, - "maxEngineBurnTime": 0.1, - "cruiseTime": 5.0, - "mass": 50.0, - "explosionRadius": 5.0, - "selfDestructHeight": 0.0 - }, - "submunitionProperties": { - "maxSpeed": 2000.0, - "maxFlightTime": 60.0, - "maxFlightDistance": 2000.0, - "maxAcceleration": 300.0, - "proportionalNavigationCoefficient": 4.0, - "launchAcceleration": 10.0, - "maxEngineBurnTime": 0.1, - "mass": 10.0, - "explosionRadius": 5.0, - "hitProbability": 0.9, - "selfDestructHeight": 20.0 - }, - "submunitionCount": 1, - "submunitionConfig": { - "separationHeight": 1000.0, - "separationDistance": 1000.0, - "submunitionSeparationAngle": 45.0, - "separationRange": 50.0, - "decelerationAcceleration": 250.0, - "decelerationEndSpeed": 50.0, - "parachuteDeploymentHeight": 400.0, - "parachuteDeceleration": 90.0, - "stableScanHeight": 200.0, - "verticalDeclineSpeed": 10.0, - "spiralRotationSpeed": 25.13, - "scanAngle": 30.0, - "targetDetectionDistance": 150.0, - "selfDestructHeight": 20.0, - "attackSpeed": 200.0, - "infraredDetectorConfig": { - "maxDetectionRange": 1000.0, - "band": "Medium", - "fieldOfView": 1.0, - "detectionRadiationIntensityThreshold": 50.0, - "jammingResistanceThreshold": 1e-4 - }, - "radiometerConfig": { - "maxDetectionRange": 1000.0, - "band": "Band8", - "scanFieldOfView": 1.0, - "jammingResistanceThreshold": 1e-4 - }, - "altimeterConfig": { - "maxAltitude": 1000.0, - "band": "Band3", - "measurementAccuracy": 0.5, - "scanFieldOfView": 25.0, - "jammingResistanceThreshold": 1e-4 - }, - "rangefinderConfig": { - "maxDetectionRange": 1000.0, - "wavelength": 1.06, - "pulseRate": 100.0, - "accuracy": 0.5, - "jammingResistanceThreshold": 1e-4 - } - } -} \ No newline at end of file diff --git a/ThreatSource/data/weathers/heavy_fog.json b/ThreatSource/data/weathers/heavy_fog.json deleted file mode 100644 index ca03b1e..0000000 --- a/ThreatSource/data/weathers/heavy_fog.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": { - "zh": "浓雾", - "en": "Heavy Fog" - }, - "type": "Fog", - "temperature": 8.0, - "relativeHumidity": 99.0, - "visibility": 0.1, - "precipitation": 0.0, - "cO2Concentration": 415.0, - "pressure": 998.0, - "windSpeed": 0.0, - "windDirection": 0.0 -} \ No newline at end of file diff --git a/ThreatSource/data/weathers/heavy_rain.json b/ThreatSource/data/weathers/heavy_rain.json deleted file mode 100644 index f7c99e2..0000000 --- a/ThreatSource/data/weathers/heavy_rain.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": { - "zh": "大雨", - "en": "Heavy Rain" - }, - "type": "Rain", - "temperature": 16.0, - "relativeHumidity": 95.0, - "visibility": 2.0, - "precipitation": 25.0, - "cO2Concentration": 415.0, - "pressure": 985.0, - "windSpeed": 8.0, - "windDirection": 180.0 -} \ No newline at end of file diff --git a/ThreatSource/data/weathers/heavy_snow.json b/ThreatSource/data/weathers/heavy_snow.json deleted file mode 100644 index 3a929d1..0000000 --- a/ThreatSource/data/weathers/heavy_snow.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": { - "zh": "大雪", - "en": "Heavy Snow" - }, - "type": "Snow", - "temperature": -7.0, - "relativeHumidity": 85.0, - "visibility": 1.0, - "precipitation": 8.0, - "cO2Concentration": 410.0, - "pressure": 990.0, - "windSpeed": 6.0, - "windDirection": 270.0 -} \ No newline at end of file diff --git a/ThreatSource/data/weathers/light_fog.json b/ThreatSource/data/weathers/light_fog.json deleted file mode 100644 index 693e6f5..0000000 --- a/ThreatSource/data/weathers/light_fog.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": { - "zh": "轻雾", - "en": "Light Fog" - }, - "type": "Fog", - "temperature": 12.0, - "relativeHumidity": 95.0, - "visibility": 0.8, - "precipitation": 0.0, - "cO2Concentration": 415.0, - "pressure": 1000.0, - "windSpeed": 0.5, - "windDirection": 20.0 -} \ No newline at end of file diff --git a/ThreatSource/data/weathers/light_rain.json b/ThreatSource/data/weathers/light_rain.json deleted file mode 100644 index 38bcfb5..0000000 --- a/ThreatSource/data/weathers/light_rain.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": { - "zh": "小雨", - "en": "Light Rain" - }, - "type": "Rain", - "temperature": 20.0, - "relativeHumidity": 80.0, - "visibility": 6.0, - "precipitation": 5.0, - "cO2Concentration": 415.0, - "pressure": 1005.0, - "windSpeed": 3.0, - "windDirection": 180.0 -} \ No newline at end of file diff --git a/ThreatSource/data/weathers/light_snow.json b/ThreatSource/data/weathers/light_snow.json deleted file mode 100644 index bb656e0..0000000 --- a/ThreatSource/data/weathers/light_snow.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": { - "zh": "小雪", - "en": "Light Snow" - }, - "type": "Snow", - "temperature": -3.0, - "relativeHumidity": 75.0, - "visibility": 4.0, - "precipitation": 2.0, - "cO2Concentration": 410.0, - "pressure": 1002.0, - "windSpeed": 3.0, - "windDirection": 270.0 -} \ No newline at end of file diff --git a/ThreatSource/data/weathers/medium_fog.json b/ThreatSource/data/weathers/medium_fog.json deleted file mode 100644 index 5236375..0000000 --- a/ThreatSource/data/weathers/medium_fog.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": { - "zh": "中雾", - "en": "Medium Fog" - }, - "type": "Fog", - "temperature": 10.0, - "relativeHumidity": 98.0, - "visibility": 0.4, - "precipitation": 0.0, - "cO2Concentration": 415.0, - "pressure": 1000.0, - "windSpeed": 0.2, - "windDirection": 10.0 -} \ No newline at end of file diff --git a/ThreatSource/data/weathers/medium_rain.json b/ThreatSource/data/weathers/medium_rain.json deleted file mode 100644 index 4fe1d6f..0000000 --- a/ThreatSource/data/weathers/medium_rain.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": { - "zh": "中雨", - "en": "Medium Rain" - }, - "type": "Rain", - "temperature": 18.0, - "relativeHumidity": 90.0, - "visibility": 4.0, - "precipitation": 15.0, - "cO2Concentration": 415.0, - "pressure": 995.0, - "windSpeed": 6.0, - "windDirection": 180.0 -} diff --git a/ThreatSource/data/weathers/medium_snow.json b/ThreatSource/data/weathers/medium_snow.json deleted file mode 100644 index 1b43fe4..0000000 --- a/ThreatSource/data/weathers/medium_snow.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": { - "zh": "中雪", - "en": "Medium Snow" - }, - "type": "Snow", - "temperature": -5.0, - "relativeHumidity": 80.0, - "visibility": 2.0, - "precipitation": 4.0, - "cO2Concentration": 410.0, - "pressure": 1000.0, - "windSpeed": 4.0, - "windDirection": 270.0 -} \ No newline at end of file diff --git a/ThreatSource/data/weathers/sandstorm.json b/ThreatSource/data/weathers/sandstorm.json deleted file mode 100644 index 992bec2..0000000 --- a/ThreatSource/data/weathers/sandstorm.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": { - "zh": "沙尘", - "en": "Sandstorm" - }, - "type": "Dust", - "temperature": 30.0, - "relativeHumidity": 25.0, - "visibility": 1.5, - "precipitation": 0.0, - "cO2Concentration": 430.0, - "pressure": 1005.0, - "windSpeed": 12.0, - "windDirection": 315.0 -} \ No newline at end of file diff --git a/ThreatSource/data/weathers/sunny.json b/ThreatSource/data/weathers/sunny.json deleted file mode 100644 index 6dbbffa..0000000 --- a/ThreatSource/data/weathers/sunny.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": { - "zh": "晴天", - "en": "Sunny" - }, - "type": "Clear", - "temperature": 25.0, - "relativeHumidity": 45.0, - "visibility": 15.0, - "precipitation": 0.0, - "cO2Concentration": 415.0, - "pressure": 1018.0, - "windSpeed": 1.2, - "windDirection": 90.0 -} \ No newline at end of file diff --git a/ThreatSource/src/Jammer/BaseJammer.cs b/ThreatSource/src/Jammer/BaseJammer.cs index 70ef87d..66e7818 100644 --- a/ThreatSource/src/Jammer/BaseJammer.cs +++ b/ThreatSource/src/Jammer/BaseJammer.cs @@ -183,7 +183,7 @@ namespace ThreatSource.Jammer } /// - /// 发布干扰开始事件 + /// 发布干扰事件 /// protected void PublishJammingEvent(JammingParameters parameters) { diff --git a/docs/test_result/prtformance_test_result_0605.md b/docs/test_result/prtformance_test_result_0605.md index 6fb2ca1..3c2ef3b 100644 --- a/docs/test_result/prtformance_test_result_0605.md +++ b/docs/test_result/prtformance_test_result_0605.md @@ -350,6 +350,8 @@ GC频率: 优秀 ✅ Gen0 GC次数: 9 (0.3 次/秒) Gen1 GC次数: 0 (0.0 次/秒) Gen2 GC次数: 0 (0.0 次/秒) + + 总GC次数: 9 【性能评级】 帧时间表现: 优秀 ✅ diff --git a/tools/ComprehensiveMissileSimulator.cs b/tools/ComprehensiveMissileSimulator.cs index 8e9fa2f..bcde703 100644 --- a/tools/ComprehensiveMissileSimulator.cs +++ b/tools/ComprehensiveMissileSimulator.cs @@ -10,6 +10,23 @@ using System.Diagnostics; namespace ThreatSource.Tools.MissileSimulation { + /// + /// 坦克移动模式枚举 + /// + public enum TankMovementMode + { + /// 静止模式:位置(0,1.2,0),速度0 + Stationary = 0, + /// 超低速模式:速度1m/s + VeryLowSpeed = 1, + /// 低速模式:速度5m/s + LowSpeed = 5, + /// 中速模式:速度10m/s + MediumSpeed = 10, + /// 高速模式:速度20m/s + HighSpeed = 20 + } + /// /// 综合导弹模拟器 - 支持6种不同类型的导弹模拟 /// @@ -37,6 +54,9 @@ namespace ThreatSource.Tools.MissileSimulation // 当前选中的导弹ID public string SelectedMissileId { get; private set; } + // 当前坦克移动模式 + public TankMovementMode CurrentTankMovementMode { get; private set; } = TankMovementMode.Stationary; + private List<(JammingType Type, string DisplayName, string JammerId, string Mode, string Target)> activeJammings; /// @@ -203,94 +223,30 @@ namespace ThreatSource.Tools.MissileSimulation /// private void AddTankTarget() { + double speed = (double)CurrentTankMovementMode; + var motionParameters = new KinematicState { Position = new Vector3D(0, 1.2, 0), - Orientation = new Orientation(0.0, 0.0, 0.0), - Speed = 2.0 + Orientation = speed > 0 ? new Orientation(0.0, 0.0, 0.0) : new Orientation(0.0, 0.0, 0.0), // 朝向Z轴正方向 + Speed = speed }; + // 如果是移动模式,设置速度矢量 + if (speed > 0) + { + motionParameters.Velocity = new Vector3D(0, 0, speed); // Z轴正方向运动 + } + string targetId = "Tank_1"; var target = _threatSourceFactory.CreateEquipment(targetId, "mbt_001", motionParameters); targets[targetId] = target; simulationManager.RegisterEntity(targetId, target); target.Activate(); // 激活目标 + Console.WriteLine($"添加目标 {targetId},位置:{motionParameters.Position}"); - Console.WriteLine($"目标创建后实际位置:{target.KState.Position}"); - } - - /// - /// 添加激光诱偏目标 - /// - private void AddLaserDecoy() - { - var motionParameters = new KinematicState - { - Position = new Vector3D(0, 0, 50), - Orientation = new Orientation(Math.PI/2, 0.0, 0.0), - Speed = 0.0 - }; - string laserDecoyId = "LDY_1"; - if (_threatSourceFactory.CreateJammer(laserDecoyId, "laser_decoy", motionParameters, "Tank_1") is LaserDecoy laserDecoy) - { - simulationManager.RegisterEntity(laserDecoyId, laserDecoy); - jammers[laserDecoyId] = laserDecoy as BaseJammer; - Console.WriteLine($"注册激光诱偏目标 {laserDecoyId}"); - } - } - - /// - /// 添加烟幕弹 - /// - private void AddSmokeGrenade() - { - var motionParameters = new KinematicState - { - Position = new Vector3D(50, 5, 0), - Orientation = new Orientation(Math.PI/2, 0.0, 0.0), - Speed = 0.0 - }; - string smokeGrenadeId = "SG_1"; - var smokeGrenade = _threatSourceFactory.CreateJammer(smokeGrenadeId, "surround", motionParameters, "Tank_1"); - if (smokeGrenade is BaseJammer jammer1) - { - simulationManager.RegisterEntity(smokeGrenadeId, jammer1); - jammers[smokeGrenadeId] = jammer1; - Console.WriteLine($"注册烟幕弹 {smokeGrenadeId}"); - } - - smokeGrenadeId = "SG_2"; - smokeGrenade = _threatSourceFactory.CreateJammer(smokeGrenadeId, "infrared", motionParameters, "Tank_1"); - if (smokeGrenade is BaseJammer jammer2) - { - simulationManager.RegisterEntity(smokeGrenadeId, jammer2); - jammers[smokeGrenadeId] = jammer2; - Console.WriteLine($"注册烟幕弹 {smokeGrenadeId}"); - } - - smokeGrenadeId = "SG_3"; - smokeGrenade = _threatSourceFactory.CreateJammer(smokeGrenadeId, "mmw", motionParameters, "Tank_1"); - if (smokeGrenade is BaseJammer jammer3) - { - simulationManager.RegisterEntity(smokeGrenadeId, jammer3); - jammers[smokeGrenadeId] = jammer3; - Console.WriteLine($"注册烟幕弹 {smokeGrenadeId}"); - } - - var motionParametersTop = new KinematicState - { - Position = new Vector3D(0, 10, 0), - Orientation = new Orientation(0, Math.PI/2, 0.0), - Speed = 0.0 - }; - smokeGrenadeId = "SG_4"; - smokeGrenade = _threatSourceFactory.CreateJammer(smokeGrenadeId, "top", motionParametersTop, "Tank_1"); - if (smokeGrenade is BaseJammer jammer4) - { - simulationManager.RegisterEntity(smokeGrenadeId, jammer4); - jammers[smokeGrenadeId] = jammer4; - Console.WriteLine($"注册烟幕弹 {smokeGrenadeId}"); - } + Console.WriteLine($"移动模式:{GetMovementModeDisplayName(CurrentTankMovementMode)}"); + Console.WriteLine($"目标创建后实际位置:{target.KState.Position},速度:{target.KState.Speed} m/s"); } /// @@ -863,7 +819,7 @@ namespace ThreatSource.Tools.MissileSimulation /// /// 清除干扰 (原有方法,保留向后兼容) /// - public void ClearJamming(JammingType type, string category) + public static void ClearJamming(JammingType type, string category) { var jammingParams = new JammingParameters { @@ -872,9 +828,7 @@ namespace ThreatSource.Tools.MissileSimulation Duration = 0, Direction = new Vector3D(1, 0, 0), SourcePosition = new Vector3D(0, 0, 0) - }; - - // 保留原有实现... + }; } /// @@ -1232,6 +1186,88 @@ namespace ThreatSource.Tools.MissileSimulation return [.. activeJammings]; } + /// + /// 设置坦克移动模式 + /// + /// 要设置的移动模式 + public void SetTankMovementMode(TankMovementMode mode) + { + CurrentTankMovementMode = mode; + Console.WriteLine($"坦克移动模式已设置为: {GetMovementModeDisplayName(mode)}"); + + // 如果坦克已经存在,更新其运动参数 + if (targets.TryGetValue("Tank_1", out var tank)) + { + UpdateTankMovementParameters(tank, mode); + } + } + + /// + /// 获取移动模式的显示名称 + /// + private static string GetMovementModeDisplayName(TankMovementMode mode) + { + return mode switch + { + TankMovementMode.Stationary => "静止, 0 m/s", + TankMovementMode.VeryLowSpeed => "超低速, 1 m/s", + TankMovementMode.LowSpeed => "低速, 5 m/s", + TankMovementMode.MediumSpeed => "中速, 10 m/s", + TankMovementMode.HighSpeed => "高速, 20 m/s", + _ => "未知模式" + }; + } + + /// + /// 更新坦克的运动参数 + /// + private void UpdateTankMovementParameters(SimulationElement tank, TankMovementMode mode) + { + double speed = (double)mode; + + // 设置运动参数 + tank.KState.Speed = speed; + + if (speed > 0) + { + // 移动模式:设置X轴正方向运动,坦克面向运动方向 + tank.KState.Orientation = new Orientation(0, 0, 0); // 面向X轴正方向 + tank.KState.Velocity = new Vector3D(speed, 0, 0); + } + else + { + // 静止模式:清零速度和方向 + tank.KState.Velocity = Vector3D.Zero; + } + + Console.WriteLine($"坦克运动参数已更新 - 速度: {speed} m/s, 位置: {tank.KState.Position}"); + } + + /// + /// 获取可用的坦克移动模式列表 + /// + /// 包含移动模式和显示名称的数组 + public (TankMovementMode Mode, string DisplayName)[] GetAvailableMovementModes() + { + return new[] + { + (TankMovementMode.Stationary, GetMovementModeDisplayName(TankMovementMode.Stationary)), + (TankMovementMode.VeryLowSpeed, GetMovementModeDisplayName(TankMovementMode.VeryLowSpeed)), + (TankMovementMode.LowSpeed, GetMovementModeDisplayName(TankMovementMode.LowSpeed)), + (TankMovementMode.MediumSpeed, GetMovementModeDisplayName(TankMovementMode.MediumSpeed)), + (TankMovementMode.HighSpeed, GetMovementModeDisplayName(TankMovementMode.HighSpeed)) + }; + } + + /// + /// 获取当前坦克移动模式信息 + /// + /// 当前移动模式和显示名称 + public (TankMovementMode Mode, string DisplayName) GetCurrentMovementMode() + { + return (CurrentTankMovementMode, GetMovementModeDisplayName(CurrentTankMovementMode)); + } + /// /// 销毁所有实体并从仿真管理器中注销 /// @@ -1344,10 +1380,6 @@ namespace ThreatSource.Tools.MissileSimulation // 根据导弹类型添加相应的干扰器 AddJammersForMissile(missileId); - // 添加烟幕弹和激光诱偏目标 - AddSmokeGrenade(); - AddLaserDecoy(); - // 激活选中的导弹 if (missiles.TryGetValue(missileId, out var selectedMissile)) { @@ -1388,12 +1420,13 @@ namespace ThreatSource.Tools.MissileSimulation { try { - // 根据干扰器ID确定朝向 + // 根据干扰器ID确定朝向和位置 Orientation orientation = GetJammerOrientation(jammerId, target); + Vector3D position = GetJammerPosition(jammerId); var jammerParams = new KinematicState { - Position = new Vector3D(0, 0, 0), + Position = position, Orientation = orientation, Speed = 0.0 }; @@ -1406,7 +1439,7 @@ namespace ThreatSource.Tools.MissileSimulation { simulationManager.RegisterEntity(jammerId, jammer); jammers[jammerId] = baseJammer; - Console.WriteLine($"注册干扰器 {jammerId}"); + Console.WriteLine($"注册干扰器 {jammerId},位置:{position}"); } } catch (Exception ex) @@ -1500,5 +1533,19 @@ namespace ThreatSource.Tools.MissileSimulation _ => "laser_blocking" // 默认配置 }; } + + /// + /// 根据干扰器ID确定初始位置 + /// + private Vector3D GetJammerPosition(string jammerId) + { + return jammerId switch + { + "LDY_1" => new Vector3D(0, 0, 50), // 激光诱偏目标:目标后方50米 + "SG_1" or "SG_2" or "SG_3" => new Vector3D(50, 5, 0), // 水平烟幕弹:侧方50米,高5米 + "SG_4" => new Vector3D(0, 10, 0), // 顶部烟幕弹:正上方10米 + _ => new Vector3D(0, 0, 0) // 其他干扰器默认位置 + }; + } } } \ No newline at end of file diff --git a/tools/Program.cs b/tools/Program.cs index 1dbdab1..3759b88 100644 --- a/tools/Program.cs +++ b/tools/Program.cs @@ -41,12 +41,16 @@ namespace ThreatSource.Tools.MissileSimulation sensorStatusString = "(需先选导弹)"; } + // 获取当前坦克移动模式状态 + var currentTankMode = simulator.GetCurrentMovementMode(); + Console.WriteLine($"1. 选择导弹 ({missileStatus})"); Console.WriteLine($"2. 选择指示器 {sensorStatusString}"); Console.WriteLine($"3. 选择干扰方式 {simulator.GetActiveJammingDescription()} {(string.IsNullOrEmpty(simulator.SelectedMissileId) ? "(需先选导弹)" : "")}"); Console.WriteLine($"4. 设置日志级别 (当前级别: {simulator.CurrentLogLevel})"); Console.WriteLine($"5. 开始仿真 {(string.IsNullOrEmpty(simulator.SelectedMissileId) ? "(需先选导弹)" : "")}"); - Console.WriteLine($"6. 设置仿真步长 (当前: {simulator.TimeStep}s)"); + Console.WriteLine($"6. 设置坦克移动模式 (当前: {currentTankMode.DisplayName})"); + Console.WriteLine($"7. 设置仿真步长 (当前: {simulator.TimeStep}s)"); Console.WriteLine("0. 退出程序"); Console.Write("\n请选择: "); string choice = Console.ReadLine()?.ToLower() ?? string.Empty; @@ -82,6 +86,9 @@ namespace ThreatSource.Tools.MissileSimulation } break; case "6": + ConfigureTankMovement(simulator); + break; + case "7": ConfigureTimeStep(simulator); break; case "0": @@ -392,5 +399,53 @@ namespace ThreatSource.Tools.MissileSimulation } } } + + static void ConfigureTankMovement(ComprehensiveMissileSimulator simulator) + { + bool backToMainMenu = false; + while (!backToMainMenu) + { + var currentMode = simulator.GetCurrentMovementMode(); + var availableModes = simulator.GetAvailableMovementModes(); + + Console.WriteLine("\n--- 设置坦克移动模式 ---"); + Console.WriteLine($"当前坦克移动模式: {currentMode.DisplayName}"); + Console.WriteLine("\n可选移动模式:"); + + for (int i = 0; i < availableModes.Length; i++) + { + string indicator = availableModes[i].Mode == currentMode.Mode ? " [当前]" : ""; + Console.WriteLine($" {i + 1}. {availableModes[i].DisplayName}{indicator}"); + } + + Console.WriteLine(" 0. 返回主菜单"); + Console.Write("请选择坦克移动模式: "); + + string input = Console.ReadLine()?.ToLower() ?? string.Empty; + + if (input == "0") + { + backToMainMenu = true; + } + else if (int.TryParse(input, out int choice)) + { + if (choice >= 1 && choice <= availableModes.Length) + { + var selectedMode = availableModes[choice - 1]; + simulator.SetTankMovementMode(selectedMode.Mode); + Console.WriteLine($"坦克移动模式已设置为: {selectedMode.DisplayName}"); + return; // 设置后返回主菜单 + } + else + { + Console.WriteLine("无效选择,请重试。"); + } + } + else + { + Console.WriteLine("无效输入,请输入数字。"); + } + } + } } } \ No newline at end of file