Алгоритмы вычерчивания графических примитивов
Контрольная работа - Компьютеры, программирование
Другие контрольные работы по предмету Компьютеры, программирование
{$R *.dfm}Sign(Val: Single): ShortInt;Val > 0 then Result := 1 elseVal = abs(Y2 - Y1) then Leng := abs(X1 - X2)Leng := abs(Y1 - Y2); // Длина
// Приращения
dX := (X2 - X1) / Leng;
dY := (Y2 - Y1) / Leng;:= X1 + 0.5*Sign(dX);:= Y1 + 0.5*Sign(dY);:= 1;i <= Leng do begin.Pixels[Trunc(X), Trunc(Y)] := clBlue;
X := X + dX;:= Y + dY;:= i + 1
end;Circle(X1, Y1, X2, Y2: Word; Canvas: TCanvas);R, X, Y: Word;: Single;:= abs(X1 - X2) div 2; // Радиус
// Центр
X := X1 + (X2 - X1) div 2;
Y := Y1 + (Y2 - Y1) div 2;:= 0;i <= 359 do begin.Pixels[Trunc(X + R * Sin(i)), Trunc(Y + R * Cos(i))] := clRed;:= i + 0.1;;Ellipse(X1, Y1, X2, Y2: Word; Canvas: TCanvas);xR, yR, X, Y: Word;: Single;:= abs(X1 - X2) div 2; // Радиус X:= abs(Y1 - Y2) div 2; // Радиус Y
// Центр
X := X1 + (X2 - X1) div 2;
Y := Y1 + (Y2 - Y1) div 2;:= 0;i <= 359 do begin.Pixels[Trunc(X + xR * Sin(i)), Trunc(Y + yR * Cos(i))] := clLime;:= i + 0.1;;TMainForm.ButtonClearClick(Sender: TObject);PaintBox.Canvas do begin.Color := clBlack;(PaintBox.ClientRect);TMainForm.PaintBoxPaint(Sender: TObject);.Click;TMainForm.PaintBoxMouseDown(Sender: TObject;: TMouseButton; Shift: TShiftState; X, Y: Integer);:= X;:= Y;TMainForm.PaintBoxMouseUp(Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);ElementsGroup.ItemIndex of
: Line(SX, SY, X, Y, PaintBox.Canvas);
: Circle(SX, SY, X, Y, PaintBox.Canvas);
: Ellipse(SX, SY, X, Y, PaintBox.Canvas);
end;
end.
Вывод: В ходе проделанной контрольной работы были разработаны алгоритмы. Была написана программа, которая изображает на поверхности формы графические примитивы: линии, круги, эллипсы.