import java.applet.Applet; import java.awt.image.*; import java.awt.Graphics; import java.awt.Rectangle; import java.util.Random; import java.lang.Math; public class RandomImage extends Applet { public void paint(Graphics g) { g.drawString("Generating...", 20, 20); Random random = new Random(); Rectangle size = g.getClipBounds(); int sizeX = size.width; int sizeY = size.height; class colorint { public int r; public int g; public int b; public colorint(int red, int grn, int blu) {r=red;g=grn;b=blu;} } colorint[][] imgBuf = new colorint[sizeX][sizeY]; for(int x=0; xsizeX)?sizeX:x+radius); u++) for(int v=(y-radius<0)?0:y-radius; v<((y+radius>sizeY)?sizeY:y+radius); v++) { double r = Math.sqrt((double)((u-x)*(u-x)+(v-y)*(v-y))); double opac = 0.5; switch (opacityFunction) { case 0: opac = Math.abs(1 - Math.log(1+(Math.E-1)*r/maxrad)); break; case 1: opac = Math.abs(1-(2*r/maxrad) < 0 ? 0 : 1-(2*r/maxrad)); break; case 2: opac = (r/maxrad >= 0.75) ? Math.abs(1 - Math.log(1+(Math.E-1)*r/maxrad)) : Math.abs(random.nextGaussian() * Math.sin(r)); break; } if (random.nextDouble() < 2*r/maxrad) opac *= 1 + random.nextGaussian(); int oldred = imgBuf[u][v].r; int oldgrn = imgBuf[u][v].g; int oldblu = imgBuf[u][v].b; int newred = ((int)(opac*(double)red + (1-opac)*(double)oldred)); int newgrn = ((int)(opac*(double)grn + (1-opac)*(double)oldgrn)); int newblu = ((int)(opac*(double)blu + (1-opac)*(double)oldblu)); imgBuf[u][v].r = newred; imgBuf[u][v].g = newgrn; imgBuf[u][v].b = newblu; } } } BufferedImage img = new BufferedImage(sizeX, sizeY, BufferedImage.TYPE_INT_ARGB); for(int x=0; x