迭代分形是一种数学上的概念,是指通过一种简单的规则,不断重复运算,最终得到复杂的图形。我们通过画板来实现图像的生成,迭代图像即通过一定的坐标推算公式,从初始坐标点不断获取新的坐标值并打点,修改点迹颜色以形成一个有深浅变化的图像。用代码实现自然界的美,生成一系列二维,三维的图像,它们不是杂乱无章的,而是具有一定规则的富有美感的图像。
首先创建一个窗体类,这样可以在窗体类中重写容器的paint方法。添加和创建一些基本组件:画板标题、画板大小、关闭方式等。
public class DrawPad extends JFrame{
public DrawPad(){
setTitle ("迭代分形");
setSize (800,800);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setVisible (true);
setLocationRelativeTo (null);
}
要想在窗体中呈现一些图案还需要添加一些数据,利用数学函数的方式,利用循环不断的更新点的坐标,使成千上万的点组成我们需要创建的图案。
public void paint(Graphics g){
super.paint (g);
drawIFS_01 (g);
public void drawIFS_01(Graphics g){
double a = -1.8, b = -2.0, c = -0.5, d = -0.9;
double xn = 0, yn = 0;
for(int i = 0; i < 100000; i++){
double tempx = Math.sin (a * yn) + c * Math.cos (a * xn);
double tempy = Math.sin (b * xn) + d * Math.cos (b * yn);
// 迭代给下一次 xn yn
xn = tempx;
yn = tempy;
int px = (int) (tempx * 100) + 400;
int py= (int) (tempy * 100) + 400;
g.setColor (Color.blue);
g.drawLine (px, py, px, py);
}
}
public static void main