private void processImages(object sender, DoWorkEventArgs doWorkEventArgs)
        {
            int width = someImages[0].width;
            int height = someImages[0].height;

            //описание - https://ru.wikipedia.org/wiki/%D0%9A%D0%B8%D1%82%D0%B0%D0%B9%D1%81%D0%BA%D0%B0%D1%8F_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%BE%D0%B1_%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B0%D1%85
            RemainderTheoremImplementator theoremImplementator = new RemainderTheoremImplementator(sineNumbers);

            int firstImageMax = (int)Utils.maxFromArray(someImages[0]);
            int secondImageMax = (int)Utils.maxFromArray(someImages[1]);

            ZArrayDescriptor resultDescriptor = new ZArrayDescriptor(secondImageMax + 1, firstImageMax + 1);

            for (int x = 0; x < width; x++)
            {
                for (int y = 0; y < height; y++)
                {
                    List<long> currentImageValues = new List<long>();

                    for(int i = 0; i < someImages.Count; i++)
                    {
                        ZArrayDescriptor currentDescriptor = someImages[i];
                        long currentPhase = currentDescriptor.array[x][y];
                        currentImageValues.Add(currentPhase);
                    }

                    long resultPoint = theoremImplementator.getSolution(currentImageValues);
                    resultDescriptor.array[currentImageValues[1]][currentImageValues[0]] = resultPoint;
                }
            }

            doWorkEventArgs.Result = resultDescriptor;
        }
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        private void generateTable(object sender, RoutedEventArgs e)
        {
            ZArrayDescriptor table = new ZArrayDescriptor(241, 167);
            List<int> phases = new List<int>();
            phases.Add(241);
            phases.Add(167);

            RemainderTheoremImplementator theoremImplementator = new RemainderTheoremImplementator(phases);

            for (int i = 0; i < table.width; i++)
            {
                for (int j = 0; j < table.height; j++)
                {
                    List<long> input = new List<long>();
                    input.Add(i);
                    input.Add(j);
                    long result = theoremImplementator.getSolution(input);
                    table.array[i][j] = result;
                }
            }

            addImageContainer();
            imageContainersList[imageContainersList.Count - 1].setzArrayDescriptor(table);
        }