递归分形树叶java代码

import java.awt.*;
import javax.swing.*;
import java.lang.*;

public class Leaf1 extends JApplet 
{
	boolean bq;//boolean 布尔类型变量,返回值flase/true
	int st, r= 255,g =255,b =255;

	public static final double PI = Math.PI/180;
	
	public void init ()
	{
		new Leaf1();
	}
	
	public void frameSet ()
	{
		Leaf1 shapes = new Leaf1 () ;
		JFrame fra = new JFrame ( "welcome") ;
		fra .getContentPane().add (shapes, BorderLayout.CENTER) ;
		
		//setsize设置组件的长宽大小,Dimension类的高度和宽度是一个整数,表明有多少个像素点。
		fra. setSize (new Dimension (670, 600) ) ;
		
		//awt中setResizable(flase)屏蔽最大化按钮
		fra. setResizable (false);
		
		//swing中setVisible(true)使控件可以显示出来
		fra. setVisible (true) ;
	}
	
	public static void main (String args[])
	{
		new Leaf1().frameSet();
	}

	/
	public void paint (Graphics g)
	{
		g.setColor (Color. black) ;
		drawLeaf1(g, 300, 500, 100, 270) ;
	}

	public void drawLeaf1(Graphics g, double x, double y,double L, double a)
	{
		double x1, x2, x1L, x2L, x1R, x2R;
		double y1, y2, y1L, y2L, y1R, y2R;
		
		float B=50;
		float C=9;
		float s1=2;
		float s2=3;
		float s3=1.2f;
		
		if(L>s1)
		{
			x2=x+L*Math.cos(a*PI);
			y2=y+L*Math.sin(a*PI);
			x2R=x2+L/s2*Math.cos((a+B)*PI);
			y2R=y2+L/s2*Math.sin((a+B)*PI);
			x2L=x2+L/s2*Math.cos((a-B)*PI);
			y2L=y2+L/s2*Math.sin((a-B)*PI);
			
			x1=x+L/s2*Math.cos(a*PI);
			y1=y+L/s2*Math.sin(a*PI);
			x1L=x1+L/s2*Math.cos((a-B)*PI);
			y1L=y1+L/s2*Math.sin((a-B)*PI);
			x1R=x1+L/s2*Math.cos((a+B)*PI);
			y1R=y1+L/s2*Math.sin((a+B)*PI);
			
			g.drawLine((int)x,(int)y,(int)x2,(int)y2);
			g.drawLine((int)x2,(int)y2,(int)x2R,(int)y2R);
			g.drawLine((int)x2,(int)y2,(int)x2L,(int)y2L);
			g.drawLine((int)x1,(int)y1,(int)x1L,(int)y1L);
			g.drawLine((int)x1,(int)y1,(int)x1R,(int)y1R);
			
			drawLeaf1(g,x2,y2,L/s3,a+C);
			drawLeaf1(g,x2R,y2R,L/s2,a+B);
			drawLeaf1(g,x2L,y2L,L/s2,a-B);
			drawLeaf1(g,x1L,y1L,L/s2,a-B);
			drawLeaf1(g,x1R,y1R,L/s2,a+B);
		}
	}	
}	

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值