版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、用Processing進(jìn)行數(shù)據(jù)可視化,第1局部:語(yǔ)言和環(huán)境簡(jiǎn)介雖然很多開源工程的初衷都是為現(xiàn)有的應(yīng)用程序構(gòu)建替代方案,但是仍有大量的項(xiàng)目彰顯了創(chuàng)新性。Processing就是其中的一個(gè)。Processing在2001年誕生于麻省理 工學(xué)院MIR的媒體實(shí)驗(yàn)室,主創(chuàng)者為Ben Fry和Casey Reas,當(dāng)然還有來(lái)自Carnegie Mellon、洛杉磯的加利福尼亞大學(xué)以及邁阿密大學(xué)等的奉獻(xiàn)。Processing的最初目標(biāo)是開發(fā)圖形的sketchbook和環(huán)境,用來(lái)形象地教授計(jì)算機(jī)科學(xué)的根底知識(shí)。之后,它逐漸演變成了可用于創(chuàng)立圖形可視化專業(yè)工程的一種環(huán)境。如 今,圍繞它已經(jīng)形成了一個(gè)專門的社區(qū),
2、致力于構(gòu)建各種庫(kù)以供用這種語(yǔ)言和環(huán)境進(jìn)行 動(dòng)畫、可視化、網(wǎng)絡(luò)編程以及很多其他的應(yīng)用。在本文中,您會(huì)發(fā)現(xiàn)Processing是一 個(gè)很棒的進(jìn)行數(shù)據(jù)可視化的環(huán)境,具有一個(gè)簡(jiǎn)單的接口、一個(gè)功能強(qiáng)大的語(yǔ)言以及一套豐富的用于數(shù)據(jù)以及應(yīng)用程序?qū)С龅臋C(jī)制。Processing運(yùn)行于GNU/Linux ?以及Mac OS X和Windows?上,并且支持將圖像 導(dǎo)出成各種格式。對(duì)于動(dòng)態(tài)應(yīng)用程序,甚至可以將Processing應(yīng)用程序作為Java?applet導(dǎo)出以用在Web環(huán)境內(nèi)。本文將先介紹Processing IDE,然后再討論P(yáng)rocessing語(yǔ)言的第一個(gè)層面。之后將 會(huì)介紹一些關(guān)鍵的圖形原語(yǔ),最后那
3、么探討幾個(gè)利用這些原語(yǔ)的應(yīng)用程序。Processing的起源Processing最早是一個(gè)用于教授計(jì)算機(jī)編程的簡(jiǎn)化編程語(yǔ)言。這些理念起源于MITMedia Lab John Maeda的Design By Numbers工程,目的是通過(guò)可視應(yīng)用程序的開 發(fā)來(lái)教授編程。雖然它供編程初學(xué)者使用,但該工程也針對(duì)藝術(shù)家及可視化設(shè)計(jì)者而設(shè)。有關(guān)Processing及衍生產(chǎn)品的更多信息,請(qǐng)參見(jiàn)參考資料。Processing環(huán)境第一步是安裝Processing環(huán)境。去至U P,單擊DownloadProcessing并選擇您的操作系統(tǒng)。請(qǐng)注意,本文中的例子使用的是Processin
4、gV1.2.1。下載了壓縮文件后,用tar xvfz processing-1.2.1.tgz對(duì)其進(jìn)行展開。此外,還需要確保Java技術(shù)已經(jīng)可用。在Ubuntu上,只需鍵入sudo apt-get installopenjdk-6-jdk。安裝完成后,轉(zhuǎn)到之前解壓縮時(shí)創(chuàng)立的processing-1.2.1目錄并嘗試鍵入./processing。這應(yīng)該會(huì)彈出Processing Development Environment PDE或Processing IDE ,如 圖1所示。占此窗口較大的局部是文本編輯器。如果輸入圖中所示的兩行代碼,然后 單擊Run左上角的三角形,出現(xiàn)一個(gè)窗口,顯示您所輸入
5、的簡(jiǎn)單程序或Processing術(shù)語(yǔ)所指的sketch的結(jié)果。單擊Stop左上角的方框退出程序,窗口消失。圖1. PDE和Results窗口現(xiàn)在,讓我們先來(lái)深入研究Processing語(yǔ)言,探討它的主要特性,并且開發(fā)一些有趣 的應(yīng)用程序?;仨?yè)首Processing語(yǔ)言Processing是用Java編程語(yǔ)言寫的,并且Java語(yǔ)言也是在語(yǔ)言樹中最接近Processing的。所以,如果您熟悉C或Java語(yǔ)言,Processing將很容易學(xué)。并 且在程序如何構(gòu)造方面,也作了一些簡(jiǎn)化。Processing并不包括Java語(yǔ)言的一些較為高級(jí)的特性,但這些特性中的很多特性均已集成到了Processing
6、,所以您無(wú)需了解 它們。之所以選擇Java語(yǔ)言是因?yàn)镻rocessing應(yīng)用程序被翻譯成Java代碼執(zhí)行。選擇Java范型簡(jiǎn)化了這種翻譯并讓開發(fā)和執(zhí)行可視化程序變得十分簡(jiǎn)單和直觀。 假設(shè)要比照Processing語(yǔ)言和Java語(yǔ)言,請(qǐng)參閱參考資料?;仨?yè)首圖形環(huán)境正如您在 圖1所見(jiàn),在Processing內(nèi)進(jìn)行開發(fā)涉及到的是PDE和顯示窗口。2-D圖形的坐標(biāo)系如圖2所示。size關(guān)鍵字以像素為單位定義了顯示窗口的大小并且通 常都是Processing應(yīng)用程序內(nèi)的首要步驟。圖2. 2-D顯示窗口的坐標(biāo)A9Texteditor winctowDisplay window如圖2所不size關(guān)鍵字指定顯
7、不窗口的X和Y坐標(biāo)。line關(guān)鍵字那么會(huì)在兩個(gè)像素點(diǎn)之間繪制一條線以x1、y1 to x2、y2的格式。請(qǐng)注意,超出屏幕邊界size定義的邊界外畫線并非不允許,只是被忽略了而已。本文無(wú)意對(duì)此做深入探討,但size接受可選的第三個(gè)參數(shù)mode mode用來(lái)定義要使用的呈現(xiàn)引擎并支持PDF直接呈現(xiàn)為Adobe? PDF文檔、OPENGL利用一個(gè)可用的Open-GL圖形適配器、P3D為了迅速的3-D呈現(xiàn)等。默認(rèn)的 是JAVA2D它最適合于高質(zhì)量的2-D成像。現(xiàn)在,我們來(lái)看一些根本的圖形原語(yǔ),然后再深入探討幾個(gè)例如應(yīng)用程序?;仨?yè)首圖形原語(yǔ)Processing包含了大量各種各樣的幾何形狀以及這些形狀的控
8、件。本節(jié)會(huì)簡(jiǎn)介一些基 本的圖形原語(yǔ)。背景和顏色background功能被用來(lái)設(shè)置顯示窗口的顏色。此函數(shù)可以使用各種不同的參數(shù)來(lái)定義一個(gè)灰度值或Red-Green-Blue RGB顏色。清單1內(nèi)的代碼片段會(huì)生成如囹3所示的輸出,其中的cell a 。清單1.使用Background函數(shù)size (100, 100);background ( 0, 128, 0 );繪制像素點(diǎn)可以使用set函數(shù)繪制單個(gè)像素點(diǎn)。此函數(shù)接受顯示窗口內(nèi)的x,y坐標(biāo)以及作為顏色的第三個(gè)參數(shù)。Processing也有一個(gè)類型,稱為color ,通過(guò)它,可以定義用于某個(gè)操作的顏色。在本例中,我們創(chuàng)立了一個(gè)顏色實(shí)例并用它來(lái)設(shè)置
9、顯示窗口內(nèi)的某個(gè)像 素點(diǎn)參見(jiàn)清單2和圖3中的cell b 。清單2.設(shè)置像素點(diǎn)和顏色size (100, 100);for (int x = 0 ; x 100 ; x+) (for (int y = 0 ; y 100 ; y+) (color c = color ( x*2, y*2, 128 );set (x, y, c);)可以使用get操作來(lái)讀取顯示中的一個(gè)給定像素點(diǎn)的顏色。雖然set很簡(jiǎn)單,但它不是操做顯示的最快方式。要想快速訪問(wèn),可以使用pixels數(shù)組(與loadPixels和updatePixels函數(shù)一致)。繪制形狀在Processing內(nèi)使用單個(gè)函數(shù)繪制形狀十分簡(jiǎn)單。要設(shè)
10、置在繪制形狀時(shí)使用何種顏色,可以利用stroke函數(shù)。此函數(shù)可接受一個(gè)單獨(dú)的灰度參數(shù)或三個(gè)RGB參數(shù)。此外,還可以用fill命令定義這個(gè)形狀的填充色。清單3顯示了如何繪制線、矩形、圓(使用橢圓)及橢圓。line函數(shù)接受四個(gè)參數(shù),代表的是要在其間繪制線條的點(diǎn)。rect函數(shù)可繪制一個(gè)矩形,并且前兩個(gè)點(diǎn)定義位置,而后面兩個(gè)點(diǎn)那么分別定義寬度和高度。ellipse函數(shù)也接受四個(gè)參數(shù),分別定義位置和寬/高度。當(dāng)寬和高相等時(shí),就是一個(gè)圓形。還可以使用ellipseMode函數(shù)定制橢圓,它指定x,y位置是否代表了橢圓的角(CORNE皿中心(CENTER。參見(jiàn) 圖 支中的cellC。清單3.線和形狀size
11、(100, 100);stroke (0, 128, 0);line (10, 10, 90, 90);fill (20, 50, 150);rect (30, 30, 60, 40);fill (190, 0, 30);ellipse (30, 70, 20, 20);fill (0, 150, 90);ellipse (70, 30, 30, 20);繪制四邊形在Processing內(nèi)使用quad可以很容易地繪制有四個(gè)邊的多邊形。四邊形接受八個(gè)參數(shù),代表的是這個(gè)四邊形的四個(gè)頂點(diǎn)。清單4內(nèi)的例如創(chuàng)立了10個(gè)隨機(jī)的四邊形(其中這些點(diǎn)必須是順時(shí)針或逆時(shí)針順序。此代碼還會(huì)為每個(gè)四邊形創(chuàng)立一個(gè)隨機(jī)的
12、灰度。清單4.繪制四邊形size (100, 100);for (int i = 0 ; i 4 Oil 5ftu|iC) 1112 E SO): f ir !PPIBT fort -tB.wlw1;做是為了防止更改對(duì)空間的破壞。此空間然后會(huì)成為一個(gè)顯示空間被顯示的東西 和一個(gè)計(jì)算空間規(guī)那么的應(yīng)用。這些空間按每次生成對(duì)調(diào)。從很大程度上講,這個(gè)應(yīng)用程序使用了極少的Processing圖形關(guān)鍵字。為空間定義的顏色只有幾個(gè):stroke用來(lái)更改顏色,point用于繪制像素點(diǎn)。使用Processing模型,draw函數(shù)調(diào)用update以應(yīng)用規(guī)那么;返回后,draw將這個(gè)更新了的空間發(fā)到顯示窗口。清單5
13、.元胞自動(dòng)機(jī)森林火災(zāi)模型int pix = new int2400400;int toDraw = 0;int tree = 0;int burningTree = 1;int emptySite = 2;int x_limit = 400;int y_limit = 400;color brown = color(80, 50, 10); / browncolor red =color (255, 0, 0); / red;color green = color(0, 255, 0); / greenfloat pGrowth = 0.01;float pBurn = 0.00006;boo
14、lean prob( float p )if ( random (0, 1) p) return true;else return false;void setup ()size (x_limit, y_limit);frameRate (60);/* Initialize to all empty sites */for (int x = 0 ; x x_limit ; x+) for (int y = 0 ; y y_limit ; y+) pixtoDrawxy = emptySite;)void draw()(update();for (int x = 0 ; x x_limit ;
15、x+) (for (int y = 0 ; y y_limit ; y+) (if (pixtoDrawxy = tree) (stroke ( green );) else if (pixtoDrawxy = burningTree) (stroke ( red );) else stroke ( brown );point ( x, y );)toDraw = (toDraw = 0) ? 1 : 0;)void update()(int x, y, dx, dy, cell, chg, burningTreeCount;int toCompute = (toDraw = 0) ? 1 :
16、 0;for (x = 1 ; x x_limit-1 ; x+) (for (y = 1 ; y y_limit-1 ; y+) (cell = pixtoDrawxy;/ Survey area for burning treesburningTreeCount = 0;for (dx = -1 ; dx 2 ; dx+) (for (dy = -1 ; dy 0) chg = burningTree;else chg = cell;pixtoComputexy = chg;)圖6顯示了這個(gè)元胞自動(dòng)機(jī)森林火災(zāi)模型的迭代,跳躍恰當(dāng),很好地顯示了所設(shè)規(guī)那么的效果。Time 0包含的只有樹木在其
17、中生長(zhǎng)的空間。在time 40,就可以開始看到大 火在燃燒并最終占據(jù)整個(gè)空間。在大約time 100,樹木生長(zhǎng)更為明顯,但在time 120時(shí),起火更多,過(guò)程循環(huán)。圖6.元胞自動(dòng)機(jī)森林火災(zāi)模型的輸出回頁(yè)首易染/感染/免疫模型易染/感染/免疫模型模擬的是疾病在醫(yī)院內(nèi)的蔓延。與森林火災(zāi)模型類似,SIR也是通過(guò)一套簡(jiǎn)單規(guī)那么實(shí)現(xiàn)的,只不過(guò)添加了一些復(fù)雜性和有趣的行為。在這個(gè)模型內(nèi),有一個(gè)由病人占據(jù)的病床組成的網(wǎng)格。在time 0,所有病人都是某一種新疾病的易染人群,這意味著這些病人從未患過(guò)這種疾病,因此才有可能被感染。如果在某個(gè)病人的東 /南/西/北的四個(gè)鄰居中有一個(gè)患了這種疾病,那么該病人受感染的
18、可能性為tauo一個(gè)受感染的病人的患病時(shí)間為K天,在此期間病人有感染其他病人的可能性。在K天后,該病人康復(fù)并有了對(duì)這種疾病的免疫力。正如之前的例子所示,setup函數(shù)先初始化這個(gè)醫(yī)院以及所有易染病人,只有最中心 的這個(gè)病人是已經(jīng)患病的。在該實(shí)現(xiàn)內(nèi),0是易染病人,1-K是感染病人,-1是免疫病人。draw函數(shù)將這種幾何分布發(fā)到顯示窗口,update實(shí)施這些SIR規(guī)那么。與之前一樣,可以用一個(gè)3D數(shù)組保存當(dāng)前的這些幾何分布。清單6給出了此代碼。清單6. Processing內(nèi)的SIR模型int beds = new int2200200;int toDraw = 0;int x_limit = 2
19、00;int y_limit = 200;color brown = color (80, 50, 10); / browncolor red = color (255, 0, 0); / red;color green = color (0, 255, 0); / greenint susceptible = 0;int recovered = -1;float tau = 0.2;int k = 4;boolean prob( float p )if ( random (0, 1) p) return true;else return false;void setup ()size (x_
20、limit, y_limit);frameRate (50);for (int x = 0 ; x x_limit ; x+) for (int y = 0 ; y y_limit ; y+) bedstoDrawxy = susceptible;bedstoDraw100100 = 1;void draw()update();for (int x = 0 ; x x_limit ; x+) for (int y = 0 ; y y_limit ; y+) (if (bedstoDrawxy = recovered)stroke ( brown );else if (bedstoDrawxy = susceptible)stroke ( green );else if (bedstoDrawxy 0) & (patient k) return true;return false;)void update
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度物流企業(yè)分紅協(xié)議合同范本3篇
- 專有知識(shí)產(chǎn)權(quán)終身使用權(quán)轉(zhuǎn)讓協(xié)議(2024版)
- 2025屆高考物理二輪復(fù)習(xí):專題一 力與運(yùn)動(dòng) 第3講 力與曲線運(yùn)動(dòng)(A) -專項(xiàng)訓(xùn)練 【含答案】
- 二零二五年度白酒年份酒定制生產(chǎn)合同樣本3篇
- 2024版教育信息化解決方案合作協(xié)議
- 2025年度贖樓資金管理合同正文本3篇
- 二零二五年度石材供應(yīng)與建筑施工項(xiàng)目合同糾紛解決協(xié)議3篇
- 二零二五年度電子商務(wù)法律風(fēng)險(xiǎn)識(shí)別與合同標(biāo)的保障措施3篇
- 2025年度融資租賃合同補(bǔ)充協(xié)議12篇
- 二零二五年度駕駛員押運(yùn)員安全培訓(xùn)及保障合同3篇
- 1《地球的表面》說(shuō)課稿-2024-2025學(xué)年科學(xué)五年級(jí)上冊(cè)教科版
- 汽車以租代購(gòu)合同完整版完整版
- 音樂(lè)制作基礎(chǔ)知識(shí)單選題100道及答案解析
- 2024至2030年大型儲(chǔ)油罐項(xiàng)目投資價(jià)值分析報(bào)告
- GB/T 44764-2024石油、石化和天然氣工業(yè)腐蝕性石油煉制環(huán)境中抗硫化物應(yīng)力開裂的金屬材料
- 2024-2030年中國(guó)有機(jī)肥料行業(yè)需求狀況與投資前景預(yù)測(cè)報(bào)告
- 2025屆江蘇省南京師大附中物理高一上期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
- 農(nóng)戶種地合作協(xié)議書范本模板
- 2024年人教版八年級(jí)物理上冊(cè)期末考試卷(附答案)
- 自動(dòng)化招聘筆試試題及答案
- 重慶市主城四區(qū)2025屆高一物理第一學(xué)期期末聯(lián)考試題含解析
評(píng)論
0/150
提交評(píng)論