JAVA利用递归在两个坐标点之间画出多条折线,以两个坐标点的中点,画折线,但两个点之间很坐标距离较小时,停止画图。
package edu.zjut.digui;
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;
public class Fratal extends Applet{
private Image display;
private Graphics drawingArea;
@Override
public void init() {
System.out.println("初始化");
int height = getSize().height;
int width = getSize().width;
display = createImage(height, width);
drawingArea = display.getGraphics();
//没有将image添加到Applet小程序界面上
randomFractal(0,height/2,width,height/2,drawingArea);
}
public void paint(Graphics g)
{
g.drawImage(display,0,0,null);
}
public static void randomFractal
( int leftX,
int leftY,
int rightX,
int rightY,
Graphics drawingArea
)
{
final int stop = 4; //小于等于4个像素点的时候停止会话
int midX,midY;
int delta;
if(rightX-leftX<=stop)
{
drawingArea.drawLine(leftX, leftY,rightX,rightY);
}
else
{
midX = (leftX+rightX)/2;
midY = (leftY+rightY)/2;
delta =(int)((Math.random()-0.5)*(rightX-leftX));
midY+=delta;
randomFractal(leftX, leftY,midX, midY, drawingArea);
randomFractal(midX,midY,rightX,rightY, drawingArea);
}
}
}