VB6之Mandelbrot集
Mandelbrot真是上帝之作,数学之美最直观的表现。
围观wiki和百科(百度百科)上关于Mandelbrot的解释至今仍是不能理解,没办法我高数实在学得不好。
搜素到园友用F#写的一篇实现代码,写得相对简单易懂,最起码能看出来是怎么生成的,于是将其翻译成了VB6。
因为没接触过F#,为了翻译那篇代码还百度了半天是F#语法和关键字还有那个复数的运算,感觉像是回到了大学数学课。
VB6中没有复数类型只能用Type自定义个complex类型,一些方法(Magnitude)也只能用VB6重新实现。
参考链接:
http://www.cnblogs.com/anderslly/archive/2008/10/10/mandelbrot-set-by-fsharp.html
VB6的实现代码:
Private Const maxIterations =
Private Const scalingFactor = # / #
Private colors Private Type complex
fx As Double
fy As Double
End Type Private iteration
Private current As complex
Private temp As complex Private Sub Form_Load()
colors = Array(vbRed, vbGreen, vbBlue, vbYellow, vbMagenta, vbCyan, vbWhite)
End Sub Private Function mapPlane(ByVal x As Double, ByVal y As Double) As complex
Dim cp As complex
cp.fx = ((x) * scalingFactor) - #
cp.fy = ((y) * scalingFactor) - #
mapPlane = cp
End Function Private Function Magnitude(cp As complex) As Double
Magnitude = Sqr(cp.fx * cp.fx + cp.fy * cp.fy)
End Function Private Function Mandnext(cp1 As complex, cp2 As complex) As complex
Dim cp As complex
cp.fx = cp1.fx * cp1.fx - cp1.fy * cp1.fy + cp2.fx
cp.fy = * cp1.fx * cp1.fy + cp2.fy
Mandnext = cp
End Function Private Sub Command1_Click()
For x = # To #
For y = # To #
iteration =
current = mapPlane(x, y)
temp = current
Do While (Magnitude(temp) <= # And iteration < maxIterations)
temp = Mandnext(temp, current)
iteration = iteration +
Loop If iteration = maxIterations Then
PSet ( + x, + y), vbBlack
Else
PSet ( + x, + y), colors(iteration Mod )
End If
Next
Next
End Sub
贴张图看看效果:

真赞!只是我现在还不知道怎么把分形放大,后面再研究看看吧。
VB6之Mandelbrot集的更多相关文章
- 广义mandelbrot集,使用python的matplotlib绘制,支持放大缩小
迭代公式的指数,使用的1+5j,这是个复数.所以是广义mandelbrot集,大家能够自行改动指数,得到其它图形.各种库安装不全的,自行想办法,能够在这个站点找到差点儿全部的python库 http: ...
- 使用OpenGL进行Mandelbrot集的可视化
Mandelbrot集是哪一集?? Mandelbrot集不是哪一集!! 啊不对-- Mandelbrot集是哪一集!! 好像也不对-- Mandelbrot集是数集!! 所以--他不是一集而是数集? ...
- 【C++】Mandelbrot集绘制(生成ppm文件)
曼德勃罗特集是人类有史以来做出的最奇异,最瑰丽的几何图形.曾被称为"上帝的指纹". 这个点集均出自公式:Zn+1=(Zn)^2+C.(此处Z.C均为复数)所有使得该公式无限迭代后的 ...
- Mandelbrot和Julia
概述 mandelbrot julia Mandelbrot 对全体复数z,满足xn+1 = xn2 + z从x0 = 0起,|x|随n值增加不趋于无穷大,则z属于Mandelbrot集 代码 #i ...
- [原创+分享]Mandelbrot Explorer
Mandelbrot Explorer 是一款用于在MandelBort集/Julia集上进行无限漫游的软件,使用VS2013+CUDA6.5开发而成.它也是我学习CUDA开发的一个小小的成果,欢迎大 ...
- 02-C#入门(循环)
记得第一次学编程的时候,就听说过一句话:“新手学习和掌握一门编程语言是很容易的,但是如果你学会了某种编程语言,再去学习新的语言,就很难掌握了”,现在深深地感受到了这方面的阻力. 其实流程控制.循环,包 ...
- 趣味C++
用三段 140 字符以内的代码生成一张 1024×1024 的图片 Kyle McCormick 在 StackExchange 上发起了一个叫做TweetableMathematical A ...
- opengl纹理映射总结
大概步骤: 1.创建纹理对象,并为他指定一个纹理. 2.确定纹理如何应用到每个像素上. 3.启用纹理贴图 4.绘制场景,提供纹理和几何坐标 过滤:由于我们提供的纹理图像很少能和最终的屏幕坐标形成对应, ...
- Java版简易画图板的实现
Windows的画图板相信很多人都用过,这次我们就来讲讲Java版本的简易画板的实现. 基本的思路是这样的:画板实现大致分三部分:一是画板界面的实现,二是画板的监听以及画图的实现,三是画板的重绘.(文 ...
随机推荐
- grub 学习之路
现在,是grub2的天下了呀,虽然网上关于grub2的资料不少,但很多都是就一个方面讨论的,跟着这些教程配置虽然也能够成功,但总是迷迷糊糊,不知这grub2背后到底是怎么实现的.所以决定花时间深入了解 ...
- 互联网金融P2P主业务场景自动化测试
互联网金融P2P行业,近三年来发展迅速,如火如荼. 据不完全统计,全国有3000+的企业. “互联网+”企业,几乎每天都会碰到一些奇奇怪怪的bug,作为在互联网企业工 ...
- Python教程(2.2)——数据类型与变量
和C/C++.Java一样,Python也有数据类型和变量两个概念. 数据类型 Python中的几个基本数据类型为整数(integer/int).浮点数(float/float).布尔值(boolea ...
- JVM-3.内存
目录 一.运行时数据区 二.内存使用细节:以HotSpot的堆为例 三.实战:OutOfMemoryError异常 四.垃圾收集器(堆+方法区)与内存分配策略 一.运行时数据区 1.程序计 ...
- Quartz源码分析
先简单介绍一下quartz,Quartz是一个功能丰富的开源作业调度库,可以集成到几乎任何Java应用程序中 - 从最小的独立应用程序到最大的电子商务系统.quartz可用于创建执行数十,数百甚至数十 ...
- Azure 基础:Blob Storage
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在前文中介绍了 Table Storage 的基本 ...
- java封装FFmpeg命令,支持原生ffmpeg全部命令,实现FFmpeg多进程处理与多线程输出控制(开启、关闭、查询),rtsp/rtmp推流、拉流
前言: 之前已经对FFmpeg命令进行了封装http://blog.csdn.net/eguid_1/article/details/51787646,但是当时没有考虑到扩展性,所以总体设计不是太好, ...
- 【数据库】Mean web开发 04-MongoDB在Linux上的安装及遇到的问题
简介 Mean是JavaScript的全栈开发框架.更多介绍 用MongoDB实现持久数据的存储是Mean Web全栈开发中的一部分. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非 ...
- cocoapod升级
1.0 重新安装问题 cd /user/xx/.cocoapod/repos rm -rf master pod setup /user/xx/.cocoapod/repos 查看目录文件夹大小: d ...
- 解决ionic2各种坑文章收集
小白最近打算用ionic2做一个APP,无奈没有大神指点,一路坎坷遇到数不清的坑(主要是墙的问题).这里整理一些大神的帖子链接,用以指路. 新建/打包: Ionic2+Angular2创建项目打包An ...