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

Вход на сайт

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

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

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

Здравствуйте. Спасибо за проект. У меня вопрос, по какой причине определение принадлежности точки многоугольнику работает некорректно, если координаты из больших чисел состоят, например: int[] vertex = new int[] {...
Сейчас проверила нашла причину не запускания // Создание контекста воспроизведения OpenGL и привязка его к панели на форме OpenGLControl1:=TOpenGLControl.Create(Self); with OpenGLControl1 do begin Name:='OpenGLControl1'; //вот тут...
Ну..кажется что то пошло не так http://pp.usera...
Пример, к которому вы оставили комментарий строит именно то самое изображение на языке с#, которое вам необходимо. Отличается только цветовая палитра.

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

Рейтинг@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 кб