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

第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。

主站蜘蛛池模板: 揭阳市| 册亨县| 清流县| 兰溪市| 康乐县| 巴林左旗| 鄂州市| 新宾| 许昌县| 阜康市| 微博| 慈溪市| 无锡市| 孙吴县| 舒城县| 西青区| 额济纳旗| 辽宁省| 孝昌县| 新田县| 连江县| 乌恰县| 武功县| 若尔盖县| 泰安市| 溧阳市| 新民市| 彰化市| 芒康县| 大英县| 甘泉县| 利川市| 鞍山市| 理塘县| 张家港市| 安西县| 太和县| 革吉县| 江阴市| 长汀县| 名山县|