AGB  ·  Datenschutz  ·  Impressum  







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

Frage zur Kochkurve

Ein Thema von gnui · begonnen am 8. Jun 2007 · letzter Beitrag vom 10. Jun 2007
Antwort Antwort
gnui

Registriert seit: 8. Jun 2007
40 Beiträge
 
#1

Frage zur Kochkurve

  Alt 8. Jun 2007, 20:40
Hi, also ich beschäftige mich zur zeit mit rekursionsgrafiken und im speziellen mit der kochkurve

doch so ganz kappiere ich das nicht

1. problem

Delphi-Quellcode:
procedure koch (ordnung: Integer; laenge, winkel: Real);
begin
if ordnung = 0
then
begin
x := x+laenge*cos(winkel);
y := y-laenge*sin(winkel);
PaintBox.Canvas.LineTo (Round(x), Round(y));
end
else
begin
koch (ordnung-1, laenge / 3, winkel);
winkel := winkel + pi / 3;
koch (ordnung-1, laenge / 3, winkel);
winkel := winkel - 2 * pi / 3;
koch (ordnung-1, laenge / 3, winkel);
winkel := winkel + pi / 3;
koch (ordnung-1, laenge / 3, winkel);
end;
end;
müsste es hier nicht so sein dass die procedur immerwieder schon beim ersten koch aufruf nach begin wiederholt wird und die darauffolgenden befehle garnicht an die reihe kommen? schließlich wird schon mit dem 1. befehl die procedur erneut aufgerufen, eben bis die ordnung = 0 ist
versteh nicht wie die darauffolgenden befehle aufgerufen werden können, vllt nur ein denkfehler von mir irgendwie


2. problem
ja mein 2. problem ist eigentlich das mit den winkel und dem pi, wie kommt man auf die formel die den winkel ändern lässt und warum 2 mal die gleiche formel und dazwischen eine andere? selbst würdich da wohl nie draufkommen


ja das wärs auch, den rest versteh ich soweit
hab leider kein schönes tutorial gefunden in dem mal richtig das ganze erklärt wurde und musste es mir deswegen soweit nur an dem quellcode beibringen

ich hoffe hier kann mir wer helfen

danke schonmal
mfg gnui
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Frage zur Kochkurve

  Alt 8. Jun 2007, 20:48
Zu den Winkeln: Das sind einfach die Bogenmaß-Äquivalente zu +60°, -120° und wiederum +60°, die Winkel beim Durchlaufen einer "Koch-Zacke".
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Frage zur Kochkurve

  Alt 8. Jun 2007, 21:26
Hi, herzlich Willkommen!

Zitat von gnui:
müsste es hier nicht so sein dass die procedur immerwieder schon beim ersten koch aufruf nach begin wiederholt wird und die darauffolgenden befehle garnicht an die reihe kommen? schließlich wird schon mit dem 1. befehl die procedur erneut aufgerufen, eben bis die ordnung = 0 ist
versteh nicht wie die darauffolgenden befehle aufgerufen werden können, vllt nur ein denkfehler von mir irgendwie
Zugegeben, Rekursionen sind komplexer, als sich vermuten lässt. Ich versuche es mal bewusst sehr einfach auszudrücken:
Jede Prozedur/Funktion läuft im Prinzip von vorne bis hinten durch, da diese nicht vorzeitig verlassen wird. Ruft eine Prozedur sich selbst auf, wir der nachfolgende Code erst einmal ignoriert, jedoch nach Eintreten der Abbruchbedingung, die dafür sorgt, dass die Selbstaufrufe nicht mehr stattfinden, von hinten nach vorne abgearbeitet.

Der Grund hierbei liegt im Stack. Es wird sukzessive bei den Selbstaufrufen etwas in den Stack geschrieben und dieser wird dann wieder rückwärts geleert bzw. abgearbeitet.
Bildlich kannst du dir einen Stack (einen Speicher) vorstellen wie eine sehr schmale Sackgasse. Es fahren Autos hinein, doch ein Umdrehen ist nicht möglich. Daher müssen die zuletzt eingefahrenen Autos zuerst wieder entfernt werden, um ans erste Auto zu kommen.
  Mit Zitat antworten Zitat
gnui

Registriert seit: 8. Jun 2007
40 Beiträge
 
#4

Re: Frage zur Kochkurve

  Alt 8. Jun 2007, 21:43
ok vielen dank, hab mir das ganze mal im einzelschrittmodus mit variablenüberwachung angesehn und nun kappier ich die ganze reihenfolge in der prozedur

und mit dem bogenmaß ist nun auch logisch, werd mir da vllt ne funktion schreiben so dass ich in der prozedur zum besseren verständnis die gradzahl reinschreiben kann
  Mit Zitat antworten Zitat
gnui

Registriert seit: 8. Jun 2007
40 Beiträge
 
#5

Re: Frage zur Kochkurve

  Alt 9. Jun 2007, 10:35
noch eine frage
wie kommt man dadrauf:
Delphi-Quellcode:
 x := x+laenge*cos(winkel);
y := y-laenge*sin(winkel);
weiß nicht was ich damit anfangen soll, also wie ich da selber hätte draufkommen können
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Frage zur Kochkurve

  Alt 9. Jun 2007, 13:17
Zitat von gnui:
ok vielen dank, hab mir das ganze mal im einzelschrittmodus mit variablenüberwachung angesehn und nun kappier ich die ganze reihenfolge in der prozedur

und mit dem bogenmaß ist nun auch logisch, werd mir da vllt ne funktion schreiben so dass ich in der prozedur zum besseren verständnis die gradzahl reinschreiben kann
Dafür gibt es in der Unit Math die func. DegToRad und RadToDeg!
Zitat von gnui:
noch eine frage
wie kommt man dadrauf:
Delphi-Quellcode:
 x := x+laenge*cos(winkel);
y := y-laenge*sin(winkel);
weiß nicht was ich damit anfangen soll, also wie ich da selber hätte draufkommen können
Drehung im 2D-Fall, mal Wikipedia befragen bzw. ebene Polarkoordinaten!
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
gnui

Registriert seit: 8. Jun 2007
40 Beiträge
 
#7

Re: Frage zur Kochkurve

  Alt 9. Jun 2007, 15:38
ok danke werd ich machen
meine funktion zru umwandlung klappt auch, aber so is natürlich bequemer^^
  Mit Zitat antworten Zitat
gnui

Registriert seit: 8. Jun 2007
40 Beiträge
 
#8

Re: Frage zur Kochkurve

  Alt 10. Jun 2007, 19:27
könnte mir vllt jemand noch ein wenig erklären wie das in der procedur mit den rekursiven aufrufen aussieht?
ist ziemlich verwirrend finde ich

ich versteh dass so das je höher die ordnung desto öfter wird der erste rekursive aufruf irgendwie durchlaufen und so oft wird die strecke geteilt, in jedem teilabschnitt werden dann durch die anderen rekursiven aufrufe die formen eingefügt
aber so richtig ist mir das eben nicht klar
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Frage zur Kochkurve

  Alt 10. Jun 2007, 20:29
Gehe die Procedure mal mit dem Debugger durch, beobachte Bild und Variablen!
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  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 02:18 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