1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
procedure rotationarraypoint(xo,yo:integer;tetadeg:real;ptarray:array of Tpoint;canvas:tcanvas);
var i:integer;
teta:real;
Rayon:array of integer;
fi:array of real;
begin
setlength(Rayon,high(ptarray)+1);
setlength(fi,high(ptarray)+1);
teta:=pi*tetadeg/180;
for i:=low(ptarray) to high(ptarray) do begin
if ptarray[i].x-xo<>0 then
fi[i]:=arctan2(ptarray[i].y-yo,ptarray[i].x-xo)
else fi[i]:=-pi/2;
Rayon[i]:=round(sqrt(sqr(ptarray[i].x-xo)+sqr(ptarray[i].y-yo)));
ptarray[i].x:=Round(xo+Rayon[i]*cos(teta+fi[i]));
ptarray[i].y:=Round(yo+Rayon[i]*sin(teta+fi[i]));
end;
canvas.Polyline(ptarray);
end; |
Partager