Autor Beitrag
juge
Hält's aus hier
Beiträge: 1

WIN XP SP2
D7 Enter.
BeitragVerfasst: Mo 02.05.05 19:36 
Hi

Ich soll für die Schule ein Programm entwickeln welches Rechtecke in eine Paintbox zeichnet.
Das ganze soll nach einem Button Click wie folgt aussehen:

img79.echo.cx/my.php...grammrekursiv6eh.png

Die Kntenlänge der PaintBox soll 500 Pixel betragen. Die Kantenlänge des größten Rechteckes 250, die der nächsten vier 125 usw.. Halt immer die Kantenlänge ganzzahlig durch 2 um auf die des nächsten zu kommen. Eine Mindest-Kantenlänge(1-250) soll zusätzlich vom Benutzer eingegeben werden können. Die Eckpunckte der Rechtecke sind die Mittelpunckte der Rechtecke die direkt dahinter liegen. Das ganze soll Rekursiv gelösst werden.
Ich grübbel jetzt seit 4 Tagen an einer Formel für dieses Problem. Aber mir gelingt einfach nichts Vernünftiges. Ihr seid meine letzte Hoffnung :wink:

Bitte Helft Mir!

grüsse
juge

Moderiert von user profile iconraziel: img- durch url-Tags ersetzt
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 02.05.05 19:42 
es gibt doch auch dieses dingels mit den 3 dreiecken die aus 3 dreiecken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, die aus 3 dreicken bestehen, naja und so weiter eben :D
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Mo 02.05.05 19:54 
Hallo und :welcome: im DF!

user profile iconF34r0fTh3D4rk: Das Sierpinski-Dreieck kannst du mit (x and y <> 0) oder so ähnlich zeichnen. Das Dreieck wird also üblicherweise anders berechnet (nicht per Rekursion).

user profile iconjuge: Wie können wir dir jetzt helfen? Erwartest du von uns die Komplettlösung? Es handelt sich ja nur um wenige Zeilen... Ich machs mal so: Hier einfach mal ein Code-Gerüst, welches du vervollständigen kannst. Ich will dir ja nicht deine Hausaufgaben komplett lösen! Wenn du es richtig vervollständigst, erhältst du pixelgetreu das Originalbild. :)

ausblenden 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:
type
 SquarePosition = (spRoot, spUpperLeft, spUpperRight, spLowerLeft, spLowerRight);

procedure RecursiveRect(Canvas: TCanvas; CX, CY, Size: Integer; Position: SquarePosition);
// Diese Prozedur zeichnet ein Quadrat der Kantenlänge "Size" mit Zentrum "CX", "CY".
// Ausserdem werden auch die Kinderquadrate gezeichnet (per Selbstaufruf).
begin
 with Canvas do
 begin
  if ... then // Kinderquadrate nur zeichnen, wenn sie nicht schon zu klein sind
  begin // Kinderquadrate zeichnen
   if Position <> spLowerRight then
    RecursiveRect(Canvas, ...); // Halb so grosses Quadrat am linken oberen Eckpunnkt zeichnen
   if Position <> spLowerLeft then
    RecursiveRect(Canvas, ...);
   if Position <> spUpperRight then
    RecursiveRect(Canvas, ...);
   if Position <> spUpperLeft then
    RecursiveRect(Canvas, ...);
  end;
  Rectangle(CX-Size div 2,CY-Size div 2,CX+Size div 2,CY+Size div 2); // sich selbst zeichnen
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 with PaintBox1 do
  RecursiveRect(Canvas, Width div 2, Height div 2, Width div 2, spRoot);
end;