Java Source Code for Sierpinski Carpet Fractal
import java.applet.*;
import java.awt.*;
import java.util.Random;
class SierpPlot extends Canvas {
private int max_iterations = 250000;
private void plot(Graphics g, int x, int y, int plotColor) {
g.setColor(Color.blue);
g.drawLine(x, y, x, y);
}
public void paint(Graphics g) {
double X=1.0, Y=1.0, Xnew=1.0, Ynew=1.0, hazard;
Random ran = new Random();
int iter, xplot, yplot, plotColor=0;
for (iter=0;iter<=max_iterations;iter++) {
hazard = 8*ran.nextDouble();
if(hazard<1.0) {
Xnew = X/3;
Ynew = Y/3;
}
else if (hazard<2.0){
Xnew = X/3 + .6666666666666666;
Ynew = Y/3 + .6666666666666666;
}
else if (hazard<3.0) {
Xnew = X/3 + .6666666666666666;
Ynew = Y/3 + .3333333333333333;
}
else if (hazard<4.0){
Xnew = X/3 + .3333333333333333;
Ynew = Y/3 + .6666666666666666;
}
else if (hazard<5.0) {
Xnew = X/3 + .3333333333333333;
Ynew = Y/3;
}
else if (hazard<6.0){
Xnew = X/3;
Ynew = Y/3 + .3333333333333333;
}
else if (hazard<7.0) {
Xnew = X/3 + .6666666666666666;
Ynew = Y/3;
}
else {
Xnew = X/3;
Ynew = Y/3 + .6666666666666666;
}
xplot = 10+(int)(400*Xnew);
yplot = 10+(int)(400*Ynew);
plot(g,xplot,yplot,plotColor);
X = Xnew;
Y = Ynew;
}
}
}
public class Sierp extends Applet {
private SierpPlot canvas;
public boolean handleEvent(Event e) {
if(e.id==Event.WINDOW_DESTROY) System.exit(0);
return super.handleEvent(e);
}
public void init() {
setLayout(new BorderLayout());
canvas = new SierpPlot();
add("Center", canvas);
}
}