Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

Спасибо за реализацию, она действительно быстрая. Но не все линии отрисовывает в нужную сторону... Необходимо добавить проверку для случая X-линии if(y1 "<" y0) grad=-grad; и аналогично для Y-линии if(x1 "<" x0) grad=-grad; P.S. На...
Отличные уроки(учу GL по ним), только в renderScene нужно добавить очистку буфера цвета и буфера глубины. При изменении размеров треугольники размножаются)
как исправить это , сделал все по инструкции
Timer1 - выдает ошибку. Использовал IdleTimer1, работает! unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, OpenGLContext, GL, GLU; type { TForm1 } TForm1 =...
в коде присутствуют ошибки! // Считываем координаты procedure TForm1.getCoords(Sender: TObject); var j1:longint; begin n:= StrToInt(Edit2.Text); //число точек s1:=Edit1.Text; s2:=''; i := 1; j:=1; k:=0...

Счетчики и рейтинг

Яндекс.Метрика Рейтинг@Mail.ru
Скриншот к примеру
Среда программирования: 
Microsoft Visual Studio 2015
Статья по теме: 

Программа рисующая фрактал-биоморф "Радиолярия", написанная на C# с использованием стандартной графической библиотеки

Код программы: 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Biomorph
{
    public partial class Form1 : Form
    {
        public Graphics g; //Графика
        public Bitmap map; //Битмап
        SolidBrush br; //Кисть
        public const int it = 50, max = 100; //Коэффициенты для выхода из основного цикла
        public int n; //Количество итераций
        public int xc, yc; //Координаты центра
        public PointF z, t, c; //Комплексные числа
 
        public Form1()
        {
            InitializeComponent();
        }
 
 
        private void Form1_Load(object sender, EventArgs e)
        {
            //Координаты центра
            xc = pictureBox1.Width / 2;
            yc = pictureBox1.Height / 2;
 
            //Подключение графики
            map = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            g = Graphics.FromImage(map); 
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
 
            //Определяем коэффициент C
            c.X = 0.5f;
            c.Y = 0f;
 
            //Основной цикл по всем точкам комплексной плоскости
            for (float x = -2; x <= 2; x += 0.002f)
            {
                for (float y = -2; y <= 2; y += 0.002f)
                {
                    z.X = x;
                    z.Y = y;
                    n = 0;
 
                    //Итерируем функцию f(z) = z^3 + c
                    while ((Math.Abs(z.X) < max) && (Math.Abs(z.Y) < max) && (n < it))
                    {
                        t.X = z.X;
                        t.Y = z.Y;
                        n++;
                        z.X = t.X * t.X * t.X - 3 * t.X * t.Y * t.Y + c.X;
                        z.Y = 3 * t.X * t.X * t.Y - t.Y * t.Y * t.Y + c.Y;
 
                    }
 
                    //Определяем зоны черного и оранжевого
                    if ((Math.Abs(z.X) >= 300) || (Math.Abs(z.Y) >= 10000))
                    {
                        br = new SolidBrush(Color.Black);
                        int xt = ChangeCoordinates(x, 0);
                        int yt = ChangeCoordinates(y, 1);
                        g.FillRectangle(br, xt, yt, 1, 1);
                        pictureBox1.BackgroundImage = map;
 
                    }
                    else
                    {
                        br = new SolidBrush(Color.Orange);
                        int xt = ChangeCoordinates(x, 0);
                        int yt = ChangeCoordinates(y, 1);
                        g.FillRectangle(br, xt, yt, 1, 1);
                        pictureBox1.BackgroundImage = map; 
                    }
                }
            }
        }
 
        //Перевод координат из реальных в машинные
        public int ChangeCoordinates(double a, int isY)
        {
            if (isY == 1) return (int)(yc - a * 150);
            return (int)(xc + a * 150);
        }
    }
}

Прикрепленный файлРазмер
RadioLaria.zip52.02 кб