Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryHelper.cs =================================================================== diff -u -r7044 -r7050 --- DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryHelper.cs (.../GeometryHelper.cs) (revision 7044) +++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/GeometryHelper.cs (.../GeometryHelper.cs) (revision 7050) @@ -84,29 +84,31 @@ { var p1 = new Point2D(geometryCurve.HeadPoint.X, geometryCurve.HeadPoint.Z); var p2 = new Point2D(geometryCurve.EndPoint.X, geometryCurve.EndPoint.Z); + var isPointAdded = false; // If head or endpoint is at atX, add this existing point to the local list if (Math.Abs(p1.X - atX) < GeometryConstants.Tolerance) { splitPoints.Add(p1); + isPointAdded = true; } - else + + if (Math.Abs(p2.X - atX) < GeometryConstants.Tolerance) { - if (Math.Abs(p2.X - atX) < GeometryConstants.Tolerance) + splitPoints.Add(p2); + isPointAdded = true; + } + + if (!isPointAdded) + { + var p3 = new Point2D(intersectionCurve.HeadPoint.X, intersectionCurve.HeadPoint.Z); + var p4 = new Point2D(intersectionCurve.EndPoint.X, intersectionCurve.EndPoint.Z); + LineIntersection res = Routines2D.DetermineIf2DLinesIntersectStrickly(p1, p2, p3, p4, out Point2D resPoint); + if (res == LineIntersection.Intersects) { - splitPoints.Add(p2); + var splitPoint = new Point2D(resPoint.X, resPoint.Z); + // Add SplitPoint to the local list + splitPoints.Add(splitPoint); } - else - { - var p3 = new Point2D(intersectionCurve.HeadPoint.X, intersectionCurve.HeadPoint.Z); - var p4 = new Point2D(intersectionCurve.EndPoint.X, intersectionCurve.EndPoint.Z); - LineIntersection res = Routines2D.DetermineIf2DLinesIntersectStrickly(p1, p2, p3, p4, out Point2D resPoint); - if (res == LineIntersection.Intersects) - { - var splitPoint = new Point2D(resPoint.X, resPoint.Z); - // Add SplitPoint to the local list - splitPoints.Add(splitPoint); - } - } } } @@ -151,29 +153,30 @@ { var p1 = new Point2D(geometryCurve.HeadPoint.X, geometryCurve.HeadPoint.Z); var p2 = new Point2D(geometryCurve.EndPoint.X, geometryCurve.EndPoint.Z); - + var isPointAdded = false; if (Math.Abs(p1.X - atX) < GeometryConstants.Tolerance) { splitPoints.Add(p1); + isPointAdded = true; } - else + + if (Math.Abs(p2.X - atX) < GeometryConstants.Tolerance) { - if (Math.Abs(p2.X - atX) < GeometryConstants.Tolerance) + splitPoints.Add(p2); + isPointAdded = true; + } + + if (!isPointAdded) + { + var p3 = new Point2D(intersectionCurve.HeadPoint.X, intersectionCurve.HeadPoint.Z); + var p4 = new Point2D(intersectionCurve.EndPoint.X, intersectionCurve.EndPoint.Z); + LineIntersection res = Routines2D.DetermineIf2DLinesIntersectStrickly(p1, p2, p3, p4, out Point2D resPoint); + if (res == LineIntersection.Intersects) { - splitPoints.Add(p2); + var splitPoint = new Point2D(resPoint.X, resPoint.Z); + // Add SplitPoint to the local list + splitPoints.Add(splitPoint); } - else - { - var p3 = new Point2D(intersectionCurve.HeadPoint.X, intersectionCurve.HeadPoint.Z); - var p4 = new Point2D(intersectionCurve.EndPoint.X, intersectionCurve.EndPoint.Z); - LineIntersection res = Routines2D.DetermineIf2DLinesIntersectStrickly(p1, p2, p3, p4, out Point2D resPoint); - if (res == LineIntersection.Intersects) - { - var splitPoint = new Point2D(resPoint.X, resPoint.Z); - // Add SplitPoint to the local list - splitPoints.Add(splitPoint); - } - } } } @@ -354,8 +357,9 @@ private static bool IsCurveAnExistingCurve(GeometryCurve curve, GeometrySurface surface) { - if (((curve.SurfaceAtLeft == null ? 1 : curve.SurfaceAtLeft == surface ? 1 : 0) & - (curve.SurfaceAtRight == null ? 1 : curve.SurfaceAtRight == surface ? 1 : 0)) != 0) + int isSurfaceLeft = curve.SurfaceAtLeft == surface ? 1 : 0; + int isSurfaceRight = curve.SurfaceAtRight == surface ? 1 : 0; + if (((curve.SurfaceAtLeft == null ? 1 : isSurfaceLeft) & (curve.SurfaceAtRight == null ? 1 : isSurfaceRight)) != 0) { return true; }