Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi N-Eck mit Canvas zeichnen (https://www.delphipraxis.net/30331-n-eck-mit-canvas-zeichnen.html)

moritz 23. Sep 2004 15:32


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

alcaeus 23. Sep 2004 15:37

Re: N-Eck mit Canvas zeichnen
 
Hi Moritz,

die wahrscheinlich beste Möglichkeit ist mit Trig-Funktionen zu arbeiten.

Delphi-Quellcode:
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;
ist ungetestet, der Ansatz sollte aber richtig sein :-?

Greetz
alcaeus

[edit]Alle Fehler korrigiert, müsste funktionieren.[/edit]

moritz 23. Sep 2004 15:48

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.

alcaeus 23. Sep 2004 15:54

Re: N-Eck mit Canvas zeichnen
 
Hi Moritz,

das hast du davon wenn du Warnungen ignorierst. :mrgreen:
Zitat:

Variable yn may not have been initialized
Ist auch klar:
Delphi-Quellcode:
yn := yn - Round(r*sin(DegToRad(i*360/n)));
Die Richtige Zeile lautet:
Delphi-Quellcode:
yn := ym - Round(r*sin(DegToRad(i*360/n)));
Greetz
alcaeus

PS: mal sehn wie viele den Fehler gefunden hätten :mrgreen:

moritz 23. Sep 2004 15:59

Re: N-Eck mit Canvas zeichnen
 
Super, Danke!!

moritz 23. Sep 2004 18:24

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

alcaeus 23. Sep 2004 18:28

Re: N-Eck mit Canvas zeichnen
 
Hi Moritz,

eigentlich so:

Delphi-Quellcode:
h := r*cos(DegToRad(360/n));
oder analog:
Delphi-Quellcode:
h := r*cos(2*Pi/n);
Wichtig ist, dass du den Winkel in Radianten übergibst!

Greetz
alcaeus

d3g 23. Sep 2004 18:31

Re: N-Eck mit Canvas zeichnen
 
Nur die Hälfte des Winkels, alcaeus!

cos(pi/n) = h/r
=> h = r * cos(pi/n).

alcaeus 23. Sep 2004 18:33

Re: N-Eck mit Canvas zeichnen
 
Zitat:

Zitat von d3g
Nur die Hälfte des Winkels, alcaeus!

:oops: ich sollte mal zurück in die Schule ;)

@Moritz: also so:
Delphi-Quellcode:
h := r*cos(DegToRad(180/n));
Greetz
alcaeus

moritz 23. Sep 2004 18:34

Re: N-Eck mit Canvas zeichnen
 
Leute, ihr seid genial! Danke :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr.
Seite 1 von 2  1 2      

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