namespace MultiWheelC.TrajectoryPlanning.CoarsePath;

/// <summary>
/// 车辆几何与运动学参数。
/// 所有几何尺寸均以车辆几何中心为 <see cref="Pose2D"/> 参考点，单位为 m；曲率单位为 1/m。
/// </summary>
public sealed class VehicleParameters
{
    /// <summary>创建空车辆参数。调用规划器前必须填写有效的几何尺寸和至少一种曲率限制。</summary>
    public VehicleParameters()
    {
    }

    /// <summary>车辆本体长度，单位 m；不含 <see cref="SafetyMarginMeters"/>。</summary>
    public double LengthMeters { get; set; }

    /// <summary>车辆本体宽度，单位 m；不含 <see cref="SafetyMarginMeters"/>。</summary>
    public double WidthMeters { get; set; }

    /// <summary>碰撞检查时加在车体四周的安全余量，单位 m；不会写入地图。</summary>
    public double SafetyMarginMeters { get; set; }

    /// <summary>车辆允许的最大绝对曲率，单位 1/m；null 表示由 <see cref="MinimumTurningRadiusMeters"/> 提供限制。</summary>
    public double? MaximumCurvaturePerMeter { get; set; }

    /// <summary>车辆允许的最小转弯半径，单位 m；null 表示由 <see cref="MaximumCurvaturePerMeter"/> 提供限制。</summary>
    public double? MinimumTurningRadiusMeters { get; set; }
}
