You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#计算两个0-360°角度间的0-180°相对夹角

相对夹角计算与航速转换实现

需求说明

  • 计算两个给定角度间的最短路径有符号相对夹角,范围限定在-180°到180°
  • 示例:
    • 角度A:280°,角度B:80°,相对夹角为160°
    • 角度A:200°,角度B:10°,相对夹角为170°

相对夹角计算函数

实现了GetRelativeAngle函数用于计算该夹角,起初运行出现问题,但未修改代码后恢复正常:

float GetRelativeAngle(float mainAngle, float secondaryAngle)
{
    float rel = ((secondaryAngle - mainAngle + 180) % 360) - 180;

    if (rel < -180)
    {
        rel += 360;
    }
    return rel;
}

航速转换逻辑

该函数用于计算船舶航向与风向的相对夹角,进而通过GetSpeedFromWindAngle函数将夹角转换为0-1范围的magnitudeAngle,最终通过曲线评估获取航速:

public float GetSpeedFromWindAngle(float mastAngle, bool isSquare)
{
    float angle = GetRelativeAngle(mastAngle, _windAngle);
    float absAngle = Mathf.Abs(angle);
    float magnitudeAngle = absAngle / 180;
    float speedfromAngle = 0f;
    if (isSquare)
        speedfromAngle = _speedFromWindAngleCurveSquares.Evaluate(magnitudeAngle);
    else speedfromAngle = _speedFromWindAngleCurveStays.Evaluate(magnitudeAngle);

    return speedfromAngle;
}
  • 注:仅需将夹角绝对值转换为0-1范围的数值,不关心夹角的正负。

内容的提问来源于stack exchange,提问作者user20494201

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:55:43