官术网_书友最值得收藏!

第2章
變化多端的圓形

2.1 變量與循環

在第1章我們體驗了Processing的畫布、畫筆和顏色。不難發現,Processing用數字表示圖形和顏色,而變化的數字可以產生變化的圖形和顏色。變量(variable)用來表示變化的數,譬如:

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

值得注意的是,a是一個int型變量,因此不能把小數賦給它。例如,a=0.5語句會觸發程序異常(Exception),消息區域會變成深褐色,并顯示:cannot convert from float to int。當等號右側的數據類型無法自動轉換為等號左側的數據類型時,就會觸發這類異常。

另一種常用的數據類型是小數(float),現在我們來創建一個名為x的float型變量:

其中,+=運算符的含義是:把運算符左邊的變量加上右邊的數,并計算最終結果。類似的還有-=、*=和/=,讀者不妨自己試一試,看看結果是否和想象的一樣。運行上面的程序會得到-1.6、0.39999998三個結果。【好可怕!程序吃掉了0.00000002!】最后一個結果看上去很奇怪,因為正確結果應該是0.4。

實際上float數據類型所表示的數字精度是有限的,這和我們熟悉的“絕對精確的數學”完全不同。但對于生成藝術來說,精度似乎不是問題。

變量之間也可以做運算,例如:

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

現在我們在屏幕中央畫一個圓形,使圓的邊緣始終與鼠標光標對齊:

代碼運行結果如圖2-1所示。

圖2-1 一組同心圓,移動鼠標可控制圓的大小

在指定HSB顏色模式時,我們采用了變量之間的運算:mouseX*256/w,即把鼠標的x坐標(從0到w)縮放到0~255。代碼中的dist()是Processing自帶的求兩點之間距離的方法,四個參數分別為第一個點的x與y坐標,以及第二個點的x與y坐標。運用勾股定理,代碼中的dist()語句可以用以下代碼代替:

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

下面來認識一下編程語言中常用的for循環語句:

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

中的i會從0變到n-1,因此花括號內的代碼不會經歷“i=n”的情況。現在我們用手指來表示n。

for循環有很多靈活的用法,譬如計算5~25中所有奇數的平方根:

這里的初始狀態條件是i=5(不是從0開始),繼續循環的條件是i≤25(允許i等于25),每次循環會把i增加2。

主站蜘蛛池模板: 施甸县| 蓬安县| 鹿泉市| 湟中县| 鄂温| 三原县| 禄丰县| 大悟县| 双鸭山市| 太和县| 武陟县| 吉林市| 外汇| 崇信县| 轮台县| 沙雅县| 库伦旗| 迁西县| 清水县| 灵宝市| 宕昌县| 安溪县| 阳城县| 沂南县| 海宁市| 长武县| 金门县| 喀喇| 南通市| 丹巴县| 兰坪| 南靖县| 龙南县| 双流县| 南江县| 伽师县| 彰化县| 突泉县| 仁化县| 丰都县| 津市市|