public Bitmap Draw(IFractalBase FractalParam)
        {
            var        fractal = FractalParam as MandelbrotFractal;
            FastBitmap pic     = new FastBitmap(fractal.Width, fractal.Height);
            double     tempx;

            _dx            = (fractal.Xmax - fractal.Xmin) / fractal.Width;
            _dy            = (fractal.Ymax - fractal.Ymin) / fractal.Height;
            fractal.ORealX = fractal.Xmin;
            for (int i = 1; i < fractal.Width; i++)
            {
                fractal.OImY = fractal.Ymin;
                for (int j = 1; j < fractal.Height; j++)
                {
                    fractal.RealX = 0;
                    fractal.ImY   = 0;
                    int l;
                    for (l = 0; l < fractal.MaxIterations && ((fractal.RealX * fractal.RealX) + (fractal.ImY * fractal.ImY)) < 4; l++)
                    {
                        tempx         = (fractal.RealX * fractal.RealX) - (fractal.ImY * fractal.ImY) + fractal.ORealX;
                        fractal.ImY   = 2 * fractal.RealX * fractal.ImY + fractal.OImY;
                        fractal.RealX = tempx;
                    }
                    pic.SetPixel(i, j, Color.FromArgb(255, (l * 9) % 255, 0, (l * 9) % 255));
                    fractal.OImY += _dy;
                }
                fractal.ORealX += _dx;
            }
            return(pic);
        }
Ejemplo n.º 2
0
        public Bitmap Draw(IFractalBase fractalParam)
        {
            var fractal = fractalParam as JuliaFractal;

            if (fractal == null)
            {
                throw new Exception("F");
            }
            var pic = new Bitmap(fractal.Width, fractal.Height);

            for (int x = 0; x < fractal.Width - 1; x++)
            {
                for (int y = 0; y < fractal.Height - 1; y++)
                {
                    fractal.RealX = 1.5 * (x - fractal.Width / 2) / (fractal.Width * 0.5);
                    fractal.ImY   = (y - fractal.Height / 2) / (fractal.Height * 0.5);
                    int i;
                    for (i = 0; i < fractal.MaxIterations; i++)
                    {
                        fractal.ORealX = fractal.RealX;
                        fractal.OImY   = fractal.ImY;
                        fractal.RealX  = fractal.ORealX * fractal.ORealX - fractal.OImY * fractal.OImY + fractal.Cx;
                        fractal.ImY    = 2 * fractal.ORealX * fractal.OImY + fractal.Cy;
                        if ((fractal.RealX * fractal.RealX + fractal.ImY * fractal.ImY) > 4)
                        {
                            break;
                        }
                    }
                    pic.SetPixel(x, y, Color.FromArgb(255, (i * 9) % 255, 0, (i * 9) % 255));
                }
            }
            return(pic);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Обработка события смены вкладки.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (_fractalviewmodels.ContainsKey(tabControl1.SelectedIndex))
     {
         _selectedFractal = _fractalviewmodels[tabControl1.SelectedIndex].Fractal;
     }
 }
        public Bitmap Draw(IFractalBase FractalParam)
        {
            var        fractal = FractalParam as JuliaFractal;
            FastBitmap picture = new FastBitmap(fractal.Width, fractal.Height);
            var        points  = Enumerable.Range(0, fractal.Width * fractal.Height).AsParallel().Select(Calculations);

            foreach (point i in points)
            {
                picture.SetPixel(i.x, i.y, i.color);
            }
            return(picture);

            point Calculations(int pixel)
            {
                double RealX  = fractal.RealX;
                double ImY    = fractal.ImY;
                double ORealX = fractal.ORealX;
                double OImY   = fractal.OImY;

                point tmp = new point();

                tmp.y = pixel / fractal.Width;
                tmp.x = pixel % fractal.Width;
                RealX = 1.5 * (tmp.x - fractal.Width / 2) / (fractal.Width * 0.5);
                ImY   = (tmp.y - fractal.Height / 2) / (fractal.Height * 0.5);
                int i;

                for (i = 0; i < fractal.MaxIterations; i++)
                {
                    ORealX = RealX;
                    OImY   = ImY;
                    RealX  = ORealX * ORealX - OImY * OImY + fractal.Cx;
                    ImY    = 2 * ORealX * OImY + fractal.Cy;
                    if ((RealX * RealX + ImY * ImY) > 4)
                    {
                        break;
                    }
                }
                tmp.color = Color.FromArgb(255, (i * 9) % 255, 0, (i * 9) % 255);
                return(tmp);
            }
        }
