
Среда программирования:
Visual Studio 2012 Express
Статья по теме:
Программа отображает Бассейны Ньютона, фракталы Ньютона — разновидность алгебраических фракталов.
Для отрисовки фрактала, нажать кнопку "Рисовать" по центру.
Код программы:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace ArtFractals { public partial class Form1 : Form { public Form1() { InitializeComponent(); } struct Complex { public double x; public double y; }; const int iter = 50; const double min = 1e-6; const double max = 1e+6; public void Draw(int mx1, int my1, Graphics g, Pen pen) { int n,mx,my; double p; Complex z, t, d = new Complex(); mx = mx1/2; my = my1/2; for (int y = -my; y < my; y++) for (int x = -mx; x < mx; x++) { n = 0; z.x = x * 0.005; z.y = y * 0.005; d = z; while ((Math.Pow(z.x, 2) + Math.Pow(z.y, 2) < max) && (Math.Pow(d.x, 2) + Math.Pow(d.y, 2) > min) && (n < iter)) { t = z; p = Math.Pow(Math.Pow(t.x, 2) + Math.Pow(t.y, 2), 2); z.x = 2/3 * t.x + (Math.Pow(t.x, 2) - Math.Pow(t.y, 2)) / (3*p); z.y = 2/3 * t.y * (1 - t.x / p); d.x = Math.Abs(t.x - z.x); d.y = Math.Abs(t.y - z.y); n++; } pen.Color = Color.FromArgb(255, (n*9) % 255, 0, (n*9) % 255); g.DrawRectangle(pen, mx + x, my + y, 1, 1); } } private void Draw_Newton_fractal(object sender, EventArgs e) { //Создаем перо цвета - Черный(Black) //Толщина - 1 пиксель: Pen myPen = new Pen(Color.Black, 1); //Объявляем объект "g" класса Graphics и предоставляем //ему возможность рисования на pictureBox1: Graphics g = Graphics.FromHwnd(pictureBox1.Handle); //Вызов функции отрисовки фрактала //int mx =1026, my = 428; int mx = pictureBox1.Width, my = pictureBox1.Height; Draw(mx, my, g, myPen); } private void Picturebox(object sender, EventArgs e) { } } }
Прикрепленный файл | Размер |
---|---|
Sobolenko_NewtonFract.rar | 53.49 кб |