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

Вход на сайт

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

Построения
на плоскости (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
Скриншот к примеру
Среда программирования: 
Visual Studio 2015
Статья по теме: 

Фрактал строится при запуске пиложения.

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

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 TSquare
{
    public partial class Form1 : Form
    {
        public Graphics g; //Графика
        public Bitmap map; //Битмап
        public Brush br; //Кисть
        public int iter = 12; //Количество итераций
 
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            map = new Bitmap(pictureBox1.Width, pictureBox1.Height);//Подключаем Битмап
            g = Graphics.FromImage(map); //Подключаем графику
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//Включаем сглаживание
            br = new SolidBrush(Color.Red);
            g.Clear(Color.Black);
 
            //Координата верхнего левого угла квадрата
            PointF A = new PointF(pictureBox1.Width / 2 - pictureBox1.Height / 4, pictureBox1.Height / 4);
 
            //Вызов рекурсивной функции отрисовки фрактала
            drawTSquare(A, pictureBox1.Height / 2 - pictureBox1.Height / 10, iter);
 
            //Переносим картинку из битмапа на picturebox	
            pictureBox1.BackgroundImage = map;
 
        }
 
        //Рекурсивная функция отрисовки фрактала
        public int drawTSquare(PointF A, int size, int iter)
        {
            //точка А - координата левого верхнего угла квадрата
            //size - длина стороны
            //iter - кол-во итераций
 
            //База рекурсии
            //Если итерация одна, просто рисуем заполненный прямоугольник
            if (iter == 1)
            {   
                g.FillRectangle(br, A.X, A.Y, size, size);
                return 0;
            }
 
            int d = size / 4; //Вспомогательная переменная, четверть длины исходного квадрата
            PointF[] M = new PointF[4];  //Координаты левых верхних углов порожденных квадратов
 
            for (int i = 0; i < 4; i++)
            {
                M[i] = new PointF();
            }
 
            //Левый верхний квадрат
            M[0].X = A.X - d; 
            M[0].Y = A.Y - d;
 
            //Левый нижний квадрат
            M[1].X = A.X - d; 
            M[1].Y = A.Y + size - d;
 
            //Правый верхний квадрат
            M[2].X = A.X + size - d; 
            M[2].Y = A.Y - d;
 
            //Правый нижний квадрат
            M[3].X = A.X + size - d; 
            M[3].Y = A.Y + size - d;
 
            //Вызываем рекурсивно для каждого квадрата
            for (int i = 0; i < 4; i++)
            {
                drawTSquare(M[i], size / 2, iter - 1);
            }
 
            //Отрисовываем исходный квадрат
            g.FillRectangle(br, A.X, A.Y, size, size);
 
            return 0;
        }
    }
}

Прикрепленный файлРазмер
TSquare.zip50.85 кб