// -----------------------------------------------------------------------
// Vlastní aplikace třetího algoritmu difúze
// -----------------------------------------------------------------------
private void applyDiffuse() {
boolean doneInnerLoop;
int counter=0;
int points=0;
int xi, yi;
int y;
int boxStart=(width-boxWidth)>>1;
// smyčka, pomocí které projde posuvný box postupně všemi řádky
// v pomocné rastrové mřížce
for (yi=height-boxHeight-1; yi>1; yi--) {
// nastavit příznak ukončení vnitřní smyčky
doneInnerLoop=false;
// najít v posuvném boxu alespoň jeden bod, který přísluší
// ke vznikajícímu fraktálnímu objektu
// (maximální počet bodů je uložen v proměnné maxPoints)
for (int point=0; point<maxPoints; point++) {
do {
// vygenerovat bod na náhodné pozici v posuvném boxu
xi=(int)(Math.random()*(double)(boxWidth)+boxStart);
y=(int)(Math.random()*(double)(boxHeight));
// pokud se vygenerovaný bod dotkl stávajícího objektu
if (neighboor(neighboorType, xi, y+yi)) {
putPoint(xi, y+yi); // přidat bod k objektu
doneInnerLoop=true; // a nastavit příznak zpracování
points++;
break;
}
} while (!doneInnerLoop);
counter++;
if (counter==50) { // průběžný výpis práce programu
label.setText("Points: "+String.valueOf(points)+" y: "+String.valueOf(yi));
counter=0;
} // end if
} // end for point
} // end for
}
// -----------------------------------------------------------------------
// Konec metody applyDiffuse().
// -----------------------------------------------------------------------
Zpět na úvodní stránku demonstračního příkladu Diffuse3