Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Polygonzug drehen (https://www.delphipraxis.net/136448-polygonzug-drehen.html)

Peach 30. Jun 2009 22:38


Polygonzug drehen
 
Hallo,

das ist mein erster Kommentar hier im Forum und ich hätte gleich mal eine Frage bzgl. der Grafikprogrammierung

Also im Rahmen meines Bauningenieurstudiums muss ich ein Delphieprogramm erstellen.
Zum Porgramm:

Zitat:

Es soll ein Polygonzug mit n Punkten gezeichnet werden, diese Punkte werden mit der
Maus eingeben. Desweiteren soll dann dieser Polygonzug im ersten Punkt um den Winkel w
gedreht werden
Die Programmoberfläche ist eingerichtet, den Polygonzug zeichnet es auch ohne Probleme.
Jedoch verzweifle ich an den Punkt mit dem "drehen". Ich habe natürlich schon im Internet
recharchiert da findet man Sachen wie (Verschiebung in den Ursprung, Geometrische Transalation,
Winkel auf die Punkte addieren und wieder zurück verschieben). Bei dieser Lösung ist mein Problem
das ich keine Ahnung habe wie ich den Polygon in den Ursprung verschiebt :(

Hier mal meine Syntax zum Erstellen den Polygonzuges:

Delphi-Quellcode:
procedure TForm4.Polygonverbinden1Click(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;

end.
Ich hoffe mir kann einer von Euch ein Lösungsansatz nennen wie ich es möglichst "einfach" hinbekomme,
weil es wirklich nur dieses eine Programm in Delphi ist was ich schreiben muss.

Vielen Dank

Peach

himitsu 30. Jun 2009 23:15

Re: Polygonzug drehen
 
1: Winkel und Entfernung eines Punktes zum ersten Punkt berechnen
2: neue relative Position des Punktes berechnen, abhängig von Punkt 1 und dabei den Winkel um W ändern
3: relative Position in absolute Position umrechnen (rel. Position plus Prosition des 1. Punktes)
(2 und 3 kann man auch zusammenfassen)

das für alle Punkte 2 bis n machen
und dann nur noch das Polygon zeichnen

R2009 1. Jul 2009 05:27

Re: Polygonzug drehen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

ale Punkte so verschieben dass der erste Punkt im Nullpunkt liegt. Dann alle (ausser dem ersten) Punkte um den Nullpunkt drehen. Dann zurückverschieben!

Verschiebung in den Nullpunkt:
Sei x0,y0 der erste Punkt und xa,ya ein beliebiger deines Polygonzuges(xq und yq sind die verschobenen Koordinaten):
xq:=xa-x0
yq:=ya-y0

danach drehst du (um den ursprung alle Punkte ausser den Anfangspunkt):

findest du unter Wikipedia

danach verschiebst du zurück:
xq2:=xq+x0
yq2:=yq+y0

Das sollte dir helfen deine Hausaufgaben zu erledigen! (Kann man aber mit etwas gutem Willen selbst herausfinden)
Damit du es besonders bequem hast habe ich dir die Grundlagen angehängt. Stoff Realschule 10.Klasse.

Viele Grüsse!


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz