graphics-iterated function system(IFS)

来源:互联网 发布:java整型数据溢出 编辑:程序博客网 时间:2024/04/28 13:09

计算机图形学中IFS的实现

 

基本思想:
1、生成随机点
2、指定变换矩阵
3、对每个点随机的取变换矩阵,用该矩阵变换点坐标,形成新的变换后的坐标点
4、根据迭代深度重复3

 

描述过程:
points:点的坐标
num_iters:迭代次数
transform:变换矩阵
fi:变换矩阵*points向量

   for "lots" of random points (x0, y0)
       for k=0 to num_iters
           pick a random transform fi
           (xk+1, yk+1) = fi(xk, yk)
       display a dot at (xk, yk)

 

如:

变换矩阵如下
3(随机矩阵的个数)
0.33(取到该矩阵的概率)
0.500000 0.000000 0.000000
0.000000 0.500000 0.000000
0.000000 0.000000 1.000000
0.33
0.500000 0.000000 0.500000
0.000000 0.500000 0.000000
0.000000 0.000000 1.000000
0.34
0.500000 0.000000 0.000000
0.000000 0.500000 0.500000
0.000000 0.000000 1.000000

随机点points(1,1,0)
取一个随机的矩阵,用矩阵*(1,1,0)
如取到第一个矩阵,那么变换后的点位(0.5,1,0)
如取到第二个矩阵,那么变换后的点位(1,0.5,0)
如取到第三个矩阵,那么变换后的点位(0.5,0.5,0)

 

下面的效果是使用10000个随机点,变换矩阵

3
0.33
0.500000 0.000000 0.000000
0.000000 0.500000 0.000000
0.000000 0.000000 1.000000
0.33
0.500000 0.000000 0.500000
0.000000 0.500000 0.000000
0.000000 0.000000 1.000000
0.34
0.500000 0.000000 0.000000
0.000000 0.500000 0.500000
0.000000 0.000000 1.000000

 

迭代1次

 

迭代2次

迭代3次

迭代4次

迭代30次

采用50000个随机点,30次迭代,输出400*400图像

采用的变换矩阵

原创粉丝点击