pascalabcnet/InstallerSamples/Graphics/GraphABCLinux/Stamps/StampPoly.pas
Mikhalkovich Stanislav 6e34bc00fa TeacherControlPlugin в проекте
GraphABCLinux
Поправил иконку PABCHealth
Изменения в LightPT.pas
Цветной вывод в окне вывода (только для Windows)
Console.OutputEncoding := new System.Text.UTF8Encoding(false); в __RedirectIOMode.pas чтобы в Linux нормально выводилось
2022-07-10 14:51:51 +03:00

49 lines
1.1 KiB
ObjectPascal

// Класс штампа правильного многоугольника
uses GraphABCLinux;
type
RegularPolygonStamp = class
x,y,r: real;
n: integer;
constructor (xx,yy,rr: real; nn: integer);
begin
x := xx; y := yy;
r := rr; n := nn;
end;
procedure Stamp;
begin
var t := 0.0;
var xr := r*cos(t);
var yr := r*sin(t);
MoveTo(Round(x + xr),Round(y + yr));
for var i:=1 to n do
begin
t += 2*Pi/n;
xr := Round(r*cos(t));
yr := Round(r*sin(t));
LineTo(Round(x + xr),Round(y + yr));
end;
end;
procedure MoveOn(dx,dy: real);
begin
x += dx; y += dy;
end;
function Clone: RegularPolygonStamp;
begin
Result := new RegularPolygonStamp(x,y,r,n);
end;
end;
begin
var r := new RegularPolygonStamp(Window.Center.X,Window.Center.Y,50,6);
r.Stamp;
var t := 2*Pi/12;
var rr := r.r*sqrt(3)+10;
for var i:=1 to 6 do
begin
var r1 := r.Clone;
r1.MoveOn(rr*cos(t),rr*sin(t));
r1.Stamp;
t += 2*Pi/6;
end;
end.