Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Vierecke und Fünfecke zeichen


Iser - Di 28.04.09 08:55
Titel: Vierecke und Fünfecke zeichen
Meine Aufgabe ist es ein Programm zu schreiben, dass ein Eingabefeld und einen Button hat.
Dieses Programm soll Symetrische Ecken zeichnen. Wenn Beispielsweise eine 4 in das Feld eingegeben wird, soll ein symetrisches Viereck gezeichnet werden. Wenn man eine 6 eingibt soll ein symetrisches Sechseck rauskommen
Bitte um Hilfe, weil ich keine Ahnung hab wie das funktionieren soll ;D

mfg


jaenicke - Di 28.04.09 09:13

Hallo und :welcome: im Forum!

Diese Seite könnte dir bei den mathematischen Grundlagen dazu helfen:
http://www.mathematische-basteleien.de/vieleck.htm

Wenn du dann weißt wie du die Kordinaten berechnest, dann braucht du nur noch Canvas.MoveTo und Canvas.LineTo oder wenn du möchtest direkt Canvas.Polygon.
http://www.delphiseiten.de/lex11/lex1101.html


Nersgatt - Di 28.04.09 09:13

Überleg doch mal, wie Du es per Hand machen würdest.
Ich würde mir einen Kreis malen. Dann den Kreis in entsprende Anzahl Tortenstück teilen und schon hast Du die Ecken deines Vielecks.


Iser - Di 28.04.09 11:41

Wie das ganze theortisch funktioniert weiß ich leider auch nicht ganz. Ich weiß nur dass man auch mit Sinus arbeiten muss. Allerdings habe ich auch keinen Plan wie ich sowas in Delphi umsetzte.
Könne mir mal jemand einen Lösungsansatz aufzeigen, damit ich einen Anhaltspunkt habe, weil so komme ich absolut nicht weiter
Vorallem weiß ich nicht wie man das mit der Anzahl der Ecken, die man in ein Feld eintragen soll, verwirklichen kann

mfg


Xabitire - Di 28.04.09 12:25

Hi,

ist eigentlich ganz einfach! Sagen wir mal, du willst ein Neuneck zeichnen. Dann hast du auf deinem Kreis 9 Eckpunkte mit jeweils gleichem Abstand auf der Kreislinie. Willst du nun den entsprechenden Winkel am Kreis haben, der diesen Abstand beschreibt nimmst du 360° und teilst es durch 9. Also im Beispiel 40°. Jetzt nehmen wir noch die Formel zur Drehung eines Punktes um den Nullpunkt:


Quelltext
1:
2:
x' = x * cos(alpha) - y * sin(alpha)
y' = x * sin(alpha) + y * cos(alpha)


x' und y' sind die Position des neuen Punktes, x und y die Position des alten Punktes. Starten kann man auf einem belibigen Punkt des Kreies. Für unser Beispiel müssten wir 8 mal den nächsten Punkt ausrechnen, beim 9. mal wären wir wieder im Ausgangspunkt.

Wichtig ist noch noch, dass diese Formel nur für den Nullpunkt gilt, das heißt du startest am besten mit x = "Radius des Kreises" und y = "0" und verschiebst dann die entsprechenden Ergebnisse um den den x- und y-Wert die dein Kreismittelpunkt auf der Zeichenebene hat. Auch nicht zu vergessen ist, dass die Funktionen cos und sin in Delphi im Bogenmaß und nicht im Gradmaß rechnen, dass heißt entweder umrechnen oder gleich durch 2*Pi teilen statt 360°. :wink:

MFG Blackbird8690