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