最近喜欢上分形的数学之美,决定自己写个小程序做分形图。 曼德布罗特集合分形(Mandelbort Set Fractal)与Julia Set 使用复数函数公式F(z) = z^n + c 其中n>=2,而z和c为复数,z0初始值为(0,0),开始迭代。 若每一个 |f(z)| 小于2,则其属于集合内,当然,我们在计算机计算时只能设定一个迭代次数,超过迭代上限仍然模小于2的认为属于集合。
做了一些自认为比较漂亮的图片。 贴上来留作纪念。
以上图形的参数ru如下。
CComplex xc[]={
CComplex(-1.0, -0.3),//龙-美
CComplex(-0.8, -0.25),//虫-美
CComplex(-0.8, 0.0),//乌龟-合口
CComplex(-0.75, 0.0),//乌龟-开一点口
CComplex(-0.65, -0.00),//乌龟-开大点口
CComplex(0.3, -0.48), //2狮 -炫
CComplex(0.4, 0.250),//huashi 闪
CComplex(0.6, 0.0), //xiyao
CComplex(0.7, 0.0), //shuitongyao
CComplex(0.9, 0.0), //xiyao
CComplex(0.45, -0.1428),//shen
CComplex(0.255, 0.0),//facemask
CComplex(0.285, 0.0),//hudie
CComplex(0.6, -0.3), //exp=3
CComplex(0.29, 0.74),
CComplex(0.63, -0.34), //三龙
CComplex(-0.8, 0.1) //exp=4
};
int ic=sizeof(xc)/sizeof(CComplex);
m_i++;
m_i=m_i%ic;
m_c=xc[m_i];
if(m_i<13) m_num=2;
else if(m_i<16) m_num=3;
else m_num=4;
m_c为公式中的c,m_num为指数n.
见面操作如下图
由于画图(特定分形图)需要一点时间,此时状态条会显示"Waiting!!!"。
由于画图采用内存画,除第一张外,别的图不会影响界面显示。