// -----------------------------------------------------------------------
// 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