YChaos生成混沌圖像

      YChaos是一款經過數學公式生成混沌圖像的軟件,展現混沌之美,數學之美。軟件中定義一套簡易的腳本語言,用於描述數學表達式。使用時須要先要將數學表達式寫成該腳本的形式,解析腳本代碼以生成相應的圖形與圖像。該軟件與我以前寫的Why數學圖像生成工具WHY數學圖形可視化工具(開源)有很大關聯。它們使用的是同一套數學表達式解析代碼。若是你對數學生成圖形圖像感興趣,歡迎加入QQ交流羣: 367752815html

1、軟件使用

  雙擊"YChaos圖像生成軟件.exe"啓動軟件數組

     軟件中有兩種模式:編輯模式與圖像生成模式。默認打開時爲編輯模式,鍵盤F1用於兩種模式的切換。鍵盤F2用於切換到圖像生成模式,並進行圖像生成處理。鼠標右鍵拖動用於設置視口位置,滾輪用於視口的縮放。按下鍵盤F,會自動設置成最佳視口。按下鍵盤X則設置成默認大小的視口,這可以使圖像處於其原始大小顯示。ide

     文件夾"images"中存放各類生成圖像的配置文件。鼠標將某一配置文件拖入到軟件中,便可打開文件。也能夠經過菜單項中的「文件->打開配置文件...」來進行文件選擇打開。亦可使用快捷鍵CTRL+F來加載配置文件。下圖爲打開了一個洛倫茨吸引子的點集截圖:函數

 

     打開某個配置文件後,會進入編輯模式,當按下F2會切換到圖像生成模式並生成混沌圖像。以下圖所示:工具

 

   按下F5經過菜單項中的「視圖->數學腳本編輯面板...」能夠打開數學腳本編輯面板,在此對數學公式進行編輯修改。以下圖所示:oop

 

   在編輯模式下,右邊會有一控件,用於設置數學公式的初始變量值。post

 

  當公式編輯完成後,若是但願將點集轉化成圖像,須要設置成像剪裁範圍,經過下圖控件進行設置:url

 

      其中有個按鈕「Auto Set Extend」會自動按點集的範圍設置成像剪裁範圍。用戶也能夠直接在二維場景中調節該剪裁範圍。spa

      在圖像生成模式下,能夠設置圖像的顯示通道,如RGB三個顏色通道,圖像反色等。將點集數據轉化成彩色圖像,可採用兩種方式,一爲顏色表達式,另外一個是僞彩表。下圖爲使用僞彩+反色的圖像:3d

 

      圖像生成模式下有一個控件用於圖像生成控制:

 

      按鈕「Process」用於對圖像的生成。

2、軟件原理

      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

3、腳本語法

      既然要將數學公式以計算機能識別的方式表達出來,就須要一套腳本語言。

[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進制, XABCDEF大小寫均可以0xffff 

  (2)0Y開頭爲2進制, Y大小寫均可以0y10101010000

  (3)0開頭爲8進制07523, 注意出現了"08"之類的會解析失敗

  (4)默認爲10進制

對浮點數的解析支持兩種方式 

  (1)形如」0.12」的格式,不能省略前面的0,

  (2)科學表達格式.形如1.2e2

[3]變量及其賦值

系統中的全部數據類型都爲float類型,有兩種變量類型:

1.固定變量

系統中使用a-z26個英文小寫字母表示變量,變量可以存儲單個實數,或一個實數數組.若是爲實數數據,則其數組大小爲以前設置的頂點數目(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遍。

4、配置文件

用戶編輯好一個混沌圖像後,能夠將其保存到一個配置文件中,其配置文件的格式以下:

[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

相關文章:

混沌的藝術--- YChaos經過數學公式生成混沌圖像

相關文章
相關標籤/搜索