我的歇尔宾斯基三角形是在一个绘图板中作为一个类被调用的,下边是它的具体代码:
import java.awt.Graphics;
public class Sierpinski {
//d为等边三角形边长,x,y为最外边正三角形左下角点的坐标
public void drawtriangle(Graphics g,int d,int x,int y) {
//画第一个三角形
g.drawLine(x, y, x+d, y);
g.drawLine(x+d, y, x+d/2, y-(int)Math.sqrt(3)*d);
g.drawLine(x, y, x+d/2, y-(int)Math.sqrt(3)*d);
}
public void drawsierpinski(Graphics g,int d,int x,int y,int n) {
n--;
d=d/2;
x=x+d;
//绘制三角形中的倒三角形
g.drawLine(x, y, x+d/2, y-(int)Math.sqrt(3)*d);
g.drawLine(x+d/2, y-(int)Math.sqrt(3)*d, x-d/2, y-(int)Math.sqrt(3)*d);
g.drawLine(x-d/2, y-(int)Math.sqrt(3)*d, x, y);
if(n<=0) {
return;
}
//递归绘制小三角形
drawsierpinski(g,d,x,y,n);
drawsierpinski(g,d,x-d,y,n);
drawsierpinski(g,d,x-d/2,y-(int)Math.sqrt(3)*d,n);
}
}
在监听器中调用:
if(shapeTypeStr.equals("Sierpinski")) {
Sierpinski sier = new Sierpinski();
sier.drawtriangle(g, 200,150, 250);
sier.drawsierpinski(g, 200, 150, 250, 3);
}