IFS
迭代函数系统 IFS(Iterated Function System),真的是简单即复杂。
IFS-System
几组二元一次方程组:
$$
x_{n+1}=ax_n+by_n+e\\
y_{n+1}=cx_n+by_n+f
$$
不同概率下迭代生成所有点的集合。
必要参数:
- $n$ 组 $a,b,c,d,e,f$ 的参数
- $n$ 个概率值 $p$,$\sum_0^np=1$
- 一组起始点 $x_0,y_0$
一句话总结就是1:
IFS = 二元一次方程组 + 参数表 + 概率
实现
使用 golang 生成 IFS 分形图形。
每次迭代需要掷骰子根据概率选择使用那组参数:
1 |
|
经过 n 次迭代将点画在画布上。
以下计算两次为了找到边界值,好转换坐标。
1 |
|
生成树形图2如下(图像已经过旋转处理):
如果想要方程组参数自动生成可使用如下函数:
1 |
|
欣赏
根据不同的参数可以生成不同的图像,以下为比较典型的一些3:
下面是随机生成的:
这张有些像宇宙星系!
{-0.889272, 0.656922, -0.927109, -0.322378, 0.856565, 0.478706, 0.937723},
{0.411268, -0.581772, 0.998787, -0.631693, -0.731553, 0.226007, 0.0622774},
这张有些抽象。
{-0.872001, 0.0808141, 0.205013, 0.726129, -0.133041, -0.287383, 0.790841},
{0.148498, -0.880393, 0.901023, 0.567552, 0.99911, 0.760125, 0.209159},
IFS
https://wishlily.github.io/article/code/2017/04/01/undefined/