软件Tags:
YChaos图像生成器,旨在为用户呈现混沌图像的奇妙之美。启动YChaos图像生成器,您将发现其拥有编辑、图像生成与三维显示三种模式,用户可通过功能键F1、F2和F3轻松切换,便捷进行图像创作。
双击“YChaos图像生成软件.exe”以启动程序。
软件提供两种模式:编辑模式与图像生成模式。默认情况下,程序开启时为编辑模式,用户可以使用键盘F1切换两种模式。F2键将切换至图像生成模式,开启图像的生成处理。通过鼠标右键拖动可调整视口位置,滚轮则用于视口的缩放。按下F键,将自动调整为最佳视口;而按下X键,则可恢复至默认大小的视口,以便图像以其原始比例呈现。
在“images”文件夹中,存放着各类生成图像的配置文件。用户只需将某个配置文件拖入软件中,即可打开该文件。也可以通过菜单中选择“文件->打开配置文件...”进行文件选择,或者使用快捷键CTRL+F来加载配置文件。下图展示了一个洛伦茨吸引子的点集截图:
当打开某个配置文件后,您将进入编辑模式,按下F2可以切换至图像生成模式并生成混沌图像。如下图所示:
按下F5或通过菜单中的“视图->数学脚本编辑面板...”可打开数学脚本编辑面板,在此进行数学公式的编辑与修改。如下图所示:
在编辑模式中,右侧有一控件,用于设置数学公式的初始变量值。
完成公式编辑后,若希望将点集转化为图像,则需设置成像剪裁范围,可通过下图控件进行调整:
其中的“Auto Set Extend”按钮可自动根据点集的范围设置成像剪裁范围,用户亦可在二维场景中直接调整该剪裁范围。
在图像生成模式下,用户可以设置图像的显示通道,如RGB三个颜色通道及图像反色等。点集数据转化为彩色图像可采用两种方式:一为颜色表达式,另一种为伪彩表。下图展示了使用伪彩与反色技术生成的图像:
图像生成模式下,提供一个控件用于图像生成控制:
其中“Process”按钮用于生成图像。
YChaos是一款通过数学公式生成混沌图像的软件,旨在展现混沌与数学之美。
软件中定义了一套简洁的脚本语言,用于描述数学表达式。在使用时,用户需将数学表达式转化为脚本形式,解析脚本代码以生成相应的图形与图像。
该软件与我此前开发的Why数学图像生成工具及WHY数学图形可视化工具(开源)有着密切的关联。
它们共享同一套数学表达式解析代码。
YChaos对用户输入的数学公式进行迭代处理。迭代的过程是将自身的输出再次作为输入,反复进行循环处理。迭代函数是指将函数的输出再作为输入进行迭代计算。
有些人在面对数学时可能会感到畏惧,然而无需忧虑,生成混沌的数学公式往往并不复杂。例如,输入的公式为:
x = sin(y) + 0.5
y = sin(x) + 0.5
在给定x和y的初始值后,反复执行这两个公式,每次执行都将得到一对(x,y)数值,最终将这些生成的(x,y)值集合转化为点集图形及一幅图像。
例如上图中的洛伦茨吸引子,其所需的公式表达式为:
u = a * (y - x)
v = b * x - y - x * z
w = x * y - c * z
x = x + u * t
y = y + v * t
z = z + w * t
在上述公式中,还需为相应的变量设置初始值,上图所使用的初始值为:
a = 10.000000
b = 28.000000
c = 2.666667
t = 0.001000
x = -10.000000
y = 10.000000
z = 25.000000
三、脚本语法
为了将数学公式以计算机可识别的方式表达,需构建一套脚本语言。
[1]常量
目前定义了以下9个常量值:
PI 3.1415927
E 2.7182818
GOLD 0.6180034
SQRT2 1.4142136
SQRT3 1.7320508
DEGREE 57.2957795130824f // 180 / PI
RADIAN 0.01745329251994f // PI / 180
MILLIONTH 0.000001f // 百万分之一
DIMI 0.0001f // 万分之一
所有常量的名称均为大写字母,在公式中如 (PI + E) 或 sin(PI * 0.5)。
[2]数值解析
对整数的解析支持2、8、10、16四种进制:
(1)以0X开头为16进制,X可以是ABCDEF的大小写,如0xffff。
(2)以0Y开头为2进制,Y可以是大小写字母,如0y10101010000。
(3)以0开头为8进制,如07523,注意不能出现“08”等类似形式,否则解析将失败。
(4)默认为10进制。
对浮点数的解析支持两种方式:
(1)形如“0.12”的格式,前面的0不可省略。
(2)科学表达格式,形如1.2e2。
[3]变量及赋值
系统中的所有数据类型均为float类型,分为两种变量类型:
1.固定变量
系统使用a-z的26个英文小写字母表示变量,变量可存储单个实数或一个实数数组。若为实数数据,其数组大小为之前设置的顶点数目(见3)。
设置为单个实数:
a = 3.1415 // 将a赋值为3.1415
固定变量x、y用于构成2D顶点位置坐标,生成图形与图像。
2.临时变量
可自定义名称的变量,以字母或下划线开头的字符串,最多可用7个字节。
[4]运算符
完整的运算符说明请参见文档:《运算符说明.txt》
1.标准单目运算符:
+,-
如:a = -b
2.标准双目运算符:
+,-,*,/,%,^,<,>,=,&,|
如:c = a * b 若a、b均为单个实数,则运算结果c也是单个实数,否则c为实数数组。
3.函数单目运算符,形如sin(a)
positive,negative,abs,floor,ceil,sign,sqrt,exp,log,log2,log10,sin,cos,tan,asin,acos,atan,rand。
4.函数双目运算符,形如pow(a, b)
add,sub,multiply,divide,max,min,mod,pow,atan2,rand2。
5.函数三目运算符,形如lerp(a, b, r)
lerp,clamp,gray,add3,min3,max3,average3。
6.函数四目运算符,形如average4(a, b, c, d)
add4,min4,max4,average4。
[5]运算符嵌套使用
支持{}、[]、()三类括号标识符,括号必须成对出现,最大可嵌套32级。如:
(2 + (-2 + (5.0 * (9 + ((1 + 2) * 3)) / 3) + 2))
- {exp[5 * sqrt(1 - abs[sin{rand(100)}]) + 6]}
[6]表达式语句
脚本中有三类表达式:
正常语句,形如:u = a * (y - x)表示将等号右边公式计算的数值赋给左边变量。
静态语句,形如:k = [static]0.5 * q * (u * u + v * v),在公式前加了一个[static]前缀,表示该表达式仅在脚本处理的开始执行一次。
循环语句,形如:y = [loop:64]k + y * y,表示该表达式需循环执行64次。
四、配置文件
用户编辑完成混沌图像后,可以将其保存为配置文件,格式如下:
[ScriptLines]这是数学公式
u = a * (y - x)
v = b * x - y - x * z
w = x * y - c * z
x = x + u * t
y = y + v * t
z = z + w * t
[Viables]这是公式所需设置的变量初始值
a = 10.000000
b = 28.000000
c = 2.666667
t = 0.001000
x = -10.000000
y = 10.000000
z = 25.000000
[ColorTable]颜色表公式,用于将顶点数据转化为彩色图像
Size = 1024
Red = log(v * 4) * 18.0
Green = log(v * 3) * 20.0
Blue =
ColorScaleRed = 1.000000
ColorScaleGreen = 1.000000
ColorScaleBlue = 1.000000
[Pseudo]图像伪彩,将顶点数据转化为彩色图像的另一种方式
WinPos = 127
WinWid = 255
PseudoName = Default
Used = false
[Params]其他相关参数
Iteratn = 10000000 公式的总迭代次数
StepValue = 0.000100
ImageMinX = -25.677399 顶点坐标转化为图像时所需的剪裁范围
ImageMinY = -25.972094
ImageMaxX = 24.993305
ImageMaxY = 24.698610
ProcessSpeed = 2000 生成图像时的速度