注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

简单代码

寻找代码的灵魂

 
 
 

日志

 
 
关于我

对于本博客内所有原创文章和代码的引用必须标明“来源:http://simplesource.blog.163.com/”。如需应用于商业目的必须经本人同意,本人对所有原创文章和代码保留一切权利。 PS:需要部分程序源代码的请留下邮箱地址

网易考拉推荐

大家一起来玩分形——SimpleFractal0.01发布  

2008-06-22 20:37:33|  分类: 我的程序 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  (本程序已经0.02版发布了,快到http://simplesource.blog.163.com/blog/static/10341406200872853231697/去看吧!)

  最近比较忙,都没怎么更新博客,实在是非常抱歉。不过没有关系,这次SimplrFractal重磅出击,一定让大家满意!

  关于分形我已经写过几篇博客了,上次做了一个小程序,实现了Julia集的绘制(详情可以查看我的另一篇博客《绚丽的Julia集以及VC渲染程序(附源代码)》)。那个程序做的比较简陋,可能让某些大侠见笑了!惭愧!这次我卯足精神,花了20天的时间做了这个SimpleFractal,功能比上一个程序更强大,希望大家喜欢!

  好了闲话少说,下面就来介绍一下我的程序:

  简单来说这次程序有两大特色:

  一、引入SQFormula复数计算引擎

  利用该引擎,本程序实现了迭代公式、终止条件公式和取色公式的自定义。SQFormula 是在编译型复数计算器(详情可以查看我的另一篇博客《编译型复数表达式计算器》)升级而来,在编译型复数计算器的基础上,增加了比较运算模块。

  SQFormula使得您可以随意定义迭代公式,在公式中z表示主迭代变量,z0表示迭代开始前主迭代变量的值。取色公式中您还可以使用V_iter_n变量取得当前的迭代次数,用V_iter_max取得最大迭代次数。

  计算引擎支持常量e和pi,例如表达式 e^pii 的计算结果为-1.000000 + 0.000000i。

  支持的运算符有-(负号)、+、-、*、/、^(幂运算符)、=、(、)、i(虚数定义符)、<、<=、>、>=、!=、==;

  支持的函数有abs, arg, conj, real, imag, norm, exp, log, log10, sqrt, sin, cos, sinh, cosh, tan, tanh

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

SQFormula为公式自定义提供支持!!!

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

公式中支持比较运算!!!

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

提供迭代次数变量支持!!!

 

  二、引入二维调色板概念

  需要注意的是:这里的取色方式是二维的,程序利用取色公式运算结果的实部作为水平取色参数,利用虚部作为垂直取色参数。这样就可以在我们的二维调色板中选取到任意一个角落的像素值。

  调色板沿用的上个程序的做法,您可以随意选择任意图片作为程序的调色板。在此基础上,程序引入了“调色板映射”概念,您可随意调整调色板取色起点、单位跨度、取色角度和拉伸程度等参数,就算不更换调色板,也可以变换出不同的分形图案!

  除了以上两点主要特色以外,本程序遵循简单易用原则,使得每个人都可以轻松作出漂亮的分形图案,使得分形作图就好象在玩游戏一样轻松!

  使用简介: 

  左右键:修改当前常数实部 

  上下键:修改当前常数虚部 

        a/z:更改修改精度 

          C:选择下一个常量 

  Shift+C:选择上一个常量 

  拖动调色板区修改映射原点 

  拖动调色板角度手柄(小圆点)修改映射角度 

  在预览区按住鼠标左键拖动图像 

  鼠标滚轮缩放图像 

  编辑->参数设置:设置迭代公式等参数 

  一起来玩分形吧!

 

 

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

通过参数调整轻松制作个性分形图案!!!

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

高度可视化操作,鼠标拖动轻松搞定!!!

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

绘图进程实时显示,一切尽在掌握!!!

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

文件导出进程动态显示,并可随时取消!!!

 

 软件下载

SimpleFractal_001.rar(博客园)

SimpleFractal.rar(CSDN)

 

 

 附加分形例(不断更新中...):

注:打开一个空白文本文件,将虚线(不含)之间字符保存为一个后缀名为“sfs”的文件(如“分形名.sfs”),
然后用我的程序打开,就可以重建该分形。

 

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

---------------------------------
版本号:{SimpleFractal0.01}
迭代公式:{z = tan(z * z) * z + C;}
终止条件公式:{norm(z) > 100;}
取色公式:{V_iter_n / V_iter_max;}
调色板文件:{}
调色板映射:{0.010000, -0.365854, 0.605000, 0.707317, 0.000000, 1.000000, 4.726531}
复平面偏移:{6.822376, -6.682914}
比率:{0.000654}
目标图像大小:{2048, 2048}
最大迭代次数:{256}
常量00{C=-0.054180, 0.994380}

---------------------------------
 

 大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

---------------------------------
版本号:{SimpleFractal0.01}
迭代公式:{z = (z / C+ C / z) ^ 2 + C1;}
终止条件公式:{norm(z) > 100;}
取色公式:{V_iter_n / V_iter_max;}
调色板文件:{}
调色板映射:{0.735000, -0.121951, 0.611708, 0.331898, 0.924510, -0.381158, 50.680028}
复平面偏移:{-0.353604, -2.659957}
比率:{0.002344}
目标图像大小:{1024, 1024}
最大迭代次数:{1024}
常量00{C=-1.840000, 0.000000}
常量01{C1=-1.390000, 0.880000}
---------------------------------
大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

---------------------------------
版本号:{SimpleFractal0.01}
迭代公式:{z = (z / C+ C / z) ^ 2 + C;}
终止条件公式:{norm(z) > 100;}
取色公式:{V_iter_n / V_iter_max;}
调色板文件:{}
调色板映射:{0.595000, -0.207317, 0.389576, 0.973792, 0.537280, 0.843404, 50.680028}
复平面偏移:{-3.517644, -3.515882}
比率:{0.006998}
目标图像大小:{1024, 1024}
最大迭代次数:{1024}
常量00{C=-1.840000, 0.000000}

---------------------------------

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

---------------------------------
版本号:{SimpleFractal0.01}
迭代公式:{z = z * z + z0;}
终止条件公式:{norm(z) > 100;}
取色公式:{V_iter_n / V_iter_max;}
调色板文件:{}
调色板映射:{0.000000, 0.000000, 0.977913, 0.975023, 0.013157, 0.999913, 1.702189}
复平面偏移:{-2.469358, -1.671870}
比率:{0.003375}
目标图像大小:{1024, 1024}
最大迭代次数:{256}
---------------------------------

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

---------------------------------
版本号:{SimpleFractal0.01}
迭代公式:{zx = real(z);
zy = imag(z);
za = real(C);
zb = imag(C);
zx1 = zb * zy + za * zx + (1 - za) ^ 2 / (1 + zx^2);
zy1 = -zx + za * zx1 + (1 - za) ^ 2 / (1 + zx1^2);
z = zx1 + zy1* i;}
终止条件公式:{norm(z) > 100;}
取色公式:{V_iter_n / V_iter_max;}
调色板文件:{}
调色板映射:{0.000000, 0.000000, 1.000000, 1.000000, 0.000000, 1.000000, 2.317353}
复平面偏移:{-10.465437, -10.026286}
比率:{0.020897}
目标图像大小:{1024, 1024}
最大迭代次数:{256}
常量00{C=0.163000, 1.066900}
---------------------------------
大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

---------------------------------
版本号:{SimpleFractal0.01}
迭代公式:{zx = real(z);
zy = imag(z);
za = real(C);
zb = imag(C);
zx1 = zb * zy + za * zx + (1 - za) ^ 2 / (1 + zx^2);
zy1 = -zx + za * zx1 + (1 - za) ^ 2 / (1 + zx1^2);
z = zx1 + zy1* i;}
终止条件公式:{norm(z) > 100;}
取色公式:{V_iter_n / V_iter_max;}
调色板文件:{}
调色板映射:{0.020000, 0.219512, 0.545460, 0.617714, -0.407940, 0.913009, 6.503500}
复平面偏移:{-10.142568, -10.598527}
比率:{0.020897}
目标图像大小:{1024, 1024}
最大迭代次数:{256}
常量00{C=-0.525000, 1.085900}
---------------------------------
大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

---------------------------------
版本号:{SimpleFractal0.01}
迭代公式:{zarg = arg(z^2);
z =  zarg * z ^ 2+ C;}
终止条件公式:{norm(z) > 100;}
取色公式:{V_iter_n / V_iter_max;}
调色板文件:{}
调色板映射:{0.255000, 0.000000, 0.645000, 0.878049, 0.000000, 1.000000, 7.389056}
复平面偏移:{-0.478376, -0.487638}
比率:{0.000942}
目标图像大小:{1024, 1024}
最大迭代次数:{256}
常量00{C=0.000000, 0.168000}
---------------------------------

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码
---------------------------------

版本号:{SimpleFractal0.01}
迭代公式:{zx = real(z);
zy = imag(z);
zx1 =zx + sin(zy) ^ 3;
zy1 = zy + cos(zx) ^ 3;
z = zx1 + zy1 i + C;
}
终止条件公式:{norm(z) > 100;}
取色公式:{V_iter_n / V_iter_max;}
调色板文件:{}
调色板映射:{-0.110000, 0.012195, 0.833768, 0.376013, 0.943858, 0.330350, 6.643354}
复平面偏移:{-2.990558, -7.914567}
比率:{0.007000}
目标图像大小:{1024, 2048}
最大迭代次数:{256}
常量00{C=-0.193000, -0.788000}
---------------------------------

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码
---------------------------------
版本号:{SimpleFractal0.01}
迭代公式:{zx = real(z);
zy = imag(z);
zx1 =zx + zy ^ 2;
zy1 = zy + zx ^ 2;
z = zx1 + zy1 i + C;
}
终止条件公式:{norm(z) > 100;}
取色公式:{V_iter_n / V_iter_max;}
调色板文件:{}
调色板映射:{-0.035000, -0.012195, 1.000000, 1.000000, -0.053975, 0.998542, 2.550196}
复平面偏移:{-1.914583, -1.936322}
比率:{0.001628}
目标图像大小:{2048, 2048}
最大迭代次数:{256}
常量00{C=-0.600000, -0.600000}
---------------------------------

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码
---------------------------------
版本号:{SimpleFractal0.01}
迭代公式:{zt = z ^ 2;
zx = real(zt);
zy = imag(zt);
zx1 =zx + (zy) ^ 2;
zy1 = zy + (zx) ^ 2;
z = zx1 + zy1 i + C;

}
终止条件公式:{norm(z) > 100;}
取色公式:{V_iter_n / V_iter_max;}
调色板文件:{}
调色板映射:{-0.055000, -0.231707, 0.647827, 0.111704, 0.985325, 0.170686, 24.847719}
复平面偏移:{-0.757494, -0.173121}
比率:{0.000316}
目标图像大小:{2048, 2048}
最大迭代次数:{256}
常量00{C=-0.932800, 0.647400}
---------------------------------

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码
---------------------------------
版本号:{SimpleFractal0.01}
迭代公式:{zx = real(z);
zy = imag(z);
zx1 =zx + cos(zy) ^ 3;
zy1 = zy + sin(zx) ^ 2;
z = zx1 + zy1 i + C;
}
终止条件公式:{norm(z) > 100;}
取色公式:{V_iter_n / V_iter_max;}
调色板文件:{}
调色板映射:{0.000000, 0.000000, 1.000000, 1.000000, 0.000000, 1.000000, 12.053580}
复平面偏移:{-12.797260, -12.744194}
比率:{0.012115}
目标图像大小:{2048, 2048}
最大迭代次数:{256}
常量00{C=0.157200, -0.465700}
---------------------------------

大家一起来玩分形——SimpleFractal0.01发布 - 简单代码 - 简单代码

---------------------------------
版本号:{SimpleFractal0.01}
迭代公式:{z = C * z ^ 3 + (1 - C) * z;}
终止条件公式:{norm(z) > 100;}
取色公式:{V_iter_n / V_iter_max;}
调色板文件:{}
调色板映射:{0.000000, 0.000000, 1.000000, 1.000000, 0.000000, 1.000000, 2.443954}
复平面偏移:{-2.586938, -2.182002}
比率:{0.004860}
目标图像大小:{1024, 1024}
最大迭代次数:{256}
常量00{C=-0.067000, 0.353000}
---------------------------------

  评论这张
 
阅读(3878)| 评论(9)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017