// ----------------------------------------------------------------------- // Vlastní aplikace druhého algoritmu difúze, který je založen // na připojování bodů generovaných náhodně v omezeném prostoru - // - posuvné oblasti. // ----------------------------------------------------------------------- private void applyDiffuse() { int counter=0; // průběžně nulované počitadlo vygenerovaných bodů int points=0; // počitadlo všech bodů int xi, yi; // pozice bodů v posuvné oblasti int y; // relativní pozice v posuvné oblasti int boxStart=(width-boxWidth)>>1; // začátek vertikální pozice oblasti // posuvný box (oblast) postupně projde všemi řádky // v pomocné rastrové binární mřížce for (yi=height-boxHeight-1; yi>1; yi--) { // v posuvném boxu se vždy musí generovat // konstantní počet bodů připojených k objektu for (int point=0; point<maxPointsInBox; point++) { // najít takový bod, který se dotkne již nakresleného // (vygenerovaného) obrazce do { // vygenerovat bod na náhodné pozici // v posuvné oblasti (boxu) xi=(int)(Math.random()*(double)(boxWidth)+boxStart); y=(int)(Math.random()*(double)(boxHeight)); } while (!neighboor(neighboorType, xi, y+yi)); // byl nalezen bod, který se dotýká fraktálního objektu putPoint(xi, y+yi); // připojit nalezený bod k obrazci points++; // zvýšit počitadlo vygenerovaných bodů counter++; if (counter==50) { // průběžný výpis práce programu do okna label.setText("Points: "+String.valueOf(points)+" y: "+String.valueOf(yi)); counter=0; } // end if } // end for point } // end for yi } // ----------------------------------------------------------------------- // Konec metody applyDiffuse(). // -----------------------------------------------------------------------
Zpět na úvodní stránku demonstračního příkladu Diffuse2