Wysłane przez lukasz w
- Wielkość pliku: 650KB
import java.awt.Color;
import java.awt.image.*;
import java.util.Random;
// Trójkąt Sierpińskiego
public class f05
{
public BufferedImage draw()
{
int I = 100000000;
int WIDTH = 10000;
int HEIGHT = 10000;
int IMG_TYPE = java.awt.image.BufferedImage.TYPE_INT_RGB;
BufferedImage image = new BufferedImage(WIDTH, HEIGHT, IMG_TYPE);
ColorModel model = image.getColorModel();
WritableRaster raster = image.getRaster();
Color fcolor;
double x1, x = 0;
double y = 0;
int z = 0xffffff;
fcolor = new Color(z);
// maksymalna ilosc przeksztalcen
int MIP = 3;
double[] AA = {0.5, 0.5, 0.5};
double[] AB = {0, 0, 0};
double[] AC = {0, 0, 0};
double[] AD = {0.5, 0.5, 0.5};
double[] AE = {0, 0, 0.5};
double[] AF = {0, 1, 0.5};
// Skalowanie
double xl = -0.1;
double yl = -0.1;
double xr = 2.1;
double yr = 1.1;
double A = WIDTH / (xr - xl);
double B = -A * xl;
double C = HEIGHT / (yl - yr);
double D = -C * yr;
Random random = new Random();
int RAND = 0;
for(int i = 0; i < I; i++)
{
RAND = random.nextInt(MIP);
x1 = AA[RAND] * x + AB[RAND] * y + AE[RAND];
y = AC[RAND] * x + AD[RAND] * y + AF[RAND];
x = x1;
// punkt na płótno
int x2 = (int)(A * y + B);
int y2 = (int)(C * x + D);
if(x2 < WIDTH && y2 < HEIGHT && x2 >= 0 && y2 >= 0)
{
raster.setDataElements(x2, y2,
model.getDataElements(fcolor.getRGB(), null));
}
}
return image;
}
}
