Delphi-PRAXiS

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 :)

d3g 23. Sep 2004 18:47

Re: N-Eck mit Canvas zeichnen
 
Zitat:

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

Glaub nicht... Vielleicht ein Kaffee?

Zitat:

Zitat von moritz
Leute, ihr seid genial! Danke :-)

Eigentlich nicht (zumindest ich nicht). Wenn du dich nicht zu sehr von Mathe abschrecken lässt, dann schau dir mal Wikiepedia: Trigonometrische Funktion: Definition an. Ist kein besonders schwieriges Thema (ich hoffe als überzeugter Mathe- und Physik-LKler bin ich jetzt nicht zu überheblich, aber unter Informatikbegeisterten...).

moritz 23. Sep 2004 19:14

Re: N-Eck mit Canvas zeichnen
 
Zitat:

Zitat von d3g
(ich hoffe als überzeugter Mathe- und Physik-LKler bin ich jetzt nicht zu überheblich, aber unter Informatikbegeisterten...).

*gg* Gleichfalls, allerdings kommt der LK erst in zwei Jahren :) Aber dessen bin ich mir schon sicher :)
Ich schau sie mir wahrscheinlich bei Gelegentheit mal an:

Eine Frage stellt sich mir noch:
Ich brauch den Flächeninhalt des n-ecks, dazu muss ich den flächeninhalt der n dreiecke multiplizieren, den ich auch berechnen könnte, wenn ich die länge der strecke in der skizze berechnen könnte, die teil des roten dreiecks ist, allerdings noch keinen Namen hat? (Ein Satz *g*)

moritz 23. Sep 2004 19:16

Re: N-Eck mit Canvas zeichnen
 
Öhm...hat sich soeben erledigt. :)

memphis 23. Sep 2004 19:18

Re: N-Eck mit Canvas zeichnen
 
hallo

r und h hast du und es ist ein Rechtwinkliges-Dreieck, also kannst du das kleine stückchen mit dem satz von Pythagoras berechnen.

MfG
Luki

moritz 23. Sep 2004 21:50

Re: N-Eck mit Canvas zeichnen
 
ja, das ist mir 5 Sekunden nach dem Posten auch aufgefallen ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:23 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