- 生成藝術(shù):Processing視覺創(chuàng)意入門
- 華好
- 1075字
- 2021-10-15 18:53:29
第2章
變化多端的圓形
2.1 變量與循環(huán)
在第1章我們體驗(yàn)了Processing的畫布、畫筆和顏色。不難發(fā)現(xiàn),Processing用數(shù)字表示圖形和顏色,而變化的數(shù)字可以產(chǎn)生變化的圖形和顏色。變量(variable)用來表示變化的數(shù),譬如:

運(yùn)行程序后,控制臺打印出-1和-3兩個結(jié)果。代碼中的int a=-1語句做了兩件事:①聲明一個整數(shù)型(int)變量a;②把一個具體的值-1賦予a。因?yàn)閍是變量,所以我們可以隨時賦給它新的值,如a=-3。一般來說,變量的名字用小寫,如果變量的名字由幾個單詞組成,可以用the_first_variable或theFirstVariable這兩種形式。

值得注意的是,a是一個int型變量,因此不能把小數(shù)賦給它。例如,a=0.5語句會觸發(fā)程序異常(Exception),消息區(qū)域會變成深褐色,并顯示:cannot convert from float to int。當(dāng)?shù)忍栍覀?cè)的數(shù)據(jù)類型無法自動轉(zhuǎn)換為等號左側(cè)的數(shù)據(jù)類型時,就會觸發(fā)這類異常。
另一種常用的數(shù)據(jù)類型是小數(shù)(float),現(xiàn)在我們來創(chuàng)建一個名為x的float型變量:

其中,+=運(yùn)算符的含義是:把運(yùn)算符左邊的變量加上右邊的數(shù),并計算最終結(jié)果。類似的還有-=、*=和/=,讀者不妨自己試一試,看看結(jié)果是否和想象的一樣。運(yùn)行上面的程序會得到-1.6、0.39999998三個結(jié)果。【好可怕!程序吃掉了0.00000002!】最后一個結(jié)果看上去很奇怪,因?yàn)檎_結(jié)果應(yīng)該是0.4。
實(shí)際上float數(shù)據(jù)類型所表示的數(shù)字精度是有限的,這和我們熟悉的“絕對精確的數(shù)學(xué)”完全不同。但對于生成藝術(shù)來說,精度似乎不是問題。
變量之間也可以做運(yùn)算,例如:

其中,++運(yùn)算符的含義是給左邊的變量加上1。“程序猿們”熱愛偷懶,發(fā)明了很多簡化的運(yùn)算符,類似的還有——運(yùn)算符。程序的運(yùn)行結(jié)果為“result is 2.5”。最后一句println()中的參數(shù)為“result is”+result,即把一個小數(shù)(result值為2.5)與字符串“result is”拼接成一段字符串。

現(xiàn)在我們在屏幕中央畫一個圓形,使圓的邊緣始終與鼠標(biāo)光標(biāo)對齊:

代碼運(yùn)行結(jié)果如圖2-1所示。

圖2-1 一組同心圓,移動鼠標(biāo)可控制圓的大小
在指定HSB顏色模式時,我們采用了變量之間的運(yùn)算:mouseX*256/w,即把鼠標(biāo)的x坐標(biāo)(從0到w)縮放到0~255。代碼中的dist()是Processing自帶的求兩點(diǎn)之間距離的方法,四個參數(shù)分別為第一個點(diǎn)的x與y坐標(biāo),以及第二個點(diǎn)的x與y坐標(biāo)。運(yùn)用勾股定理,代碼中的dist()語句可以用以下代碼代替:

其中,sqrt()是求平方根的方法,sqrt是square root的縮寫。

下面來認(rèn)識一下編程語言中常用的for循環(huán)語句:

該循環(huán)從變量i等于0開始,每次循環(huán)給i加上1,直到i為8(不再滿足i<8的循環(huán)條件)的時候停止循環(huán)。全世界的“程序猿”都喜歡從0開始計數(shù),所以

中的i會從0變到n-1,因此花括號內(nèi)的代碼不會經(jīng)歷“i=n”的情況?,F(xiàn)在我們用手指來表示n。

for循環(huán)有很多靈活的用法,譬如計算5~25中所有奇數(shù)的平方根:

這里的初始狀態(tài)條件是i=5(不是從0開始),繼續(xù)循環(huán)的條件是i≤25(允許i等于25),每次循環(huán)會把i增加2。
- 國際大學(xué)生程序設(shè)計競賽中山大學(xué)內(nèi)部選拔真題解(二)
- Eclipse Plug-in Development:Beginner's Guide(Second Edition)
- Visual C++數(shù)字圖像處理技術(shù)詳解
- 概率成形編碼調(diào)制技術(shù)理論及應(yīng)用
- Mastering ServiceNow(Second Edition)
- Python數(shù)據(jù)分析從0到1
- BIM概論及Revit精講
- Spring Boot+Vue全棧開發(fā)實(shí)戰(zhàn)
- Java Web從入門到精通(第2版)
- Java高并發(fā)編程詳解:深入理解并發(fā)核心庫
- Web前端開發(fā)最佳實(shí)踐
- JavaScript前端開發(fā)基礎(chǔ)教程
- Java Web開發(fā)教程:基于Struts2+Hibernate+Spring
- Less Web Development Cookbook
- 量子計算機(jī)編程:從入門到實(shí)踐