Index: DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/LineHelper.cs
===================================================================
diff -u -r3893 -r4000
--- DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/LineHelper.cs (.../LineHelper.cs) (revision 3893)
+++ DamEngine/trunk/src/Deltares.DamEngine.Data/Geometry/LineHelper.cs (.../LineHelper.cs) (revision 4000)
@@ -45,13 +45,14 @@
var point4 = new Point2D(line2.EndPoint.X, line2.EndPoint.Z);
Point2D ip;
- var res = Routines2D.DetermineIf2DLinesIntersectStrickly(point1, point2, point3,
- point4, out ip);
+ LineIntersection res = Routines2D.DetermineIf2DLinesIntersectStrickly(point1, point2, point3,
+ point4, out ip);
if (ip != null)
{
intersectPoint.X = ip.X;
intersectPoint.Z = ip.Z;
}
+
return res == LineIntersection.Intersects;
}
@@ -67,20 +68,30 @@
/// Intersections of this line extrapolated to the negative and positive X with the circle.
public static List ExtendedSurfaceIntersectionPointsWithCircle(double xMid, double zMid, double radius, IList pointss)
{
- var points = pointss.Where(p => !double.IsNaN(p.X)).ToList();
+ List points = pointss.Where(p => !double.IsNaN(p.X)).ToList();
if (points.Count >= 2)
{
- var requiredMinSurfacePointX = xMid - radius;
- var requiredMaxSurfacePointX = xMid + radius;
+ double requiredMinSurfacePointX = xMid - radius;
+ double requiredMaxSurfacePointX = xMid + radius;
if (requiredMinSurfacePointX < points[0].X)
{
- points.Insert(0, new Point2D{ X = requiredMinSurfacePointX, Z = points[0].Z});
+ points.Insert(0, new Point2D
+ {
+ X = requiredMinSurfacePointX,
+ Z = points[0].Z
+ });
}
+
if (requiredMaxSurfacePointX > points[points.Count - 1].X)
{
- points.Insert(points.Count, new Point2D{ X = requiredMaxSurfacePointX, Z = points[points.Count - 1].Z});
+ points.Insert(points.Count, new Point2D
+ {
+ X = requiredMaxSurfacePointX,
+ Z = points[points.Count - 1].Z
+ });
}
}
+
return IntersectionPointsWithCircle(xMid, zMid, radius, points);
}
@@ -97,27 +108,34 @@
var result = new List();
if (points.Count >= 2)
{
- for (int pointIndex = 0; pointIndex < points.Count - 1; pointIndex++)
+ for (var pointIndex = 0; pointIndex < points.Count - 1; pointIndex++)
{
- var start = points[pointIndex];
- var end = points[pointIndex + 1];
- var outOfReach = ((Math.Max(start.X, end.X) < xMid - radius) ||
+ Point2D start = points[pointIndex];
+ Point2D end = points[pointIndex + 1];
+ bool outOfReach = ((Math.Max(start.X, end.X) < xMid - radius) ||
(Math.Min(start.X, end.X) > xMid + radius) ||
(Math.Max(start.Z, end.Z) < zMid - radius) ||
(Math.Min(start.Z, end.Z) > zMid + radius));
if (!outOfReach)
{
var line = new Line
- {
- BeginPoint = start, EndPoint = end
- };
+ {
+ BeginPoint = start,
+ EndPoint = end
+ };
result.AddRange(Intersect_Circle_line(xMid, zMid, radius, line));
}
}
}
+
return result;
}
+ public static GeometryPoint GetIntersectionPointWithExtrapolation(GeometryPoint p1, GeometryPoint p2, GeometryPoint p3, GeometryPoint p4)
+ {
+ return IntersectionPointWithExtrapolation(p1, p2, p3, p4);
+ }
+
///
/// Intersects the circle line.
///
@@ -131,11 +149,6 @@
return Routines2D.IntersectCircleline(xm, ym, r, line.BeginPoint.X, line.EndPoint.X, line.BeginPoint.Z, line.EndPoint.Z);
}
- public static GeometryPoint GetIntersectionPointWithExtrapolation(GeometryPoint p1, GeometryPoint p2, GeometryPoint p3, GeometryPoint p4)
- {
- return IntersectionPointWithExtrapolation(p1, p2, p3, p4);
- }
-
///
/// Determines the intersection point of two lines, allowing the intersection point being extrapolated.
///
@@ -153,11 +166,12 @@
var point3 = new Point2D(p3.X, p3.Z);
var point4 = new Point2D(p4.X, p4.Z);
- Routines2D.DetermineIf2DLinesIntersectWithExtrapolation(point1, point2, point3, point4, out var ip);
+ Routines2D.DetermineIf2DLinesIntersectWithExtrapolation(point1, point2, point3, point4, out Point2D ip);
if (ip != null)
{
intersectPoint = new GeometryPoint(ip.X, ip.Z);
}
+
return intersectPoint;
}
}