using Deltares.Geometry; namespace Deltares.Stability.Calculation2 { public class SlidingPlaneBelowSurfaceLineValidator : ISlidingCurveValidator { private const double delta = 0.00001; private GeometryPointString geometryPointString; public SlidingPlaneBelowSurfaceLineValidator(GeometryPointString geometryPointString) { this.geometryPointString = geometryPointString; } public bool IsValid(SlidingCurve slidingCurve) { if (slidingCurve is SlidingPlane) { foreach (var slice in slidingCurve.Slices) { double bottomZ = (slice.BottomLeft.Y + slice.BottomRight.Y)/2; double bottomX = (slice.BottomLeft.X + slice.BottomRight.X)/2; double z = geometryPointString.GetZAtX(bottomX); if (bottomZ > z + delta) { return false; } } } return true; } public bool SlicesMustBeFilled() { return true; } } }