// Problem 2 Distance Calculator
 public static double DistanceBetween3DPointsCalculator(Point3D pointOne, Point3D pointTwo)
 {
     double distance = Math.Sqrt((
         (pointOne.PointX - pointTwo.PointX) * (pointOne.PointX - pointTwo.PointX)) +
         ((pointOne.PointY - pointTwo.PointY) * (pointOne.PointY - pointTwo.PointY)) +
         ((pointOne.PointZ - pointOne.PointZ) * (pointOne.PointZ - pointOne.PointZ)));
     return distance;
 }
 static void Main()
 {
     Point3D pointOne = new Point3D(0, 0, 0);
     Point3D pointTwo = new Point3D(1, 2, 3);
     Console.WriteLine("PROBLEM ONE: ");
     Console.WriteLine("First point coordinates: ");
     Console.WriteLine(pointOne);
     Console.WriteLine("Second point coordinates: ");
     Console.WriteLine(pointTwo);
     Console.WriteLine("---------------------");
     Console.WriteLine("PROBLEM TWO: ");
     Console.WriteLine("Distance between the two points: ");
     double distance = DistanceCalculator.DistanceBetween3DPointsCalculator(pointOne, pointTwo);
     Console.WriteLine(distance);
 }
        // This method fills the list in Path3D class with points from a text file.
        public static List<Point3D> PointExtraction(string path)
        {
            Regex regex = new Regex(@"(\d+),\s?(\d+),\s?(\d+)|[A-Za-z]:\s?(\d+)[^a-zA-Z]+?[a-zA-Z]:\s?(\d+)[^a-zA-Z]+?[a-zA-Z]:\s?(\d+)"); // regex for taking the points from a text file
            List<Euclidean3D.Point3D> points = new List<Point3D>();
            string file = File.ReadAllText(path);
            foreach (Match match in regex.Matches(file))
            {
                double pointX = new double();
                double pointY = new double();
                double pointZ = new double();

                try
                {

                    if (match.Groups[1].Value != string.Empty)
                    {
                        pointX = double.Parse(match.Groups[1].Value);
                        pointY = double.Parse(match.Groups[2].Value);
                        pointZ = double.Parse(match.Groups[3].Value);

                    }
                    else
                    {
                        pointX = double.Parse(match.Groups[4].Value);
                        pointY = double.Parse(match.Groups[5].Value);
                        pointZ = double.Parse(match.Groups[6].Value);

                    }
                    Euclidean3D.Point3D point = new Euclidean3D.Point3D(pointX, pointY, pointZ);
                    points.Add(point);
                }
                catch(FormatException ex)
                {
                    Console.Error.WriteLine(ex.Message);
                }

            }
            return points;
        }