procedure TForm1.Button2Click(Sender: TObject);
var w,wh,ws,xdel,ydel,lange,wlast,wd,xs1,ys1: real;
xvorz,yvorz: boolean;
//vorzeichen delta xy bestimmen
i:integer;
xs,ys:
array[1..40]
of integer;
dist:
string;
radtodeg:Extended;
begin
for i:=1
to n
do
w:=StrToFloat(edit1.Text);
//umrechnen in pi und volle winkel
if w <=180
then wh:=((w/180)*pi)
else wh:=-(((w-180)/180)*pi);
ws:=sin(wh);
for i:=1
to n
do
begin //x-werte differenz zu ersten n-punkt, ersten punkt holen und mit x-werte subtraieren
xdel:=xp[n-i]-xp[n];
//delta x-wert n-i
ydel:=yp[n-i]-yp[n];
//delta y-wert
//bestimmen der vorzeichen
if xdel>0
then xvorz:= true
else xvorz:= false;
if ydel>0
then yvorz:= true
else yvorz:= false;
//berechnung neuwert sin bzw. cos
lange:=sqrt((xdel*xdel)+(ydel*ydel));
wlast:=(radtodeg(arctan*(ydel/xdel)));
//winkel von n x-achse zu punkt
//4.Quatrant
if (xvorz
and yvorz)=true
then wd:= wlast-w;
//3.Quatrant
if xvorz=false
then
begin
if yvorz=true
then wd:=180+wlast-w;
end;
//2.Quatrant
if xvorz=false
then
begin
if yvorz=false
then wd:=180+wlast-w;
end;
//1.Quatrant
if xvorz=true
then
begin
if yvorz=false
then wd:=(wlast-w);
end;
wd:=degtorad(wd);
//drehwinkel x-achse in rad
//richtungssinn der winkel
xs[1]:=xp[n];
ys[1]:=yp[n];
xs1:=(xp[n]+lange*(cos(wd))));
xs[i+1]:=round(xs1);
ys1:=(yp[n]+(lange*(-sin(wd))));
ys[i+1]:=round(ys1);
dist:=FloatToStr(n+i)+'
'+'
x'+FloatToStr(xs[i+1])+'
y'+FloatToStr(ys[i+1]);
image1.Canvas.Pen.Color:=clred;
image1.Canvas.Rectangle(xs[i+1]-1,ys[i+1]-1,xs[i+1]+1,ys[i+1]+1);
end;
//zeichnen der gedrehten Figur
for i:=1
to n
do
begin
image1.Canvas.MoveTo(xs[i],ys[i]);
image1.Canvas.LineTo(xs[i+1],ys[i+1]);
end;
image1.Canvas.MoveTo(xs[n],ys[n]);
image1.Canvas.LineTo(xs[1],ys[1];
end;
end.