java 数学函数绘图_数学的艺术——迭代函数下的图案(Java绘图)

迭代,其实就是一个重复反馈的过程,利用旧值推新值,即:xn+1=f(xn)。

当我们要在一个平面上绘图的时候就需要一个坐标(x,y),我们只要把每一个迭代后的(xn+1,yn+1)绘制出来就好了。

Maple Leaf:  xn+1 = a xn + b yn + e

yn+1 = c xn + d yn + f

参数:

set 1 set 2 set 3 set 4

a 0.1400 0.4300 0.4500 0.4900

b 0.0100 0.5200 -0.4900 0.0000

c 0.0000 -0.4500 0.4700 0.0000

d 0.5100 0.5000 0.4700 0.5100

e -0.0800 1.4900 -1.6200 0.0200

f -1.3100 -0.7500 -0.7400 1.6200

TREE:xn+1 = axn + byn + e

yn+1 = cxn + dyn + f

参数:

set 1 set 2 set 3 set 4

a 0.0100 -0.0100 0.4200 0.4200

b 0.0000 0.0000 -0.4200 0.4200

c 0.0000 0.0000 0.4200 -0.4200

d 0.4500 -0.4500 0.4200 0.4200

e 0.0000 0.0000 0.0000 0.0000

f 0.0000 0.4000 0.4000 0.4000

TREE的代码(在MouseListener中实现)

1 importjava.awt.Color;2 importjava.awt.Graphics;3 importjava.awt.event.MouseEvent;4 importjava.awt.event.MouseListener;5 importjava.util.Random;6

7 public class Listener implementsMouseListener {8 Graphics g;9 double[] a = {0.0100,-0.0100,0.4200,0.4200};10 double[] b = {0.0000,0.0000,-0.4200,0.4200};11 double[] c = {0.0000,0.0000,0.4200,-0.4200};12 double[] d = {0.4500,-0.4500,0.4200,0.4200};13 double[] e1 = {0.0000,0.0000,0.0000,0.0000};14 double[] f = {0.0000,0.4000,0.4000,0.4000};15

16 @Override17 public voidmouseClicked(MouseEvent e) {18 //TODO Auto-generated method stub

19 double x = 0 , y = 0;20 Random t = newRandom();21 Color cl = new Color(200,70,43);22 g.setColor(cl);23 for (int i = 0 ; i < 1500000 ; i++)24 {25 int n = t.nextInt(499)%4;26 double tempx = a[n]*x+b[n]*y+e1[n];27 double tempy = c[n]*x+d[n]*y+f[n];28 x =tempx;29 y =tempy;30 int px = (int)(tempx*500)+e.getX();31 int py = -((int)(tempy*500)+e.getY())+3*e.getX();32 g.drawLine(px, py, px, py);33

34 }35 }36

37 @Override38 public voidmousePressed(MouseEvent e) {39 //TODO Auto-generated method stub

40

41 }42

43 @Override44 public voidmouseReleased(MouseEvent e) {45 //TODO Auto-generated method stub

46

47 }48

49 @Override50 public voidmouseEntered(MouseEvent e) {51 //TODO Auto-generated method stub

52 g.setColor(Color.white);53 g.fillRect(0, 0, 800, 800);54 }55

56 @Override57 public voidmouseExited(MouseEvent e) {58 //TODO Auto-generated method stub

59

60 }61 }

效果:

9414cf2cf830071bc1258621ea3ea2ad.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值