/// <summary> /// Returns closes point from given input point for provided point list. /// </summary> private Point3D GetClosestPoint(Point3D point3D, Point3D[] intersetionPoints) { double minsquaredDist = Double.MaxValue; Point3D result = null; foreach (Point3D pt in intersetionPoints) { double distSquared = Point3D.DistanceSquared(point3D, pt); if (distSquared < minsquaredDist && !point3D.Equals(pt)) { minsquaredDist = distSquared; result = pt; } } return(result); }