删除了 json 格式的配置文件,添加了坦克移动模式,并修改了坦克的朝向和速度
This commit is contained in:
parent
f873ebfd5b
commit
953ef0b968
@ -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]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,14 +0,0 @@
|
||||
{
|
||||
"name": {
|
||||
"zh": "红外阻塞干扰器",
|
||||
"en": "Infrared Blocking Jammer"
|
||||
},
|
||||
"type": "Infrared",
|
||||
"InfraredJammerConfig": {
|
||||
"Power": 2000,
|
||||
"Wavelength": 5,
|
||||
"AngleRange": 10,
|
||||
"Mode": "Blocking",
|
||||
"Duration": 60
|
||||
}
|
||||
}
|
||||
@ -1,14 +0,0 @@
|
||||
{
|
||||
"name": {
|
||||
"zh": "红外欺骗干扰器",
|
||||
"en": "Infrared Deception Jammer"
|
||||
},
|
||||
"type": "Infrared",
|
||||
"InfraredJammerConfig": {
|
||||
"Power": 800,
|
||||
"Wavelength": 5,
|
||||
"AngleRange": 15,
|
||||
"Mode": "Deception",
|
||||
"Duration": 60
|
||||
}
|
||||
}
|
||||
@ -1,14 +0,0 @@
|
||||
{
|
||||
"name": {
|
||||
"zh": "红外阻塞干扰器",
|
||||
"en": "Infrared Blocking Jammer"
|
||||
},
|
||||
"type": "Infrared",
|
||||
"InfraredJammerConfig": {
|
||||
"Power": 1000,
|
||||
"Wavelength": 5,
|
||||
"AngleRange": 10,
|
||||
"Mode": "Blocking",
|
||||
"Duration": 60
|
||||
}
|
||||
}
|
||||
@ -1,14 +0,0 @@
|
||||
{
|
||||
"name": {
|
||||
"zh": "红外阻塞干扰器",
|
||||
"en": "Infrared Blocking Jammer"
|
||||
},
|
||||
"type": "Infrared",
|
||||
"InfraredJammerConfig": {
|
||||
"Power": 2000,
|
||||
"Wavelength": 5,
|
||||
"AngleRange": 90,
|
||||
"Mode": "Blocking",
|
||||
"Duration": 60
|
||||
}
|
||||
}
|
||||
@ -1,14 +0,0 @@
|
||||
{
|
||||
"name": {
|
||||
"zh": "激光阻塞干扰器",
|
||||
"en": "Laser Blocking Jammer"
|
||||
},
|
||||
"type": "Laser",
|
||||
"LaserJammerConfig": {
|
||||
"Power": 2000,
|
||||
"wavelength": 1.06,
|
||||
"angleRange": 10,
|
||||
"Mode": "Blocking",
|
||||
"Duration": 60
|
||||
}
|
||||
}
|
||||
@ -1,14 +0,0 @@
|
||||
{
|
||||
"name": {
|
||||
"zh": "激光欺骗干扰器",
|
||||
"en": "Laser Deception Jammer"
|
||||
},
|
||||
"type": "Laser",
|
||||
"LaserJammerConfig": {
|
||||
"Power": 800,
|
||||
"Wavelength": 1.06,
|
||||
"AngleRange": 15,
|
||||
"Mode": "Deception",
|
||||
"Duration": 60
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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 # 反射面积 (平方米)
|
||||
|
||||
@ -1,14 +0,0 @@
|
||||
{
|
||||
"name": {
|
||||
"zh": "激光阻塞干扰器",
|
||||
"en": "Laser Blocking Jammer"
|
||||
},
|
||||
"type": "Laser",
|
||||
"LaserJammerConfig": {
|
||||
"Power": 2000,
|
||||
"wavelength": 1.06,
|
||||
"angleRange": 90,
|
||||
"Mode": "Blocking",
|
||||
"Duration": 60
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
@ -183,7 +183,7 @@ namespace ThreatSource.Jammer
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发布干扰开始事件
|
||||
/// 发布干扰事件
|
||||
/// </summary>
|
||||
protected void PublishJammingEvent(JammingParameters parameters)
|
||||
{
|
||||
|
||||
@ -350,6 +350,8 @@ GC频率: 优秀 ✅
|
||||
Gen0 GC次数: 9 (0.3 次/秒)
|
||||
Gen1 GC次数: 0 (0.0 次/秒)
|
||||
Gen2 GC次数: 0 (0.0 次/秒)
|
||||
|
||||
|
||||
总GC次数: 9
|
||||
【性能评级】
|
||||
帧时间表现: 优秀 ✅
|
||||
|
||||
@ -10,6 +10,23 @@ using System.Diagnostics;
|
||||
|
||||
namespace ThreatSource.Tools.MissileSimulation
|
||||
{
|
||||
/// <summary>
|
||||
/// 坦克移动模式枚举
|
||||
/// </summary>
|
||||
public enum TankMovementMode
|
||||
{
|
||||
/// <summary>静止模式:位置(0,1.2,0),速度0</summary>
|
||||
Stationary = 0,
|
||||
/// <summary>超低速模式:速度1m/s</summary>
|
||||
VeryLowSpeed = 1,
|
||||
/// <summary>低速模式:速度5m/s</summary>
|
||||
LowSpeed = 5,
|
||||
/// <summary>中速模式:速度10m/s</summary>
|
||||
MediumSpeed = 10,
|
||||
/// <summary>高速模式:速度20m/s</summary>
|
||||
HighSpeed = 20
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 综合导弹模拟器 - 支持6种不同类型的导弹模拟
|
||||
/// </summary>
|
||||
@ -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;
|
||||
|
||||
/// <summary>
|
||||
@ -203,94 +223,30 @@ namespace ThreatSource.Tools.MissileSimulation
|
||||
/// </summary>
|
||||
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}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加激光诱偏目标
|
||||
/// </summary>
|
||||
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}");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加烟幕弹
|
||||
/// </summary>
|
||||
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");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -863,7 +819,7 @@ namespace ThreatSource.Tools.MissileSimulation
|
||||
/// <summary>
|
||||
/// 清除干扰 (原有方法,保留向后兼容)
|
||||
/// </summary>
|
||||
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)
|
||||
};
|
||||
|
||||
// 保留原有实现...
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -1232,6 +1186,88 @@ namespace ThreatSource.Tools.MissileSimulation
|
||||
return [.. activeJammings];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置坦克移动模式
|
||||
/// </summary>
|
||||
/// <param name="mode">要设置的移动模式</param>
|
||||
public void SetTankMovementMode(TankMovementMode mode)
|
||||
{
|
||||
CurrentTankMovementMode = mode;
|
||||
Console.WriteLine($"坦克移动模式已设置为: {GetMovementModeDisplayName(mode)}");
|
||||
|
||||
// 如果坦克已经存在,更新其运动参数
|
||||
if (targets.TryGetValue("Tank_1", out var tank))
|
||||
{
|
||||
UpdateTankMovementParameters(tank, mode);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取移动模式的显示名称
|
||||
/// </summary>
|
||||
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",
|
||||
_ => "未知模式"
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新坦克的运动参数
|
||||
/// </summary>
|
||||
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}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取可用的坦克移动模式列表
|
||||
/// </summary>
|
||||
/// <returns>包含移动模式和显示名称的数组</returns>
|
||||
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))
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前坦克移动模式信息
|
||||
/// </summary>
|
||||
/// <returns>当前移动模式和显示名称</returns>
|
||||
public (TankMovementMode Mode, string DisplayName) GetCurrentMovementMode()
|
||||
{
|
||||
return (CurrentTankMovementMode, GetMovementModeDisplayName(CurrentTankMovementMode));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 销毁所有实体并从仿真管理器中注销
|
||||
/// </summary>
|
||||
@ -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" // 默认配置
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据干扰器ID确定初始位置
|
||||
/// </summary>
|
||||
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) // 其他干扰器默认位置
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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("无效输入,请输入数字。");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user