// Copyright (C) Stichting Deltares 2016. All rights reserved. // // This file is part of Ringtoets. // // Ringtoets is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using System.Collections.Generic; using System.Linq; using Core.Common.Base.Geometry; using Ringtoets.Common.Data.FailureMechanism; namespace Ringtoets.Common.Utils { /// /// Class that holds helper methods for /// public static class SectionSegmentsHelper { /// /// Creates from an of . /// /// The of /// to create for. /// An array of . public static SectionSegments[] MakeSectionSegments(IEnumerable sectionResults) { return sectionResults.Select(s => new SectionSegments(s)).ToArray(); } /// /// Gets the for the given . /// /// The segment sections to get the from. /// The to get the for. /// The that corresponds to the given . /// Thrown when any paramater is null. public static FailureMechanismSection GetSectionForPoint(IEnumerable sectionSegmentsCollection, Point2D point) { if (sectionSegmentsCollection == null) { throw new ArgumentNullException("sectionSegmentsCollection"); } var minimumDistance = double.PositiveInfinity; FailureMechanismSection section = null; foreach (var sectionSegments in sectionSegmentsCollection) { var distance = sectionSegments.Distance(point); if (distance < minimumDistance) { minimumDistance = distance; section = sectionSegments.Section; } } return section; } } }