Accord.Math.Geometry.DiscreteCurveEvolution.winkel C# (CSharp) Method

winkel() private static method

private static winkel ( List z ) : double[]
z List
return double[]
        private static double[] winkel(List<Complex> z)
        {
            int n = z.Count;
            double max = -double.MaxValue;

            double[] his = new double[n];
            for (int j = 1; j < n - 1; j++)
            {
                Complex c = z[j - 1] - z[j + 1];

                double lm = c.Magnitude;

                c = z[j] - z[j + 1];

                double lr = c.Magnitude;

                c = z[j - 1] - z[j];

                double ll = c.Magnitude;

                double alpha = Math.Acos((lr * lr + ll * ll - lm * lm) / (2 * lr * ll));

                // turning angle (0-180)
                double a = 180 - alpha * 180 / Math.PI;

                // the original relevance measure
                his[j] = a * lr * ll / (lr + ll);

                if (his[j] > max) 
                    max = his[j];

            }

            his[0] = max;
            his[n - 1] = max;

            return his;
        }