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

Вход на сайт

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

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

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

Выдаёт ошибку glut32.dll не найден! При том, что он лежит в System32! Всё решил) Нужно отправить не в System32, а в System.
Спасибо за статью. Я не Ваш студент. Но мне она помогла написать функцию для Канторова множества на Python для черепашки: import turtle def kanter(x, y, d):     if d > 1:         turtle...
Как реализовать в данном примере границы расчёта?

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

Рейтинг@Mail.ru Яндекс.Метрика
Среда программирования: 
Lazarus 0.9.30 (Free Pascal)

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons,
  ExtCtrls, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    PaintBox1: TPaintBox;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
    // координаты прорисовки объекта. Доступны всем процедурам класса TForm1
     x1, y1 , x2, y2: Integer;
 
  public
    { public declarations }
 
    // процедурa прорисовки белых и черных кружков
    procedure Circle(x, y: Integer; Col: TColor; M1, M2: Integer);
  end;
 
var
  m:Integer;
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Timer1Timer(Sender: TObject);
var
  newX, newY: real;
begin
  // Закраска объекта цветом фона
  PaintBox1.Canvas.Brush.Color := clBlack;
  PaintBox1.Canvas.Rectangle(0,0, PaintBox1.Width, PaintBox1.Height);
 
 
   //движение белых кружков
   if x1>=34 then
     m:=1
     else if
       x1 <=16 then
         m:=-1;
   x1:=x1-1*m;
 
   //движение черных кружков
   newX:=237+(x2-237)*cos(0.183625)-(y2-237)*sin(0.183625);
   newY:=237+(x2-237)*sin(0.183625)+(y2-237)*cos(0.183625);
   x2:=round(newX);
   y2:=round(newY);
 
   // Прорисовка объекта в новом месте
  Circle(x1,y1,clWhite, 0, 425);
  Circle(x2,y2,clBlack, -187, 187);
  Circle(x1,y1,clWhite, 50, 375);
  Circle(x2,y2,clBlack, -137, 137);
  Circle(x1,y1,clWhite, 100, 325);
  Circle(x2,y2,clBlack, -87, 87) ;
  Circle(x1,y1,clWhite, 150, 275) ;
  Circle(x2,y2,clBlack, -40, 40) ;
  Circle(x1,y1,clWhite, 197, 228) ;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  m:=-1;
 
// установка начальных значений
  x1:=25;
  y1:=25;
  x2:=239;
  y2:=249;
 
 
  // Включение таймера - запуск анимации
  Timer1.Interval := 50;
  Timer1.Enabled  := true;
 
  // прорисовка картинки по которой двигается объект
  PaintBox1.Canvas.Brush.Color := clBlack;
  PaintBox1.Canvas.Rectangle(0,0, PaintBox1.Width, PaintBox1.Height);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  DoubleBuffered  := true;
  Timer1.Enabled  := false;
end;
 
//прорисовка кружка
procedure TForm1.Circle(x, y: Integer; Col: TColor; M1, M2: Integer);
begin
  with PaintBox1.Canvas do begin
   Pen.Style := psClear;
   Brush.Color := Col;
   Ellipse(x + M1,y+ M1,x+M2,y+M2);
  end;
end;
 
end.

Прикрепленный файлРазмер
Исходный код и исполняемый файл946.04 кб