Mandelbrot Set与Julia Set分形图示

最近喜欢上分形的数学之美,决定自己写个小程序做分形图。 曼德布罗特集合分形(Mandelbort Set Fractal)与Julia Set 使用复数函数公式F(z) = z^n + c  其中n>=2,而z和c为复数,z0初始值为(0,0),开始迭代。 若每一个 |f(z)| 小于2,则其属于集合内,当然,我们在计算机计算时只能设定一个迭代次数,超过迭代上限仍然模小于2的认为属于集合。

做了一些自认为比较漂亮的图片。 贴上来留作纪念。

双头乌龟
mandelbrotset
开嘴的mandelbrotset
狮子1
中国狮子
上身
水桶上身
柔细上身
轮子1-开瓶起子
中国脸谱
蝴蝶
轮子2-飞刀
轮子3
3条龙构成的风火轮
4头山羊

 以上图形的参数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!!!"。

由于画图采用内存画,除第一张外,别的图不会影响界面显示。 

源代码位置链接: https://github.com/foolpanda/Z-fractal

发布了29 篇原创文章 · 获赞 5 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/foolpanda1168/article/details/82026590
set