AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Polygonzug drehen

Ein Thema von Peach · begonnen am 30. Jun 2009 · letzter Beitrag vom 1. Jul 2009
Antwort Antwort
Peach

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

Polygonzug drehen

  Alt 30. Jun 2009, 23:38
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.053 Beiträge
 
Delphi 12 Athens
 
#2

Re: Polygonzug drehen

  Alt 1. Jul 2009, 00:15
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Polygonzug drehen

  Alt 1. Jul 2009, 06:27
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!
Angehängte Dateien
Dateityp: pdf translationen_166.pdf (293,1 KB, 16x aufgerufen)
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 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