Files
ParkingRobot/ClumsyPilot/ParkrobTrajplanner/PathSmoothing/Output/Comparison/PathSmoothingComparisonResult.cs
T

46 lines
1.6 KiB
C#
Raw Normal View History

2026-07-29 15:30:50 +08:00
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
2026-08-09 22:13:18 +08:00
namespace MultiWheelC.TrajectoryPlanning.PathSmoothing.Output.Comparison;
2026-07-29 15:30:50 +08:00
2026-08-09 22:13:18 +08:00
/// <summary>Immutable raw-path and Local G2 comparison result.</summary>
2026-07-29 15:30:50 +08:00
public sealed class PathSmoothingComparisonResult
{
internal PathSmoothingComparisonResult(
PathSmoothingComparisonEntry rawPathBaseline,
IReadOnlyList<PathSmoothingComparisonEntry> entries,
SmoothingMethod? recommendedMethod,
bool isCancelled,
string diagnostic)
{
RawPathBaseline = rawPathBaseline ?? throw new ArgumentNullException(nameof(rawPathBaseline));
Entries = CopyReadOnly(entries);
RecommendedMethod = recommendedMethod;
IsCancelled = isCancelled;
Diagnostic = diagnostic ?? string.Empty;
}
public PathSmoothingComparisonEntry RawPathBaseline { get; }
public IReadOnlyList<PathSmoothingComparisonEntry> Entries { get; }
2026-08-09 22:13:18 +08:00
/// <summary>Local G2 when its published result is deterministic; otherwise null.</summary>
2026-07-29 15:30:50 +08:00
public SmoothingMethod? RecommendedMethod { get; }
public bool IsCancelled { get; }
public string Diagnostic { get; }
private static IReadOnlyList<PathSmoothingComparisonEntry> CopyReadOnly(
IReadOnlyList<PathSmoothingComparisonEntry> source)
{
var copy = new List<PathSmoothingComparisonEntry>(source == null ? 0 : source.Count);
if (source != null)
{
for (int index = 0; index < source.Count; index++) copy.Add(source[index]);
}
return new ReadOnlyCollection<PathSmoothingComparisonEntry>(copy);
}
}