YChaos是一款經過數學公式生成混沌圖像的軟件,展現混沌之美,數學之美。軟件中定義一套簡易的腳本語言,用於描述數學表達式。使用時須要先要將數學表達式寫成該腳本的形式,解析腳本代碼以生成相應的圖形與圖像。該軟件與我以前寫的Why數學圖像生成工具和WHY數學圖形可視化工具(開源)有很大關聯。它們使用的是同一套數學表達式解析代碼。若是你對數學生成圖形圖像感興趣,歡迎加入QQ交流羣: 367752815html
雙擊"YChaos圖像生成軟件.exe"啓動軟件。數組
軟件中有兩種模式:編輯模式與圖像生成模式。默認打開時爲編輯模式,鍵盤F1用於兩種模式的切換。鍵盤F2用於切換到圖像生成模式,並進行圖像生成處理。鼠標右鍵拖動用於設置視口位置,滾輪用於視口的縮放。按下鍵盤F,會自動設置成最佳視口。按下鍵盤X則設置成默認大小的視口,這可以使圖像處於其原始大小顯示。ide
文件夾"images"中存放各類生成圖像的配置文件。鼠標將某一配置文件拖入到軟件中,便可打開文件。也能夠經過菜單項中的「文件->打開配置文件...」來進行文件選擇打開。亦可使用快捷鍵CTRL+F來加載配置文件。下圖爲打開了一個洛倫茨吸引子的點集截圖:函數
打開某個配置文件後,會進入編輯模式,當按下F2會切換到圖像生成模式並生成混沌圖像。以下圖所示:工具
按下F5或經過菜單項中的「視圖->數學腳本編輯面板...」能夠打開數學腳本編輯面板,在此對數學公式進行編輯修改。以下圖所示:oop
在編輯模式下,右邊會有一控件,用於設置數學公式的初始變量值。post
當公式編輯完成後,若是但願將點集轉化成圖像,須要設置成像剪裁範圍,經過下圖控件進行設置:url
其中有個按鈕「Auto Set Extend」會自動按點集的範圍設置成像剪裁範圍。用戶也能夠直接在二維場景中調節該剪裁範圍。spa
在圖像生成模式下,能夠設置圖像的顯示通道,如RGB三個顏色通道,圖像反色等。將點集數據轉化成彩色圖像,可採用兩種方式,一爲顏色表達式,另外一個是僞彩表。下圖爲使用僞彩+反色的圖像:3d
圖像生成模式下有一個控件用於圖像生成控制:
按鈕「Process」用於對圖像的生成。
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
既然要將數學公式以計算機能識別的方式表達出來,就須要一套腳本語言。
目前有如下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,8,10,16四種進制
(1)0X開頭爲16進制, XABCDEF大小寫均可以, 如0xffff
(2)0Y開頭爲2進制, Y大小寫均可以, 如0y10101010000
(3)0開頭爲8進制, 如07523, 注意出現了"08"之類的會解析失敗
(4)默認爲10進制
對浮點數的解析支持兩種方式
(1)形如」0.12」的格式,不能省略前面的0,
(2)科學表達格式.形如1.2e2
系統中的全部數據類型都爲float類型,有兩種變量類型:
1.固定變量
系統中使用a-z的26個英文小寫字母表示變量,變量可以存儲單個實數,或一個實數數組.若是爲實數數據,則其數組大小爲以前設置的頂點數目(見3).
設置爲單個實數
a = 3.1415 // 將a賦值爲3.1415
固定變量中x,y將組成2D頂點位置座標,用於圖形與圖像的生成。
2.臨時變量
能夠自定義名的變量,以字母或下劃線開頭的字符串,最多有7個字節。
完整的運算符說明請看文檔:《運算符說明.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
支持{}, [], ()這三類括號標誌符,括號必需成對出現.支持最大32級括號的嵌套.如:
(2+(-2+(5.0*(9 + ((1+2)*3))/3) + 2))
-{exp[5*sqrt(1 -abs[sin{rand(100)}]) + 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
[Variables] 這是公式所須要設置的變量初始值
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] 其餘相關參數
Iteration=10000000 公式的總迭代次數
StepValue=0.000100
ImageMinX=-25.677399 頂點座標轉化成圖像時所須要的剪裁範圍
ImageMinY=-25.972094
ImageMaxX=24.993305
ImageMaxY=24.698610
ProcessSpeed=2000 生成圖像時的速度
軟件下載地址:
1.1版本: http://files.cnblogs.com/files/WhyEngine/YChaos_1_1.7z
2.0版本: http://files.cnblogs.com/files/WhyEngine/YChaos_2_0.7z
相關文章: