namespace Kompas.Mcp.Core.Query;

/// <summary>Детальные сведения о грани (drill-down по индексу из list_faces).</summary>
public sealed record FaceDetail
{
    public required int Index { get; init; }

    /// <summary>Тип поверхности: plane, cylinder, cone, sphere, torus, nurbs, other.</summary>
    public required string Type { get; init; }

    /// <summary>Площадь грани, мм².</summary>
    public required double Area { get; init; }

    /// <summary>Единичная нормаль в центре грани (мировые оси), либо null если недоступна.</summary>
    public (double X, double Y, double Z)? Normal { get; init; }

    /// <summary>Радиус цилиндрической грани, мм (null для нецилиндрических).</summary>
    public double? Radius { get; init; }

    /// <summary>Число рёбер, ограничивающих грань.</summary>
    public required int EdgeCount { get; init; }
}
