Esempio n. 1
0
        public virtual async void SimulateTask()
        {
            PlotForm.SetProgressBar(pictBoxSize.Width);
            PlotForm.SetEnabled(false);
            InitTaskHandles();
            await Task.Run(() => { doTaskWork(); });

            PlotForm.SetEnabled(true);
            PlotForm.EndGenerate();
        }
Esempio n. 2
0
        public async void CreateGif(PointD current, string numGif, string fName)
        {
            m_StartX    = (float)current.X;
            m_StartY    = (float)current.Y;
            gifFilename = fractalPlotter.Title + fName + numGif;
            Int32.TryParse(numGif, out nGif);
            gifFilename = string.Concat(gifFilename.Split(Path.GetInvalidFileNameChars()));

            gifFilename = gifFilename.Replace("^", "");
            gifFilename = gifFilename.Replace("/", "");
            currXmin    = xMin;
            currXmax    = xMax;
            currYmin    = yMin;
            currYmax    = yMax;
            fractalPlotter.CreateGif = true;
            gifCreater.images.Clear();
            //zoom in to the largest square around current x,y
            if (Math.Abs(m_StartY) < 0.05)
            {
                m_StartY = 0;
            }
            if (Math.Abs(m_StartX) < 0.05)
            {
                m_StartX = 0;
            }
            double minX  = Math.Min(Math.Abs((float)xMax - m_StartX), Math.Abs((float)xMin - m_StartX));
            double minY  = Math.Min(Math.Abs((float)yMax - m_StartY), Math.Abs((float)yMin - m_StartY));
            double delta = Math.Min(minX, minY);

            xMin = (decimal)(m_StartX - delta);
            xMax = (decimal)(m_StartX + delta);
            yMin = (decimal)(m_StartY - delta);
            yMax = (decimal)(m_StartY + delta);

            centerX = xMin + (xMax - xMin) / 2;
            centerY = yMin + (yMax - yMin) / 2;
            dx      = (xMax - xMin) / (2 * nGif);
            dy      = (yMax - yMin) / (2 * nGif);
            xMax   -= dx * (nGif - 1);
            xMin   += dx * (nGif - 1);
            yMax   -= dy * (nGif - 1);
            yMin   += dy * (nGif - 1);

            plotForm.Params2Form();

            PlotForm.SetProgressBar(pictBoxSize.Width);
            PlotForm.SetEnabled(false);
            InitTaskHandlesGif();
            await Task.Run(() => { DoGif(); });

            FractalCompletedGIF();
        }
Esempio n. 3
0
        private void CalcSimPar()
        {
            doFillXvalues = false;
            decimal t     = CurrentFunction.Parameter;
            decimal start = t;

            if (t > CurrentFunction.DiagramStop)
            {
                start = CurrentFunction.DiagramStop;
            }
            int m = MaxFunctionIterations;

            gifCreater.images.Clear();

            decimal range2Fill = Math.Abs(CurrentFunction.DiagramStop - t);
            int     numSteps   = 50;
            decimal delta      = range2Fill / numSteps;
            int     max        = (int)(Math.Abs(CurrentFunction.DiagramStop - t) * 100);

            PlotForm.SetProgressBar(numSteps + 1);
            try {
                for (decimal i = 0; i < numSteps; i++)
                {
                    report.PercentageComplete = (int)i;
                    if (progressHandler is IProgress <ProgressReportModel> progress)
                    {
                        progress.Report(report);
                    }
                    if (token.IsCancellationRequested)
                    {
                        break;
                    }
                    CurrentFunction.Parameter = start + i * delta;
                    PlotFunction();
                    if (CreateGIF)
                    {
                        gifCreater.images.Add(functionDrawer.Copy4GIF);
                    }
                    Thread.Sleep(5);
                }
            }
            catch { }
            gifCreater.Create(1, FunctionGifFileName);
            CurrentFunction.Parameter = t;
            PlotFunction();
            MaxFunctionIterations = m;
            doFillXvalues         = true;
        }