První 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 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 hh1=height/3;
int hh2=2*height/3;
switch (seedShape) {
case SeedShape.OnePoint: // generuje se pouze jeden bod
pixels[hh][wh]=true;
break;
case SeedShape.TwoPoints: // generují se dva
pixels[hh][wh1]=true; // symetricky postavené body
pixels[hh][wh2]=true;
break;
case SeedShape.ThreePoints: // generují se tři
pixels[hh1][wh]=true; // symetricky postavené body
pixels[hh2][wh1]=true;
pixels[hh2][wh2]=true;
break;
case SeedShape.FourPoints: // generují se čtyři body
pixels[hh1][wh1]=true; // ve vrcholech čtverce
pixels[hh2][wh1]=true;
pixels[hh1][wh2]=true;
pixels[hh2][wh2]=true;
break;
case SeedShape.Line: // generuje se kontinuální
for (int i=wh1; i<=wh2; i++) // úsečka uprostřed bitmapy
pixels[hh][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[hh1][i]=true;
pixels[hh2][i]=true;
}
for (int i=hh1; i<=hh2; 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=hh+r*Math.sin((double)i);
pixels[(int)x][(int)y]=true;
}
}
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=hh+r*Math.sin((double)i);
pixels[(int)x][(int)y]=true;
}
}
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=hh+r*Math.sin((double)i);
pixels[(int)x][(int)y]=true;
}
}
break;
default:
pixels[hh][wh]=true;
break;
}
}
// -----------------------------------------------------------------------
// Konec metody initSeed().
// -----------------------------------------------------------------------