Why数学图像生成器能够以给定的数学公式及算法生成各种绚烂的数学图像.这是一款与图像有关的软件,所以图像加载显示功能是必需的,软件支持的图像格式有:png,jpg,dds,bmp,tga,ppm。用户可以将文件直接拖入窗体内以打开图像,也可以通过菜单项或快捷方式Ctrl+F选择文件加载。
(1)通过一种我自定义的脚本语言生成:
软件中定义一套简单易学的脚本语言,用于描述数学表达式.使用时需要先要将数学表达式写成该脚本的形式,解析脚本代码以生成相应的图像.
(2)使用软件中内置的算法:
软件中含有近百种数学图像生成的算法,如Mandelbrot,JuliaSets之类的分形算法。
软件的开发语言是C++,开发环境是VS2008,渲染使用的是D3D9。
下图为软件界面:
在窗体的两边有UI界面,用户可以按快捷键U来开关UI界面。
(1.1)图像颜色通道
先看下左则的UI,打开图像后,可以通过UI选择RGBA的各个通道以显示图像,或通过快捷键R,G,B,A,I来选择通道模式:
R通道图像:
G通道图像:
B通道图像:
反色图像:
(1.2)图像滤波方式
有两种图像滤波方式:(1)线性采样(2)点采样。通过下图可以看出二者的区别:
(1.3)图像大小设置:
鼠标滚轮用于控制图像的缩放。图像缩放时,是以鼠标所指的位置当做中心进行缩放的。
鼠标右键拖动可以控制图像的位置。
如下图为缩小并拖动后的图像:
还有两个按钮,其快捷键为F,O。分别表示使图像最合适的大小显示,和使图像以原始大小显示。
最后键盘F11用于控制界面的全屏切换。
之前我写过一套数学图形可视化的工具,可以将数学表达式以图形的形式显示出来.这两套软件使用的脚本解析方式是一样的,即两个软件使用相同的脚本解析模块.关于详细语法介绍请看:数学图形可视化工具的脚本语法.我已经将该脚本解析模块的代码开源.这里脚本的后缀名为txt,主要是方便用记事本打开.目前我写了几十个脚本,放置在"Why数学图像生成工具_1_0Scripts"目录下.脚本文件的加载方式与图像加载一样,即可以通过菜单项选择文件打开,又可以直接将文件拖入程序窗体内自动加载.
脚本编辑
按下键盘F5或通过菜单选项可以打开脚本编辑对话框:
不得不承认我的脚本功能还不够强大,只能实现些比较基础的图像,像循环迭代这样的算法目前还没办法实现.为了弥补这一不足,我将一些数学图像生成算法内置到该软件中.
(3.1)Tweetable Mathematical Art
网上有很多通过算法生成数学图像,尤其是与分形学相关的方面.我收集了近百种数学图像生成的算法,都写入该软件中.其中大部份算法来自:http://codegolf.stackexchange.com/questions/35569/tweetable-mathematical-art.它是Kyle McCormick 在 StackExchange 上发起了一个叫做 Tweetable Mathematical Art 的比赛,参赛者需要用三条代码来生成一张图片。具体地说,参赛者需要用 C++ 语言编写 RD 、 GR 、 BL 三个函数,每个函数都不能超过 140 个字符。每个函数都会接到 i 和 j 两个整型参数(0 ≤ i, j ≤ 1023),然后需要返回一个 0 到 255 之间的整数,表示位于 (i, j) 的像素点的颜色值。参赛者编写的代码会被插进下面这段程序当中,最终会生成一个大小为 1024×1024 的图片。