using System;
using MultiWheelC.TrajectoryPlanning.CoarsePath;
using MultiWheelC.TrajectoryPlanning.Mapping;
using MultiWheelC.TrajectoryPlanning.PathSmoothing.Processing;
namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.Algorithms;
/// 单次算法运行共享的已预处理路径和独立复核上下文。
internal sealed class SmoothingAlgorithmInput
{
internal SmoothingAlgorithmInput(
PreparedPath originalPath,
PlanningGridMap map,
VehicleParameters vehicle,
double maximumCollisionCheckStepMeters,
double minimumClearanceReserveMeters,
SmoothingOptionsSnapshot options)
{
OriginalPath = originalPath ?? throw new ArgumentNullException(nameof(originalPath));
Map = map ?? throw new ArgumentNullException(nameof(map));
Vehicle = vehicle ?? throw new ArgumentNullException(nameof(vehicle));
MaximumCollisionCheckStepMeters = maximumCollisionCheckStepMeters;
MinimumClearanceReserveMeters = minimumClearanceReserveMeters;
Options = options ?? throw new ArgumentNullException(nameof(options));
}
/// 已校验并按方向分段的原始路径。
internal PreparedPath OriginalPath { get; }
/// 用于完整车体复核的不可变规划地图。
internal PlanningGridMap Map { get; }
/// 用于曲率和足迹复核的车辆参数快照。
internal VehicleParameters Vehicle { get; }
/// 连续车体碰撞检查的最大步长,单位 m。
internal double MaximumCollisionCheckStepMeters { get; }
/// 候选几何必须从原始保守净空中预留的最小安全余量,单位 m。
internal double MinimumClearanceReserveMeters { get; }
/// 本次算法运行使用的已验证方法选项快照。
internal SmoothingOptionsSnapshot Options { get; }
}