ThreatSourceLibaray/docs/project/tovector_usages_to_review.md

63 lines
4.4 KiB
Markdown

# Orientation.ToVector() 调用审查列表
本文档列出了项目中调用 `Orientation.ToVector()` 的位置。
由于 `Common.cs``Orientation.ToVector()` 的当前实现返回的是局部 X 轴 (`(1,0,0)` @ Yaw=0, Pitch=0),而不是标准的局部 Z 轴(前向),
以下调用点可能基于错误的假设,需要进行审查和潜在的修改,以确保其行为符合预期或在未来将 `Orientation` 修正为 Z-Forward 约定后能够正确工作。
**注意:** `Utils/ObscurationUtils.cs` 中的调用已被修正以适应当前行为,因此未包含在此列表中。
---
1. **文件:** `ThreatSource/src/Jammer/LaserDecoy.cs`
* **行号:** 98
* **代码:** `Direction = Orientation.ToVector(),`
* **说明:**`ToVector()` 结果作为 `Direction` 参数传递。需要确认接收方期望的是局部 X 轴还是标准的 Z 轴(前向)。
2. **文件:** `ThreatSource/src/Jammer/SmokeGrenade.cs`
* **行号:** 83
* **代码:** `Direction = Orientation.ToVector(),`
* **说明:**`ToVector()` 结果作为干扰参数 `Direction` 传递。需要确认接收方期望的是局部 X 轴还是标准的 Z 轴。
* **行号:** 318
* **代码:** `Vector3D wallNormal = Orientation.ToVector();`
* **说明:** 将烟幕墙的法线定义为源的局部 X 轴。需要确认这是否是预期的几何定义。
* **行号:** 416
* **代码:** `double distAlongNormal = Math.Abs(Vector3D.DotProduct(relativePos, Orientation.ToVector()));`
* **说明:** 计算点沿"法线"(定义的局部 X 轴)的距离。依赖于行 318 的定义。
* **行号:** 423
* **代码:** `Vector3D wallParallel = Vector3D.CrossProduct(Orientation.ToVector(), Vector3D.UnitY);`
* **说明:** 计算平行于墙面的向量,使用了作为"法线"的局部 X 轴。依赖于行 318 的定义。
3. **文件:** `ThreatSource/src/Simulation/SimulationElement.cs`
* **行号:** 63
* **代码:** `Velocity = motionParameters.Orientation.ToVector() * motionParameters.InitialSpeed;`
* **说明:** 极有可能错误地假设 `ToVector()` 返回的是前进方向(局部 Z 轴)来计算初始速度。当前实现会导致物体初始速度指向其局部 X 轴。
4. **文件:** `ThreatSource/src/Guidance/MillimeterWaveGuidanceSystem.cs`
* **行号:** 291
* **代码:** `Direction = smokeGrenade.Orientation.ToVector(),`
* **说明:** 将烟幕源的局部 X 轴作为方向参数传递(可能给 `AtmosphereDllWrapper`?)。需要确认接收方期望的向量定义。
5. **文件:** `ThreatSource/src/Guidance/InfraredImagingGuidanceSystem.cs`
* **行号:** 288
* **代码:** `Direction = smokeGrenade.Orientation.ToVector(),`
* **说明:** 同上,将烟幕源的局部 X 轴作为方向参数传递。
6. **文件:** `ThreatSource/src/Missile/TerminalSensitiveSubmunition.cs`
* **行号:** 620
* **代码:** `Vector3D targetForward = target.Orientation.ToVector();`
* **说明:** 很可能错误地假设 `ToVector()` 返回目标的前进方向(局部 Z 轴)。当前获取的是目标的局部 X 轴。影响后续命中逻辑。
7. **文件:** `ThreatSource/src/Missile/TerminalSensitiveMissile.cs`
* **行号:** 271
* **代码:** `Vector3D currentDirection = Orientation.ToVector();`
* **说明:** 很可能错误地假设 `ToVector()` 返回导弹的前进方向(局部 Z 轴)。当前获取的是导弹的局部 X 轴。影响后续制导或状态更新。
8. **文件:** `ThreatSource/src/Guidance/LaserSemiActiveGuidanceSystem.cs`
* **行号:** 348
* **代码:** `Direction = smokeGrenade.Orientation.ToVector(),`
* **说明:** 同上,将烟幕源的局部 X 轴作为方向参数传递。
9. **文件:** `ThreatSource/src/Utils/ObscurationUtils.cs`
* **行号:** 120 (在 `GetOrientationBasisVectors` 方法内部)
* **代码:** `Vector3D localX = orientation.ToVector().Normalize();`
* **说明:** 此处调用 `ToVector()` 获取局部 X 轴。**注意:** 周围的 `GetOrientationBasisVectors` 方法的逻辑已被特别修正,以正确处理 `ToVector()` 返回局部 X 轴这一非标准行为。如果未来 `Orientation.ToVector()` 被修改为返回局部 Z 轴,此处的 `GetOrientationBasisVectors` 方法需要相应改回其原始(或更标准的)逻辑。