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; }
}