Autor Beitrag
Oakley
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 09.02.09 17:14 
Hey Leute!

Ich sowie 2 andere freunde von mir sind dabei ein Programm zu erstellen das 3 folgendene Aufgaben erledigen kann:

- 1. Bresenham-Algorithmus für Linien schrittweise zeichnen/darstellen

- 2. Bresenham-Algorithmus Kreise schrittweise zeichnen/darstellen

- 3. Floodfill-Algorithmus schrittweise zeichnen/darstellen

Ich hab euch hier mal den Ordner hochgeladen und ich hoffe ihr könnt mir damit weiter helfen.

Also beim Bresenham-Algorithmus für Linien sind wir der Meinung nun alles richtig geschireben zu haben allerdings zeichnet er einen schritt und dann hängt sich das programm auf...keiner weiß wieso! :evil:

Und für den Bresenham-Algorithmus Kreise wissen wir ehrlich gesagt nich genau was wir alles ändern müssen damit dieser geht...müsste ja ne abgeänderte form vom normalen Bresenham-Algorithmus sein oder?

Und beim Floodfill-Algorithmus wissen wir nich so wirklich wie wir den angehen sollen.

Guck es doch einfach bitte mal an und geht uns hilfen wenn möglich!

Vielen Dank im Voraus!
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 09.02.09 17:38 
Hallo und :welcome: bei uns im Forum!

Erster Start siehe Anhang, da kommen ScrollBars. ;-)
Warum setzt du nicht einfach das Panel auf Align = alClient?

Und der Code... :shock:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm2.Timer1Timer(Sender: TObject);
begin

  repeat
    case i of
  1Begin
      p_berechne;
      p_zeichne;
     End;

  End;

i := i;
  until x < xe

end;
Wofür case gedacht ist, wisst ihr aber schon, oder? :gruebel:
Und dass i := i; nichts bewirkt, sollte eigentlich auch einleuchten.
Jedenfalls habt ihr da eine Endlosschleife. Denn weder x noch xe werden irgendwo so verändert, dass die Bedingung erfüllt werden kann:
ausblenden volle Höhe 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:
29:
30:
31:
32:
33:
34:
35:
Procedure p_berechne;
  begin

  dx := xe - xs;
  dy := ye - ys;
  d := 2 * dy - dx;
  E := 2 * dy;
  NE := 2 * (dy-dx);
  x := xs;
  y := ys;


  end;

Procedure p_zeichne;
  begin

                q := 20;
                form2.Canvas.brush.color := clred;
                form2.canvas.floodfill(40 + q * x, 440 - q * y, clblack, fsborder);

                if dy < 0 then
                  begin d := d + E;
                        x := x + 20;
                  end
                          else
                            begin d := d + NE;

                               x := x + 20;
                               y := y - 20;

                          end;


end;
In p_zeichne wird x um 20 erhöht, beim nächsten Schleifendurchlauf in p_berechne wieder auf xs gesetzt, das nirgends verändert wird. :gruebel:
Da die Schleife so lange läuft bis x kleiner als xs wird, x aber immer nur um 20 erhöht und zurückgesetzt wird, wird die Schleife nie abbrechen...

Ich habe das Gefühl, dass ihr gar nicht so richtig wisst was ihr da eigentlich macht. Wozu braucht ihr z.B. den Timer (und in dem Timer dann die Schleife)?
Einloggen, um Attachments anzusehen!
Oakley Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 09.02.09 18:13 
hm...jaor dann sollten wir doch da gleich nochmal gucken...
das mit dem canvas haben wir genomm weils für uns am einfachsten aussah ^^
ansonsten soll es eben das ganze in schritten per timer (also pro sekuinde einen schirtt) zeigen wie der algortihmus jeweils abläuft.
und der hängt sich vermutlich grad aus dem grund, dass es ne endlosschleife is, auf oder?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 09.02.09 18:22 
user profile iconOakley hat folgendes geschrieben Zum zitierten Posting springen:
das mit dem canvas haben wir genomm weils für uns am einfachsten aussah ^^
Zu dem Canvas habe ich auch nichts geschrieben, auch wenn eine TPaintBox und deren Canvas da sinnvoller wäre.

user profile iconOakley hat folgendes geschrieben Zum zitierten Posting springen:
ansonsten soll es eben das ganze in schritten per timer (also pro sekuinde einen schirtt) zeigen wie der algortihmus jeweils abläuft.
und der hängt sich vermutlich grad aus dem grund, dass es ne endlosschleife is, auf oder?
Richtig, wobei du in einer Schleife mit Application.ProcessMessages / Delay statt einem Timer arbeiten könntest, damit der Rechner für die Simulation nicht hängt.

Und Crossposts solltest du angeben, damit man schauen kann was andere vielleicht an anderer Stelle schon dazu geschrieben haben...
www.delphipraxis.net/post999191.html
Oakley Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 09.02.09 18:30 
Jap ok...also Crosspost hast du ja jetz schon reingeworfen...hoffe das reicht...sosnt würd ich meins nochma editieren.
Aber das mit dem Delay schnall ich ehrlich gesagt nich wirklich bisher. :-(
wär aber cool wenn du mir verraten könntest wie ichs trotzdem mit dem Timer hinbekommen kann.
Hab das was zu ändern war schonmal geändert...aber bisher zeichnet er trotzdem nur den 1. Punkt und noch noch weiter. :-(
Oakley Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 02.03.09 21:50 
Alle Probs gelöst!
*Closed*
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Mo 02.03.09 22:10 
und wie?
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Di 03.03.09 00:06 
Es wäre hilfreich von dir wenn du deine Lösung posten würdest, damit Leute die irgendwann vor einem ähnlichem Problem stehen eine Hilfe haben. ;)

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.