Ejemplo n.º 5
0
        public Bitmap Draw(IFractalBase FractalParam)
        {
            double _dx, _dy;
            var    fractal = FractalParam as MandelbrotFractal;
            Bitmap pic     = new Bitmap(fractal.Width, fractal.Height);

            _dx = (fractal.Xmax - fractal.Xmin) / fractal.Width;
            _dy = (fractal.Ymax - fractal.Ymin) / fractal.Height;
            var points = Enumerable.Range(0, fractal.Width * fractal.Height).AsParallel().Select(Calculations);

            foreach (Point i in points)
            {
                pic.SetPixel(i.x, i.y, i.color);
            }
            return(pic);

            Point Calculations(int pixel)
            {
                double tempx;
                double ORealX = 0;
                double RealX  = 0;
                double OImY   = 0;
                double ImY    = 0;
                var    p      = new Point();

                p.y    = pixel / fractal.Width;
                p.x    = pixel % fractal.Width;
                OImY   = p.y * _dy + fractal.Ymin;
                ORealX = p.x * _dx + fractal.Xmin;
                int l;

                for (l = 0; l < fractal.MaxIterations && ((RealX * RealX) + (ImY * ImY)) < 4; l++)
                {
                    tempx = (RealX * RealX) - (ImY * ImY) + ORealX;
                    ImY   = 2 * RealX * ImY + OImY;
                    RealX = tempx;
                }
                p.color = Color.FromArgb(255, (l * 9) % 255, 0, (l * 9) % 255);
                return(p);
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Установка начальных значений полям ввода.
        /// </summary>
        private void FormInitialize()
        {
            // ToDo: загружать словарь фракталов извне
            _fractalviewmodels.Add(0, new FractalViewModel {
                Fractal = new MandelbrotFractal()
            });
            _fractalviewmodels.Add(1, new FractalViewModel {
                Fractal = new JuliaFractal()
            });
            _fractalviewmodels.Add(2, new FractalViewModel {
                Fractal = new MandelbrotFractalModernized()
            });
            _fractalviewmodels.Add(3, new FractalViewModel {
                Fractal = new TricornFractal()
            });
            _selectedFractal = _fractalviewmodels[0].Fractal;

            tabControl1.SelectedIndex = 0;

            TextBoxRMF.Text  = _fractalviewmodels[0].Fractal.R.ToString();
            TextBoxRJF.Text  = _fractalviewmodels[1].Fractal.R.ToString();
            TextBoxRMMF.Text = _fractalviewmodels[2].Fractal.R.ToString();
            TextBoxRTF.Text  = _fractalviewmodels[3].Fractal.R.ToString();

            TextBoxBMF.Text  = _fractalviewmodels[0].Fractal.B.ToString();
            TextBoxBJF.Text  = _fractalviewmodels[1].Fractal.B.ToString();
            TextBoxBMMF.Text = _fractalviewmodels[2].Fractal.B.ToString();
            TextBoxBTF.Text  = _fractalviewmodels[3].Fractal.B.ToString();


            TextBoxGMF.Text  = _fractalviewmodels[0].Fractal.G.ToString();
            TextBoxGJF.Text  = _fractalviewmodels[1].Fractal.G.ToString();
            TextBoxGMMF.Text = _fractalviewmodels[2].Fractal.G.ToString();
            TextBoxGTF.Text  = _fractalviewmodels[3].Fractal.G.ToString();

            TextBoxWidthMF.Text  = _fractalviewmodels[0].Fractal.Width.ToString();
            TextBoxWidthJF.Text  = _fractalviewmodels[1].Fractal.Width.ToString();
            TextBoxWidthMMF.Text = _fractalviewmodels[2].Fractal.Width.ToString();
            TextBoxWidthTF.Text  = _fractalviewmodels[3].Fractal.Width.ToString();

            TextBoxHeightMF.Text  = _fractalviewmodels[0].Fractal.Height.ToString();
            TextBoxHeightJF.Text  = _fractalviewmodels[1].Fractal.Height.ToString();
            TextBoxHeightMMF.Text = _fractalviewmodels[2].Fractal.Height.ToString();
            TextBoxHeightTF.Text  = _fractalviewmodels[3].Fractal.Height.ToString();

            TextBoxZoomMF.Text  = _fractalviewmodels[0].Fractal.Zoom.ToString();
            TextBoxZoomJF.Text  = _fractalviewmodels[1].Fractal.Zoom.ToString();
            TextBoxZoomMMF.Text = _fractalviewmodels[2].Fractal.Zoom.ToString();
            TextBoxZoomTF.Text  = _fractalviewmodels[3].Fractal.Zoom.ToString();

            TextBoxIterationsMF.Text  = _fractalviewmodels[0].Fractal.Iterations.ToString();
            TextBoxIterationsJF.Text  = _fractalviewmodels[1].Fractal.Iterations.ToString();
            TextBoxIterationsMMF.Text = _fractalviewmodels[2].Fractal.Iterations.ToString();
            TextBoxIterationsTF.Text  = _fractalviewmodels[3].Fractal.Iterations.ToString();

            TextBoxMoveXMF.Text  = _fractalviewmodels[0].Fractal.MoveX.ToString();
            TextBoxMoveXJF.Text  = _fractalviewmodels[1].Fractal.MoveX.ToString();
            TextBoxMoveXMMF.Text = _fractalviewmodels[2].Fractal.MoveX.ToString();
            TextBoxMoveXTF.Text  = _fractalviewmodels[3].Fractal.MoveX.ToString();

            TextBoxMoveYMF.Text  = _fractalviewmodels[0].Fractal.MoveY.ToString();
            TextBoxMoveYJF.Text  = _fractalviewmodels[1].Fractal.MoveY.ToString();
            TextBoxMoveYMMF.Text = _fractalviewmodels[2].Fractal.MoveY.ToString();
            TextBoxMoveYTF.Text  = _fractalviewmodels[3].Fractal.MoveY.ToString();

            var temp = _fractalviewmodels[1].Fractal as JuliaFractal;

            TextBoxC_ReJF.Text = temp.C.Real.ToString();
            TextBoxC_ImJF.Text = temp.C.Imaginary.ToString();
        }