Třetí demonstrační aplikace pro simulaci difúze

Zdrojový text metody applyDiffuse()


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


Úvodní stránka se soupisem demonstračních příkladů