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

Вход на сайт

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

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

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

КРУГОВОЙ ФРАКТАЛ -ОШИБОЧНАЯ ПРОГРАММА! ПАПА ЗибЕрт
Можешь обяснить подробно что как работает, и почему массу не задаем
Здравствуйте, Ильгиз. Математика - царица наук (Карл Гаусс). Изучение математики начинается с детского сада, когда нас учат считать и выполнять простые арифметические операции. Любой, даже самый простейший алгоритм будет связан с арифметическими...
Я хотел узнать математика это обязательно в программирование. Пять лет назад просто из любопытства я увлекся HTML потом изучил CSS и JvaScript потом изучил PHP и Java. Как то не задумывался и начал смотреть форумы и узнал что без математики не...
Все верно, но так же необходимо зайти в: Компоновщик -> Ввод -> Дополнительные зависимости Здесь необходимо нажать изменить и в Дополнительные зависимости прописать это: SDL2.lib SDL2main.lib SDL2test.lib Без этого не заработает. (MVS 2015)

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

Яндекс.Метрика Рейтинг@Mail.ru
Постельные покрывала: готовые портьеры.
Скриншот к примеру
Среда программирования: 
Lazarus
Статья по теме: 

Для прорисовки фрактала следует нажать кнопку "Fractal"
В функцию Draw_Star передаем следующие параметры:
x, y - центр первого построенного пятиугольника
r - радиус окружности, описанной вокруг пятиугольника
angle - угол поворота
d - количество уровней

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

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Fractal: TButton;
    PaintBox1: TPaintBox;
    procedure FractalClick(Sender: TObject);
    procedure Draw_Star(x, y, r, angle: Real; d: Integer);
    procedure Draw_Pentagon(x, y, r, angle: Real);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
//отработка кнопки построения
procedure TForm1.FractalClick(Sender: TObject);
begin
     Draw_Star(300, 250, 85, pi/2, 4);   //вызов функции прорисовки "Звезды Дюрера"
end;
 
procedure TForm1.Draw_Star(x, y, r, angle: Real; d: Integer);   //рекурсивная функция прорисовки "Звезды Дюрера"
var
	i: Integer;
	h: Real;
begin
	h := 2*r*cos(pi/5);  //расстояние от центра пятиугольника до каждого центра внешних пятиугольников
	for i := 0 to 4 do
	begin
		Draw_Pentagon(x - h*cos(angle+i*pi*2/5), y - h*sin(angle+i*pi*2/5),
			r, angle + pi + i*pi*2/5);
		if d > 0 then
			Draw_Star(x - h*cos(angle+i*pi*2/5), y - h*sin(angle+i*pi*2/5),
				r/(2*cos(pi/5)+1), angle+pi+(2*i+1)*pi*2/10, d-1);
	end;
	Draw_Pentagon(x, y, r, angle);
	if d > 0 then
		Draw_Star(x, y, r/(2*cos(pi/5)+1), angle+pi, d-1);
end;
procedure TForm1.Draw_Pentagon(x, y, r, angle: Real);   //функция прорисовки каждого пятиугольника в отдельности
var
	i: Integer;
	x1, y1: array [0..5] of Real;
begin
	for i := 0 to 5 do
	begin
		x1[i] := r*cos(angle + i*pi*2/5);
		y1[i] := r*sin(angle + i*pi*2/5);
	end;
	for i := 0 to 4 do
	begin
                PaintBox1.Canvas.Brush.Color := clBlack;
		PaintBox1.Canvas.Line(Round(x + x1[i]),   Round(y + y1[i]),
			Round(x + x1[i+1]), Round(y + y1[i+1]));
	end;
end;
 
end.
 

Прикрепленный файлРазмер
Фрактал Дюрера на Паскале854.27 кб