Здравствуйте! Delphi 2009.
Пытаюсь освоить новую тему по компьютерной графике – Операции поворота вокруг центра координат на угол α, трансляции и масштабирования", но никак не получается,
боюсь сойти с ума, т.к. уже две недели пытаюсь решить задачу.
Помогите написать код для кнопки "Поворот". Надо чтобы мой параллелограмм поворачивался вокруг центра координат по щелчку на кнопку "Поворот" на определенное количество градусов, выбранное пользователем в компоненте Tetracbar.
Информации в интернете конечно много, но все примеры почему-то с изображениями, а не с геометрическими фигурами.
Всё что смогла сделать – построить оси координат и параллелограмм.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Image1: TImage;
Button3: TButton;
Button5: TButton;
TrackBar1: TTrackBar;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
x,y: Real;
x0, y0: Integer;
m: Integer;
i: Integer;
n: Integer;
begin
x0 := Image1.Width div 2; // центр координатной плоскости по х оси
y0 := Image1.Height div 2; // центр координатной плоскости по у оси
m := 25; // масштаб
// координатная плоскость
Image1.Canvas.MoveTo(0, y0);
Image1.Canvas.LineTo(ClientWidth, y0);
Image1.Canvas.MoveTo(x0, 0);
Image1.Canvas.LineTo(x0, ClientHeight);
x := -7; // стартовое значение функции
n := Abs(Round(x)); // конечное значение функции
// шкалирование осей
for i := Round(x) to n do
begin
Image1.Canvas.MoveTo(x0+i*m, y0-5);
Image1.Canvas.LineTo(x0+i*m, y0-(-5));
Image1.Canvas.TextOut(x0+i*m, y0+10, IntToStr(i));
Image1.Canvas.MoveTo(x0+5, y0-m*i);
Image1.Canvas.LineTo(x0-5, y0-m*i);
Image1.Canvas.TextOut(x0-15, y0+i*m, IntToStr(-i));
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Close;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
//координаты вершин многоугольника
point: array[1..4] of TPoint;
begin
//Координаты первой точки
point[1].X:=450; point[1].Y:=150;
//Координаты второй точки
point[2].X:=500; point[2].Y:=100;
//Координаты третьей точки
point[3].X:=600; point[3].Y:=100;
//Координаты четвертой точки
point[4].X:=550; point[4].Y:=150;
Image1.Canvas.Polygon(point);
end;
end.