YChaos生成混沌圖像


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

一、軟件使用

  雙擊"YChaos圖像生成軟件.exe"啟動軟件

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

     文件夾"images"中存放各種生成圖像的配置文件。鼠標將某一配置文件拖入到軟件中,即可打開文件。也可以通過菜單項中的“文件->打開配置文件...”來進行文件選擇打開。亦可以使用快捷鍵CTRL+F來加載配置文件。下圖為打開了一個洛倫茨吸引子的點集截圖:

 

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

 

   按下F5通過菜單項中的“視圖->數學腳本編輯面板...”可以打開數學腳本編輯面板,在此對數學公式進行編輯修改。如下圖所示:

 

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

 

  當公式編輯完成后,如果希望將點集轉化成圖像,需要設置成像剪裁范圍,通過下圖控件進行設置:

 

      其中有個按鈕“Auto Set Extend”會自動按點集的范圍設置成像剪裁范圍。用戶也可以直接在二維場景中調節該剪裁范圍。

      在圖像生成模式下,可以設置圖像的顯示通道,如RGB三個顏色通道,圖像反色等。將點集數據轉化成彩色圖像,可采用兩種方式,一為顏色表達式,另一個是偽彩表。下圖為使用偽彩+反色的圖像:

 

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

 

      按鈕“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

三、腳本語法

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

[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遍。

四、配置文件

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

[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通過數學公式生成混沌圖像

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM