Java学习 之 画图板 分形

本文分享了使用Java编程实现的两组分形图案绘制方法。第一组公式通过迭代生成抽象图形,调整参数可呈现不同效果;第二组公式则描绘出一棵树的形状,通过随机选取参数集合迭代生成森林般的复杂图案。文章详细展示了代码实现过程及部分运行结果。

Java学习 之 画图板 分形

第一组公式

在这里插入图片描述

public void drawDream1(double a,double b,double c,double d){
//函数传入四个常量
  double x=0f;
  double y=0f;
  for(int i=0;i<25500;i++){
   //公式
   double temx=Math.sin(a*y)+c*Math.cos(a*x);
   double temy=Math.sin(b*x)+d*Math.cos(b*y);
   //对x1,y1转型,放大,移动到屏幕坐标系
   int x1=(int)(temx*130+400);//130是放大多少倍,400是起始坐标
   int y1=(int)(temy*130+400);
   System.out.println("x1: "+x1+" y1: "+y1);
   //颜色根据迭代次数加深
   g.setColor(new Color(0,0,i/100));
   g.drawLine(x1, y1, x1, y1);
   x=temx;//下一次迭代
   y=temy;
  }
 }

调用

drawDream1(-1.8,-2.0,-0.5,-0.9);

在这里插入图片描述
换组参数调用

drawDream1(-1.7,1.8,-1.9,-0.4);

长这样↓
在这里插入图片描述
反正都好丑

第二组公式

公式丢了找不到,反正画出来一棵树,参数一堆

//这是参数,七组,每次迭代随机取一组代入
double[][] cs={{0.0500,0.0000,0.0000,0.4000,-0.0600,-0.4700},
          {-0.0500,0.0000,0.0000,-0.4000,-0.0600,-0.4700},
          {0.0300,-0.1400,0.0000,0.2600,-0.1600,-0.0100},
          {-0.0300,0.1400,0.0000,-0.2600,-0.1600,-0.0100},
          {0.5600,0.4400,-0.3700,0.5100,0.3000,0.1500},
          {0.1900,0.0700,-0.1000,0.1500,-0.2000,0.2800},
          {-0.3300,-0.3400,-0.3300,0.3400,-0.5400,0.3900}};
public void drawTree(int rx,int ry){
  double x=0f;
  double y=0f;
  
  Random rand = new Random();
  for(int i=0;i<25500;i++){
   int k=rand.nextInt(7);
   System.out.println(k);
   //公式
   double temx=cs[k][0]*x+cs[k][1]*y+cs[k][4];
   double temy=cs[k][2]*x+cs[k][3]*y+cs[k][5];
   //对x1,y1转型,放大,移动到屏幕坐标系
   int x1=(int)(temx*130+rx);
   int y1=(int)(-temy*130+ry);//把图上下颠倒,树反了233
   System.out.println("x1: "+x1+" y1: "+y1);
   //颜色根据迭代次数加深
   g.setColor(new Color(0,0,i/100));
   g.drawLine(x1, y1, x1, y1);
   x=temx;
   y=temy;
  }
 }

画出来长这个亚子↓
在这里插入图片描述
好看所以画了一片森林
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值