public PointPatternMatchResult GetPointPatternMatchResult(PointsPatternSet compareTo, PointsPatternSet points)
        {
            PointPatternMatchResult comparisonResults = new PointPatternMatchResult();

            if (compareTo.Points.Length == 1 || points.Points.Length <= 1)
            {
                if (points.Points.Length == compareTo.Points.Length)
                {
                    comparisonResults.Probability = 100d;
                }
                else
                {
                    comparisonResults.Probability = 0d;
                }
            }
            else
            {
                double[] aDeltas          = new double[Precision];
                double[] aCompareToAngles = compareTo.GetAngularMargins(Precision);
                double[] aCompareAngles   = points.GetAngularMargins(Precision);

                for (int i = 0; i <= aCompareToAngles.Length - 1; i++)
                {
                    aDeltas[i] = PointPatternMath.GetAngularDelta(aCompareToAngles[i], aCompareAngles[i]);
                }

                // Create new PointPatternMatchResult object to hold results from comparison
                comparisonResults.Probability = PointPatternMath.GetProbabilityFromAngularDelta(aDeltas.Average());
            }
            comparisonResults.Name = compareTo.Name;
            // Return results of the comparison
            return(comparisonResults);
        }
        }                                                                 //

        #endregion

        #region Public Methods

        public PointPatternMatchResult[] GetPointPatternMatchResults(Point[] Points)
        {
            // Create a list of PointPatternMatchResults to hold final results and group results of point pattern set comparison
            List <PointPatternMatchResult> comparisonResults = new List <PointPatternMatchResult>(PointPatternSet.Count());
            var targetPattern = new PointsPatternSet(null, Points);

            // Enumerate each point patterns
            foreach (var pointPatternSet in PointPatternSet)
            {
                // Calculate probability of each point pattern
                comparisonResults.Add(GetPointPatternMatchResult(pointPatternSet, targetPattern));
            }

            // Return comparison results ordered by highest probability
            return(comparisonResults.ToArray());//.OrderByDescending(ppmr => ppmr.Probability).
        }