ThreatSourceLibaray/docs/project/tovector_usages_to_review.md

4.4 KiB

Orientation.ToVector() 调用审查列表

本文档列出了项目中调用 Orientation.ToVector() 的位置。 由于 Common.csOrientation.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 方法需要相应改回其原始(或更标准的)逻辑。