using System; using MultiWheelC.TrajectoryPlanning.PathSmoothing; namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.Processing; /// 供平滑算法处理的二维路径采样点;所有长度单位均为 m,航向单位为 rad。 public sealed class SmoothingPoint2D { /// 创建不可变二维路径点。 /// 世界坐标 X,单位 m。 /// 世界坐标 Y,单位 m。 /// 本方向段内从零开始的累计弧长,单位 m。 /// 归一化车辆航向,单位 rad。 /// 连续展开的车辆航向,单位 rad。 /// 路径点携带的保守车体净空,单位 m。 /// 该点是否标记新方向段的换向边界。 /// 点在平滑处理流中的来源枚举。 public SmoothingPoint2D( double xMeters, double yMeters, double arcLengthMeters, double headingRadians, double unwrappedHeadingRadians, double bodyClearanceMeters, bool isGearSwitchPoint, SmoothedPathPointSource source) { X = xMeters; Y = yMeters; ArcLength = arcLengthMeters; Heading = headingRadians; UnwrappedHeading = unwrappedHeadingRadians; BodyClearance = bodyClearanceMeters; IsGearSwitchPoint = isGearSwitchPoint; Source = source; } /// 世界 X 坐标,单位 m。 public double X { get; } /// 世界 Y 坐标,单位 m。 public double Y { get; } /// 本方向段中的累计弧长,单位 m。 public double ArcLength { get; } /// 归一化的车辆航向,单位 rad。 public double Heading { get; } /// 连续展开的车辆航向,单位 rad。 public double UnwrappedHeading { get; } /// 输入路径携带的保守净空,单位 m。 public double BodyClearance { get; } /// 该点是否为新方向段开始处的换向点。 public bool IsGearSwitchPoint { get; } /// 该点在平滑流程中的来源。 public SmoothedPathPointSource Source { get; } }