(本程序已经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
SQFormula为公式自定义提供支持!!!
公式中支持比较运算!!!
提供迭代次数变量支持!!!
二、引入二维调色板概念
需要注意的是:这里的取色方式是二维的,程序利用取色公式运算结果的实部作为水平取色参数,利用虚部作为垂直取色参数。这样就可以在我们的二维调色板中选取到任意一个角落的像素值。
调色板沿用的上个程序的做法,您可以随意选择任意图片作为程序的调色板。在此基础上,程序引入了“调色板映射”概念,您可随意调整调色板取色起点、单位跨度、取色角度和拉伸程度等参数,就算不更换调色板,也可以变换出不同的分形图案!
除了以上两点主要特色以外,本程序遵循简单易用原则,使得每个人都可以轻松作出漂亮的分形图案,使得分形作图就好象在玩游戏一样轻松!
使用简介:
左右键:修改当前常数实部
上下键:修改当前常数虚部
a/z:更改修改精度
C:选择下一个常量
Shift+C:选择上一个常量
拖动调色板区修改映射原点
拖动调色板角度手柄(小圆点)修改映射角度
在预览区按住鼠标左键拖动图像
鼠标滚轮缩放图像
编辑->参数设置:设置迭代公式等参数
一起来玩分形吧!
通过参数调整轻松制作个性分形图案!!!
高度可视化操作,鼠标拖动轻松搞定!!!
绘图进程实时显示,一切尽在掌握!!!
文件导出进程动态显示,并可随时取消!!!
软件下载
附加分形例(不断更新中...):
注:打开一个空白文本文件,将虚线(不含)之间字符保存为一个后缀名为“sfs”的文件(如“分形名.sfs”),
然后用我的程序打开,就可以重建该分形。
---------------------------------
版本号:{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}
迭代公式:{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}
迭代公式:{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}
迭代公式:{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}
迭代公式:{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}
迭代公式:{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}
迭代公式:{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}
迭代公式:{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}
迭代公式:{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}
迭代公式:{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}
迭代公式:{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}
---------------------------------
转发至微博
转发至微博
评论