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

Вход на сайт

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

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

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

Здравствуйте, Ильгиз. Математика - царица наук (Карл Гаусс). Изучение математики начинается с детского сада, когда нас учат считать и выполнять простые арифметические операции. Любой, даже самый простейший алгоритм будет связан с арифметическими...
Я хотел узнать математика это обязательно в программирование. Пять лет назад просто из любопытства я увлекся HTML потом изучил CSS и JvaScript потом изучил PHP и Java. Как то не задумывался и начал смотреть форумы и узнал что без математики не...
Все верно, но так же необходимо зайти в: Компоновщик -> Ввод -> Дополнительные зависимости Здесь необходимо нажать изменить и в Дополнительные зависимости прописать это: SDL2.lib SDL2main.lib SDL2test.lib Без этого не заработает. (MVS 2015)
Спасибо за реализацию, она действительно быстрая. Но не все линии отрисовывает в нужную сторону... Необходимо добавить проверку для случая X-линии if(y1 "<" y0) grad=-grad; и аналогично для Y-линии if(x1 "<" x0) grad=-grad; P.S. На...
Отличные уроки(учу GL по ним), только в renderScene нужно добавить очистку буфера цвета и буфера глубины. При изменении размеров треугольники размножаются)

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

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

Программа демонстрирует построение Канторового множества.

Для начала работы нужно ввести длину отрезка в соответствующее поле и нажать кнопку "Построить". При желании можно ввести новую длину и заново построить множество.

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

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls, Buttons;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    Edit1: TEdit;
    Label1: TLabel;
    PaintBox1: TPaintBox;
    procedure BitBtn1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
    procedure Draw_Kanter(x, y, Otrw:Double);
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
  //Отработка кнопки построения
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  Otr, x : Double;
begin
  //Очистка окна PaintBox
  PaintBox1.Canvas.Brush.Color := clWhite;
  PaintBox1.Canvas.FillRect(Canvas.ClipRect);
  //Считывание введенной длины отрезка
  Otr := StrToInt(Edit1.Text);
  //Расчет координаты по Х
  x := 610/2 - Otr/2;
  //Вызов функции отрисовки мн-ва Кантера
  Draw_Kanter(x,10,Otr);
end;
 
procedure TForm1.Draw_Kanter(x, y, Otrw :Double);
begin
  //Цвет кисти - черный
  PaintBox1.Canvas.Brush.Color := clBlack;
  //Выполнимо, пока отрезки не будут меньше 1
  if Otrw >= 1 then begin
  //Рисуем отрезок в виде прямоугольника, для наглядности
  PaintBox1.Canvas.Rectangle(round(x), round(y), round(x+Otrw), round(y-12));
  //Сдвигаемся вниз
  y := y + 40;
  //Рисуем следующие отрезки мн-ва, дроблением отрезка на 3 части
  Draw_Kanter(x + Otrw*2/3, y, Otrw/3);
  Draw_Kanter(x, y, Otrw/3);
    end;
end;
end.

Прикрепленный файлРазмер
Kanter.rar692.33 кб