网站首页  词典首页

请输入您要查询的论文:

 

标题 绘制Mandelbrot集的新算法
范文

    王乃谡

    [关 键 词] 绘制M集;编程;新方法

    [中图分类号] G718 [文献标志码] A [文章编号] 2096-0603(2018)24-0017-01

    本文主要是利用计算机画图功能绘制曼德布洛特集合。利用的每个点在逃逸过程中所迭代的次数,作为要用到的信息。也就是以此代表绘制的图形中的图像的顏色的深浅。颜色越深,代表它逃逸的越快,时间也就越短;反之,逃逸的慢,时间长,颜色浅。

    本文主要利用VC++6.0的环境来编程;用到的主要函数是:画图:pDC->SetPixel。

    一、基本的绘制M集新方法

    (一)定义

    先对复平面上的点进行循环,由0开始迭代。如果这些点满足条件的话(while((|Z|^2

    (二)实现

    增加了一个二维的数组在每次的运算过程中,来记录它们的路过信息。也就是每一个复平面上的“击中”次数,也就是每次迭代一次,用于储存信息的count数组便记录一次,也就是Counter(Z)+=1。最后所有的统计信息都统计结束以后,根据这统计信息进行着色。

    图像是:

    图像基本特点:可以看到,越是外面,它被“击中”的次数越多,说明它被经过的概率也就越高。由于是记录的每一个点所被“击中”的次数,所以在边界处显得有些模糊。颜色的深浅也代表了所“击中”的次数。这个图像的中心是一个有一个小口的圆形,在这个圆形的边界处,说明它们被“击中”的次数相同。但是,这个小圆里并不是对称的,也说明了,里面的点的信息是不一样的。其他方面,在这个小圆的周围,是一些包裹椭圆形的小圆圈,都是不封口的,说明它们的“击中”次数也是不一样的。

    二、扩展的绘制M集新方法

    (一)定义

    基本的M集:while((|Z|^2

    扩展的M集:while((|Z|^N

    (二)实现

    用Buddhabrot方法来绘制:

    基本思想是:利用一个二维数组来计算,每个逃逸点经过的每一点的次数。并根据每个点经过的次数来进行描点。

    当N取不同的值的时候,也会得到不同的图像,这里显示1个而已。

    这些图像具有以下特点:第一,它们全是在传统方法的基础上得出来的,跟传统方法得到的曼德布洛特集合的很相似。主要的区别就是,边界没有传统的方法清晰,因为采用的新方法中,用到的是每一个点的“击中”的信息,它使得得到的图形更加的精确。第二,越往中间,颜色越深,说明它的“击中”系数相对比较多,而两边却恰恰相反。在他们的边界处,它们在图中显示的颜色是一样的,这就说明了在这些边界的地方,被“击中”的次数是一样的。这些点在曼德布洛特集合上的性质是一致的。

    三、内部点和外部点绘制M集新方法

    (一)定义

    在扩展的基础上,先判定每个点是否是M集里面的点,还是不属于M集。在判断了以后,分别用M集的内部点和外部点去分别再画出新的M集。

    (二)实现

    首先是要有这么一个判断:if(r>m)和if(k==K)为的就是说明该点是内部点还是外部的,然后进行算法实现。

    图像如下:

    图像中主体的葫芦形状的颜色比较深,但是外面的颜色却是黑色。这说明了在内部点迭代的过程中,它们的主要路径还是留在了内部区域,而基本上没有逃出过该区域,即使有很少的逃出过该区域内,也是在很短的时间或是迭代过程中,又回到了该区域内部。

    下面是外部点的新图形。

    这是外部点经过迭代的图像,由于计算量比较大,只是减少了迭代的次数来得到现在的图像,所以显示的颜色比较淡。从图中的颜色深浅可以看得出来,外部点在迭代过程中大部分的点还是在外部进行迭代,但是不能排除一少部分的情况,会在迭代过程中在内部区域进行。

    通过以上,再来看新方法下绘制出的M集图像。所有点下的图像更像是最开始绘制出的基本图像。说明即使是在新方法下M集的变化并没有那么大。而且也说明了每个点在迭代过程中,还是在M集内部经过的次数比较多。在内部点绘制的图像下这个表现得更加明显,基本上所有的内部点的迭代过程都是在其内部完成的。而外部点则显现出了稍有不同的点,它的迭代过程大部分是在外部完成的。

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/3/21 20:31:15