Ich schaffs grad einfach nicht einen Algorithmus zusammenzubauen,
der mir eine pyramidenförmige Tabelle ausspuckt, also die Positionen
sowei Breite und Höhe der Teilstücke.
Also es soll so aussehen wie hier (bloß -90 grad gedreht):
Dabei gehen immer 2 senkrechte Linien in eine waagerechte zusammen,
bis am Ende nur noch eine Linie rauskommt.
Gegeben habe ich eine Startposition x,y wo die ganze Pyramide hingezeichnet werden soll,
die Breite eines Startblocks, sowie die Blockhöhe (ist ja konstant) und den Abstand
zwischen 2 Blöcken in der Anfangsreihe. Die Anzahl der Blöcke ist 8, also 16 Linien.
Zum zeichnen eines Blocks habe ich diese Methode:
Mit den gegebenen Anfangswerten kann man ja jetzt die restlichen Positionen,
Anzahl und Breiten der darüberliegenden Blöcke berechnen.
ich hab das auch einigermaßen hinbekommen, aber stimmen die Abstände
nicht...
Ich hab erst gedacht dass die Blockbreite bei jeder Stufe sich verdoppelt,
dem ist aber nicht so, da es bei mir so nicht stimmt.
Jetzt komm ich grad echt nciht mehr weiter, da müsste es doch
einfache Lösungswege geben?!
Bis jetzt habe ich mir das zusammengefriemelt:
Das Ergebnis sieht so aus:
Könnt ihr mir vielleicht helfen?
Hab jetzt schon verschiedene Varianten ausprobiert,
und für jeden Block eine Position vorgeben wäre ja nicht anpassungsfähig
sowie ziemlich aufwendig.
Scheint mir auf jeden fall berechnungsfähig.
aber wie?
mfg BRoll
der mir eine pyramidenförmige Tabelle ausspuckt, also die Positionen
sowei Breite und Höhe der Teilstücke.
Also es soll so aussehen wie hier (bloß -90 grad gedreht):

Dabei gehen immer 2 senkrechte Linien in eine waagerechte zusammen,
bis am Ende nur noch eine Linie rauskommt.
Gegeben habe ich eine Startposition x,y wo die ganze Pyramide hingezeichnet werden soll,
die Breite eines Startblocks, sowie die Blockhöhe (ist ja konstant) und den Abstand
zwischen 2 Blöcken in der Anfangsreihe. Die Anzahl der Blöcke ist 8, also 16 Linien.
Zum zeichnen eines Blocks habe ich diese Methode:
Java:
private void paintBlock(Graphics g, int x, int y, int breite, int hoehe)
{
int strichbreite=5;
g.setColor(Color.BLACK);
g.fillRect(x,y,breite,strichbreite);
g.fillRect(x,y,strichbreite,hoehe);
g.fillRect(x+breite-strichbreite,y,strichbreite,hoehe);
}
Mit den gegebenen Anfangswerten kann man ja jetzt die restlichen Positionen,
Anzahl und Breiten der darüberliegenden Blöcke berechnen.
ich hab das auch einigermaßen hinbekommen, aber stimmen die Abstände
nicht...
Ich hab erst gedacht dass die Blockbreite bei jeder Stufe sich verdoppelt,
dem ist aber nicht so, da es bei mir so nicht stimmt.
Jetzt komm ich grad echt nciht mehr weiter, da müsste es doch
einfache Lösungswege geben?!
Bis jetzt habe ich mir das zusammengefriemelt:
Java:
int x=40;
int y=400;
int a=8;
int breite=30;
int abst=0;
int hoehe=50;
for(int i=0; i<4; i++)
{
int xp=0;
for(int h=0; h<a; h++)
{
paintBlock(g,x-breite/2+xp,y,breite*2,hoehe);
xp+=breite*2;
xp+=abst;
}
y-=hoehe;
a=a/2;
abst=(breite*4)-(breite*2);
x+=breite*1.5;
breite*=1.5;
}
Das Ergebnis sieht so aus:

Könnt ihr mir vielleicht helfen?
Hab jetzt schon verschiedene Varianten ausprobiert,
und für jeden Block eine Position vorgeben wäre ja nicht anpassungsfähig
sowie ziemlich aufwendig.
Scheint mir auf jeden fall berechnungsfähig.
aber wie?
mfg BRoll