运用递归算法——分形(以及Applet的配置问题)

本文介绍了一种利用递归算法绘制分形图形的方法。通过确定两点并不断细分,最终生成复杂的分形图案。文章详细解释了递归过程,并提供了在Applet中实现的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

采用递归算法来画分形图

先看下运行结果:


分析

1.首先我们需要两个点(x1,y1,x2,y2),来确定一天直线,创建一个方法randFactary

2.确定直线中点(midx,midy),在其中点垂直方向上移或下移一定的距离,再调用方法randFactary,那么就体现出了递归思想

步骤:

1.创建一个有参方法

需要参数

leftX,leftY,rightX,rightY(两点确定一条直线)

创建Graphics对象:调用相应的方法来画图

public static void randFractal(int leftX,int leftY,int rightX,int rightY,Graphics drawArea){
	int limit = 10;
	int midX,midY;
	int delta;
	if(rightX - leftX <= limit){
		drawArea.drawLine(leftX,leftY,rightX,rightY);
	}else{
		midX = (rightX + leftX)/2;
		midY = (leftY + leftX)/2;
		delta = (int)((Math.random()-0.5)*(rightX-leftX));
		midY += delta;
		randFractal(leftX,leftY,midX,midY,drawArea);
		randFractal(midX,midY,rightX,rightY,drawArea);
}

2.将随机分形放入到Applet中

(采用Applet绘制固定的图形)

用init方法初始化该IGraphics对象在那个Image对象上绘图,将drawArea设置成一个可在Image上绘制的Graphics对象,那么想要在小应用程序上绘制一个随机分形,那么就需要用Graphics对象的drawArea实现。

public void init(){
			int height = getSize().height;
			int width = getSize().width;
			display = createImage(width,height);
			drawArea = display.getGraphics();
			randFractal(0,height/2,width,height/2,drawArea);
		}

当Applet开始执的时候(不需要Main方法,函数才执行),就会自动调用init方法,那么该方法就会将randFractal图像放入displa Image中

要真正的显示图像,需要调用paint方法

public void paint(Graphics g){
			g.drawImage(display, 0, 0, null);
		}

其实在这个例子中,最主要还是想表明一个“递归思想”,在这个例子中,运用到的递归思想

当然,在这个例子中,还考虑到一些Applet的相关用法以及在启用程序时,遇到程序为初始化问题

在使用Applet时,如果出现

警告: 无法读取 AppletViewer 属性文件: C:Users谭春霞.hotjavaproperties。请使用默认值。

可能需要配置一些东西,我在这儿简单说下

1.控制行(window+R)在其中输入 policytool

2

3.选择添加策略条目

.

4.点击进入,选择第一个选项

5.然后就是确定

6.点击文件,选择另存为,就是他推荐的储存路径就好文件名改为 .policy即可

.

那基本就可以了!!!就可以再返回去运行一下。

如果在使用Applet时,界面出现 启动:未初始化小应用程序

选择项目,选择properties






估计就没有什么大问题了

运行结果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值