public Surface[] GetPanels()
 {
     Surface[] result = new Surface[Transformations.Count()];
     for (int i = 0; i < Transformations.Count(); i++)
     {
         result[i] = GetPanel(i);
     }
     return(result);
 }
            public double[] TryOptimizationTransform(int count = 1, double Scale = 1.0)
            {
                List <double> history = new List <double>();

                for (int i = 0; i < count; i++)
                {
                    var test = GetTest();
                    for (int j = 0; j < Transformations.Count(); j++)
                    {
                        var    paraMatrix = Functions.ArrayToMatrix(this.Transformations[j].Paramaters.ToArray());
                        Matrix m          = Functions.GaussNewtonMethod(GetJacobian(Transformations[j].Paramaters), Functions.ArrayToMatrix(test), paraMatrix);
                        m.Scale(Scale);
                        this.Transformations[j].Paramaters.Init(Functions.MatrixToArray(m + paraMatrix));
                    }
                    history.Add(Functions.GetSquareSum(test));
                }
                return(history.ToArray());
            }