Druhá demonstrační aplikace pro simulaci difúze

Zdrojový text metody initSeed()


// -----------------------------------------------------------------------
// Inicializace semínka - počátečních bodů ve fraktálním objektu, ke kterým
// se v průběhu simulace difúze přidávají další body.
// -----------------------------------------------------------------------
private void initSeed() {
    int wh=width/2;
    int hh=height/2;
    int wh1=width/3;
    int wh2=2*width/3;
    int hh2=2*height/3;
    switch (seedShape) {
        case SeedShape.OnePoint:                // generuje se pouze jeden bod
            pixels[height-1][wh]=true;
            break;
        case SeedShape.TwoPoints:               // generují se dva
            pixels[height-1][wh1]=true;         // symetricky postavené body
            pixels[height-1][wh2]=true;
            break;
        case SeedShape.ThreePoints:             // generují se tři
            pixels[height-1][wh]=true;          // symetricky postavené body
            pixels[height-1][wh1]=true;
            pixels[height-1][wh2]=true;
            break;
        case SeedShape.FourPoints:              // generují se čtyři body
            pixels[height-1][width/5]=true;     // symetricky postavené body
            pixels[height-1][2*width/5]=true;
            pixels[height-1][3*width/5]=true;
            pixels[height-1][4*width/5]=true;
            break;
        case SeedShape.ShortBottomLine:         // generuje se kontinuální
            for (int i=wh1; i<=wh2; i++)        // krátká úsečka na spodním okraji bitmapy
                pixels[height-1][i]=true;
            break;
        case SeedShape.BottomLine:              // generuje se kontinuální
            for (int i=0; i<width; i++)         // úsečka na spodním okraji bitmapy
                pixels[height-1][i]=true;
            break;
        case SeedShape.Square:                  // generuje se čtverec
            for (int i=wh1; i<=wh2; i++) {      // uprostřed bitmapy
                pixels[hh2][i]=true;
                pixels[height-1][i]=true;
            }
            for (int i=hh2; i<=height-1; i++) {
                pixels[i][wh1]=true;
                pixels[i][wh2]=true;
            }
            break;
        case SeedShape.Border:                  // generuje se okraj
            for (int i=0; i<width; i++) {       // okolo celé bitmapy
                pixels[0][i]=true;
                pixels[height-1][i]=true;
            }
            for (int i=0; i<height; i++) {
                pixels[i][0]=true;
                pixels[i][width-1]=true;
            }
            break;
        case SeedShape.SmallCircle:             // generuje se malá kružnice
            {                                   // uprostřed bitmapy
            double r=wh/4.0;
            for (int i=0; i<1000; i++) {
                double x=wh+r*Math.cos((double)i);
                double y=height-r-1+r*Math.sin((double)i);
                pixels[(int)y][(int)x]=true;
            }
            pixels[height-1][wh]=true;          // pro jistotu zapsat i nejspodnější bod
            }
            break;
        case SeedShape.NormalCircle:            // generuje se větší kružnice
            {                                   // uprostřed bitmapy
            double r=wh/2.0;
            for (int i=0; i<1000; i++) {
                double x=wh+r*Math.cos((double)i);
                double y=height-r-1+r*Math.sin((double)i);
                pixels[(int)y][(int)x]=true;
            }
            pixels[height-1][wh]=true;          // pro jistotu zapsat i nejspodnější bod
            }
            break;
        case SeedShape.BigCircle:               // generuje se velká kružnice
            {                                   // uprostřed bitmapy
            double r=wh-9.0;
            for (int i=0; i<1000; i++) {
                double x=wh+r*Math.cos((double)i);
                double y=height-r-1+r*Math.sin((double)i);
                pixels[(int)y][(int)x]=true;
            }
            pixels[height-1][wh]=true;          // pro jistotu zapsat i nejspodnější bod
            }
            break;
        default:
            pixels[hh][wh]=true;
            break;
    }
}

// -----------------------------------------------------------------------
// Konec metody initSeed().
// -----------------------------------------------------------------------

Zpět na úvodní stránku demonstračního příkladu Diffuse2


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