Exemplo n.º 1
0
        /// <summary>
        /// Построить графики с помощью NMathChart.
        /// </summary>
        /// <param name="m">Количество рисунков.</param>
        /// <param name="matrix">Исходная матрица.</param>
        /// <param name="x0">Начальное значение.</param>
        /// <param name="n">Количество точек.</param>
        /// <param name="t0">Начальное время.</param>
        /// <param name="dt">Шаг по времени.</param>
        private static void PlotByNMath(int m, SquareMatrix matrix, ColumnVector x0, int n, double t0, double dt)
        {
            var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, commandLineOptions.PicsPath);

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            const ChartImageFormat format = ChartImageFormat.Png;

            for (var i = 0; i < m; i++)
            {
                Console.Write($"Plotting {i}-th frame . . . ");
                CalculateSupportingFunctionOfReachableSet(matrix, x0, n, t0, t0 + dt * i,
                                                          x => new ColumnVector(Cos(x), Sin(x)), out var psi, out var supportingFunctionOfReachableSet);
                CalculatePointsForPlot(n, psi, supportingFunctionOfReachableSet, out var data);

                var chart = NMathChart.ToChart(new FloatMatrix(data), 0, 1);
                chart.Size = new Size(3840, 2160);
                NMathChart.Save(chart, $@"{path}\{i}.{format}", format);
                Console.WriteLine($"{i}-th frame saved\n");
            }
        }