浅析曼德勃罗集及C++实现图形绘制
来源:互联网 发布:python 汉字 gbk编码 编辑:程序博客网 时间:2024/05/16 01:06
在算法大作业中,认识到了曼德勃罗集(Mandelbrot Set)这一名词,经过网上资料的查阅,才对其思想和独特魅力略知皮毛。由于该集合的定义与分形有关,需要先介绍一下分形的概念。
什么是分形(Fractal)?
1967年,美国数学家Mandelbrot曾提出这样一个著名的问题:英格兰的海岸线到底有多长?这个问题在数学上可以理解为:用折线段拟合任意不规则的连续曲线是否一定有效?最终,Mandelbrot在1957年提出了“分形”一词。
分形(英语:Fractal),又称碎形、残形,通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。——维基百科(wikipedia)
分形一般具有以下特点:
1. 具有无限精细结构;
2. 比例自相似性;
3. 一般它的分子维数大于它的拓扑维数;(不懂)
4. 可以由非常简单的方法定义,并由递归迭代产生。
科赫雪花
谢尔宾斯基三角形
什么是Mandelbrot集合?
Mandelbrot集合是在复平面上组合分形的点的集合,正是以数学家Mandelbrot的名字命名。
Mandelbrot集合可以由复二次多项式
来定义。其中是一个复参数,对于每一个,从开始对进行迭代,从而可以得到序列
该序列中元素的模,或者延伸至无穷大(发散),或者停留在有限半径的圆内(收敛)。而Mandelbrot集合正是使该序列中所有元素的模均收敛的点的集合。
例如,当时,通过迭代得到的序列为(0,1,2,5,26…),显然该序列中元素的模会趋于无穷大;当时,通过迭代得到的序列为, 所有元素的模一直停留在有限半径的圆内。
事实上,一个点属于Mandelbrot集合当且仅当它对应的序列中的任何元素的模都不大于2。(我也不知道为什么,总之这就是后面代码实现中的关键)
算法实现流程
1. 创建PPM图像文件(通过RGB三种颜色显现的图像),图像中的像素可作为坐标轴当中的点,并给定原点坐标;
2. 定义迭代函数,用以检验某个点是发散还是收敛;
3. 检验图像中的每一个点(像素),并对收敛和发散的点进行不同的着色处理,绘制形成目标图像。
实现代码
https://gitee.com/CharlesLovesCoding/Mandelbrot-Set 代码由同济大学MPC同学提供
代码运行生成的PPM文件可用Photoshop或者XnView打开,结果如下:
迭代次数可间接反映发散程度,本代码中将迭代次数在不同范围内的点进行分层,并赋予不同范围内的点不同的蓝值,由此产生如图效果。读者们可以修改代码设置不同的上色方案,以产生不同的效果。
参考文献
1. 分形-维基百科:https://zh.wikipedia.org/wiki/%E5%88%86%E5%BD%A2
2. 曼德博集合-维基百科:https://zh.wikipedia.org/wiki/%E6%9B%BC%E5%BE%B7%E5%8D%9A%E9%9B%86%E5%90%88
- 浅析曼德勃罗集及C++实现图形绘制
- C#—绘制图形
- Windows程序设计__孙鑫C++Lesson11《图形绘制及保存》
- WPF 图形绘制 及各种线帽、箭头的实现
- object-c图形绘制总结
- Windows程序设计__孙鑫C++Lesson10《图形绘制及各类对话框》
- Unity3D技术之优化图形性能绘制调用批处理浅析
- Unity3D技术之优化图形性能绘制调用批处理浅析
- Android统计图形绘制及点击事等功能的实现-achartengine篇
- Quartz2D简单图形绘制及操作
- Android中绘制图形及图片
- C++Directx11开发笔记三:绘制图形
- JavaFx实现(2)-随机图形绘制
- TIE绘制图形的文件保存实现
- Android下实现各种图形的绘制
- android使用achartengine实现各种图形绘制
- Android高级UI ACharEngine实现图形绘制
- 绘制图形
- 面向对象:只有该结婚的感情,没有该结婚的年龄
- 能从银行卡中读出身份证号码,你信吗?
- 10本书给你计算机大师思维
- 快速删除 node_modules
- Linux 下常用的 tar 命令
- 浅析曼德勃罗集及C++实现图形绘制
- android TextView 设置部分文字背景色和文字颜色
- spark查询任意字段,并使用dataframe输出结果
- 算法之路之征服上海交大的oj-排序
- 在线用户数与并发用户数的区别和比例关系
- 使用贝塞尔插值
- Unity基础,创建丶单词
- luoguP1238走迷宫
- 机器学习-文本分析