Autor |
Beitrag |
Freeman
Hält's aus hier
Beiträge: 13
|
Verfasst: Sa 21.05.05 18:58
Hi Leute
Also mein problem is folgendes :
Ich hab bereits die Kochkurve als programm hingekriegt und die sieht bei mir wie folgt aus und funktioniert auch gut.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Kochkurve(Nummer: integer; Strichlaenge: real); begin if (Nummer=1) or (Nummer<1) then Turtle1.draw(Strichlaenge)
else begin Kochkurve(Nummer-1, Strichlaenge/3); Turtle1.Turn(60); Kochkurve(Nummer-1, Strichlaenge/3); Turtle1.Turn(-120); Kochkurve(Nummer-1, Strichlaenge/3); Turtle1.Turn(60); Kochkurve(Nummer-1, Strichlaenge/3);
end; end; |
kann mir jemand sagen wie ich daraus jetzt die Koch'sche Schneeflocke hinkrieg....ich weiß zwar dass man den Initiator der ja hier ne Strecke is mit nem dreieck ersetzen muss...aber wenn ich des versuch kommt nur müll raus....kann mir da vielleicht jemand helfen und sagen was ich genau ändern muss ??
Greetz
Freeman
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt.
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Sa 21.05.05 19:10
Wo hakts denn genau? Zeig mal den Code, der nicht funktioniert - so wird dir eher geholfen als ohne Code.
AXMD
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 21.05.05 19:19
REKURSION
Solange dein LEvel der Rekursion > 0 ist, einfach anstatt der Striche deine Kochkurven-Funktion aufrufen und dabei die Streckenlänge verkleinern.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Freeman 
Hält's aus hier
Beiträge: 13
|
Verfasst: Sa 21.05.05 19:33
Sorry aber des hab ich jetzt net ganz gerafft....wenn ich des mach hab ich doch nur die Kochkurve
also so Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.Kochkurve(Nummer: integer; Strichlaenge: real); begin if nummer>0 then begin
Kochkurve(Nummer-1, Strichlaenge/3); Turtle1.Turn(60); Kochkurve(Nummer-1, Strichlaenge/3); Turtle1.Turn(-120); Kochkurve(Nummer-1, Strichlaenge/3); Turtle1.Turn(60); Kochkurve(Nummer-1, Strichlaenge/3); end
else Turtle1.draw(Strichlaenge) end; |
aber da hab ich doch noch keine Schneeflocke ??
Moderiert von AXMD: Code- durch Delphi-Tags ersetzt.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 21.05.05 19:47
Bitte besorge Dir zum Programmieren die Standard-Software Brain 1.0, die es in jeder guten pädagogischen Einrichtung als Basisausstattung gibt und überlege dann, warum nichts gezeichnet wird.
Vielleicht kommst Du dann darauf, dass bei Nummer=0 noch ein paar Linien gezeichnet werden müssten.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Freeman 
Hält's aus hier
Beiträge: 13
|
Verfasst: Sa 21.05.05 19:57
Hmm,meinste net , ich hätt schon alles ausprobiert was mir einfällt?.....is nun ma net jeder en Super Programmierass.....frag mich nur, wofür frag ich hier überhaupt nach hilfe wenn die antwort letztendlich eh is " find es selbst raus" .....
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 21.05.05 20:13
Die restlichen Seiten erhälst Du durch drehen des Zeichenstifts um -60°.
Das Zeichnen der Kochkurve + Drehenum -60 Grad insgesamt 6 mal ausführen.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Freeman 
Hält's aus hier
Beiträge: 13
|
Verfasst: Sa 21.05.05 20:26
Ahh ok Danke.....jetzt funktionierts....hab ne neue prozedur gemacht und dort dann die Prozedur der Kochkurve wieder aufgerufen und wiederholt mit dem Turn.....hab allerdings nur 3 mal wiederholt und um -120° gedreht....dann siehts schöner aus *gg*..........naja ,mein fehler war die ganze Zeit....dass ich es alles in der Kochkurven Prozedur machen wollte und des hat net so ganz geklappt. Also so funktionierts jetzt :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure TForm1.Kochkurve(Nummer: integer; Strichlaenge: real); begin if (Nummer=1) or (Nummer<1) then Turtle1.draw(Strichlaenge)
else begin Kochkurve(Nummer-1, Strichlaenge/3); Turtle1.Turn(60); Kochkurve(Nummer-1, Strichlaenge/3); Turtle1.Turn(-120); Kochkurve(Nummer-1, Strichlaenge/3); Turtle1.Turn(60); Kochkurve(Nummer-1, Strichlaenge/3); end; end;
procedure TForm1.Button1Click(Sender: TObject); var i : integer; begin for i:=1 to 3 do begin kochkurve(StrToInt(Edit1.text),100); turtle1.turn(-120); end; end; |
thx for help
|
|
|