// -----------------------------------------------------------------------
// Inicializace semínka - počátečních bodů ve fraktálním objektu, ke
// kterým se v dalším 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
} // na kružnici
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
} // na kružnici
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
} // na kružnici
break;
default:
pixels[hh][wh]=true;
break;
}
}
// -----------------------------------------------------------------------
// Konec metody initSeed().
// -----------------------------------------------------------------------
Zpět na úvodní stránku demonstračního příkladu Diffuse3