// altern/aufloesung // von marek lode // eine Animation auf Grundlage des Diamond-Square-Algorithmus // mit der linken Maustaste startet und stoppt man die Animation // mit der rechten Maustaste beginnt die Animation von vorn // erstellt: 29. Dezember 2006 int groesse; int breite = 2; public int[][] feld_rausch;//,feld_max; public float[][] feld_ausgabe; public float[][] feld_ausgabe2; boolean schleife = true; // gleich mit der Animation beginnen? => mit Linker Maustaste umschalten public void setup() { size(512+8, 128+8, JAVA2D); frameRate(10); if (!schleife) noLoop(); if (width>height) groesse = width; else groesse = height; while ( breite < groesse ) breite *= 2; breite += 1; feld_rausch = new int[width][height]; feldrauschnoise(int(random(0,10000))); feld_ausgabe = new float[width][height]; feld_ausgabe2 = new float[width][height]; startaufstellung(); } // setup() public void startaufstellung() { for (int j=0; jmax ) max=feld_rausch[j][i]; else if ( feld_rausch[j][i]= 2){ for (int i=0; i < ( (breite-1)/b ); i++){ // diamondStep. alle quadrat nehmen und mittelpkt auslenken for (int j=0; j< ( (breite-1)/b ); j++){ aktX = (i*b); aktY = (j*b); farbe = ( feldf[aktX][aktY] + feldf[aktX+b][aktY] + feldf[aktX][aktY+b] + feldf[aktX+b][aktY+b] ) / 4; feldf[aktX+bh][aktY+bh] = farbe + ((float)(random( (-b-koernung)*1.414f , (b+koernung)*1.414f )));//Math.sqrt(b)*1.41421356f); -b*0.35355f,b*0.35355f if (feldf[aktX+bh][aktY+bh]>max) max=feldf[aktX+bh][aktY+bh]; if (feldf[aktX+bh][aktY+bh]max) max=feldf[aktX+bh][aktY]; if (feldf[aktX+bh][aktY]max) max=feldf[aktX][aktY+bh]; if (feldf[aktX][aktY+bh]feld_rausch[a][b]) min=feld_rausch[a][b]; if (max255) feld_ausgabe2[a][b]=255; if (feld_ausgabe2[a][b]200) { schleife=false; noLoop(); // println("ende!"); } } // function ausbreitenMinMax()