Einzelnen Beitrag anzeigen

Peach

Registriert seit: 30. Jun 2009
2 Beiträge
 
#1

Polygon drehen

  Alt 11. Mai 2011, 18:19
Ich bräuchte bei meinem Delphi-Programm mal Hilfe!

Zum Programm: Es sollen Punkte auf dem Bildschirm markiert werden und daraus ein Polygonzug erstellt werden. Und der zweite Teil der Aufgabe besteht daraus diesen Polygonzug im Punkt 1 mit dem Winkel w zu drehen.

Die Sache mit dem Polygonzug habe ich hinbekommen, das stellte kein Problem dar. Nun dachte ich mir wegen den zweiten Teil der Aufgabe, dass ich die Punkte erstmal um den Ursprung verschiebe, sie neu zeichnen lasse und danach den Polygonzug wieder verbinde. Sollte das dann funktionieren würde ich es um den Punkt 1 drehen lassen.
Jedoch bekomme ich es einfach nicht hin, mir ist die geometrische Transformation schon bewusst und rein theoretisch ist mir das auch klar, aber ich bekomme es leider nicht umgesetzt. Ich hoffe ich bin nicht auf den Holzweg mit meiner Idee die Punkte zu "verschieben" und anschließend den Polygon neuzuzeichnen..

Punkte für den Polygonzug setzen:
Delphi-Quellcode:
procedure TForm4.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   image1.Canvas.Pen.Color:=clblack;
   image1.Canvas.brush.Style:=bsclear;
if button=mbLeft then
begin
  n:=n+1;
    xp[n]:=x;
    yp[n]:=y;
    image1.Canvas.Rectangle(x-3,y-3,x+3,y+3);
end;
end;
Polygonzug verbinden:
Delphi-Quellcode:
procedure TForm4.Button1Click(Sender: TObject);
     var i:integer;
begin

   n:=n+1;
xp[n]:=xp[1];
yp[n]:=yp[1];
image1.canvas.moveto (xp[n],yp[n]);
for i:=n+1 to n-1 do


image1.Canvas.MoveTo(xp[i],yp[i]);
for i:=1 to n-1 do
image1.canvas.lineto (xp[i+1], yp[i+1]);


end;

Vielen Dank schonmal!!
  Mit Zitat antworten Zitat