![]() |
N-Eck mit Canvas zeichnen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!
Ich hab ein Mathematisches Problem: Und zwar will ich die Figur, die ihr in der Skizze im Anhang seht, mit Canvas zeichnen. r und n (Die Anzahl der Ecken; n € N ) sollen angegeben werden können. Könnt ihr mir helfen? Gruß Edit: h ist unwichtig, einfach ignorieren. n und r sind nicht konstant |
Re: N-Eck mit Canvas zeichnen
Hi Moritz,
die wahrscheinlich beste Möglichkeit ist mit Trig-Funktionen zu arbeiten.
Delphi-Quellcode:
ist ungetestet, der Ansatz sollte aber richtig sein :-?
function DegToRad(Deg: Real): Real;
begin Result := Deg*Pi/180; end; procedure ZeichneNEck(xm, ym, r: Real; n: Integer); var i: Integer; xn, yn: Real; begin Canvas.MoveTo(Round(xm+r),Round(ym)); for i := 1 to n do begin xn := xm + Round(r*cos(DegToRad(i*360/n))); yn := ym - Round(r*sin(DegToRad(i*360/n))); Canvas.LineTo(Round(xn), Round(yn)); end; end; Greetz alcaeus [edit]Alle Fehler korrigiert, müsste funktionieren.[/edit] |
Re: N-Eck mit Canvas zeichnen
Hi,
sorry, da ist nur ein Strich und mit den Funktionen kenn ich mich leider nich aus :( Gruß, moritz P.S.: Ich hab dich mal per ICQ angesprochen. |
Re: N-Eck mit Canvas zeichnen
Hi Moritz,
das hast du davon wenn du Warnungen ignorierst. :mrgreen: Zitat:
Delphi-Quellcode:
Die Richtige Zeile lautet:
yn := yn - Round(r*sin(DegToRad(i*360/n)));
Delphi-Quellcode:
Greetz
yn := ym - Round(r*sin(DegToRad(i*360/n)));
alcaeus PS: mal sehn wie viele den Fehler gefunden hätten :mrgreen: |
Re: N-Eck mit Canvas zeichnen
Super, Danke!!
|
Re: N-Eck mit Canvas zeichnen
So, nächstes Problem: Ich finde ich in der Skizze h raus, wenn ich nur r und n kenne?
Ich hab leider keine Lösung gefunden :( Gruß, Moritz |
Re: N-Eck mit Canvas zeichnen
Hi Moritz,
eigentlich so:
Delphi-Quellcode:
oder analog:
h := r*cos(DegToRad(360/n));
Delphi-Quellcode:
Wichtig ist, dass du den Winkel in Radianten übergibst!
h := r*cos(2*Pi/n);
Greetz alcaeus |
Re: N-Eck mit Canvas zeichnen
Nur die Hälfte des Winkels, alcaeus!
cos(pi/n) = h/r => h = r * cos(pi/n). |
Re: N-Eck mit Canvas zeichnen
Zitat:
@Moritz: also so:
Delphi-Quellcode:
Greetz
h := r*cos(DegToRad(180/n));
alcaeus |
Re: N-Eck mit Canvas zeichnen
Leute, ihr seid genial! Danke :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz