這是一個再普通不過的循環結構小程序,它的功能是繪制一系列半徑逐漸增長的同心圓。如圖中的代碼所示,先畫一個藍色的圓;然后半徑加1,畫一個綠色的圓;半徑再加1,畫一個紅色的圓,并且不斷循環此過程400次。需要另外注明的是,繪畫所用的單位是像素(Pixel)。讀過往期連載文章的朋友也許會猜到,程序運行的結果并不是一個色彩斑斕的圓,而是一個灰色的圓,因為藍、綠、紅這三種顏色同時對眼睛產生了影響。然而,情況遠不是這么簡單!

程序運行后除了得到一個灰色的圓,同時產生出一些帶有其他顏色的奇怪花紋,靠近圓圈中間的花紋圖案也許會讓人產生不同的聯想,筆者想到的是宇宙飛船的著陸場,場地上不僅有橫向和縱向的“著陸坐標”,還有由中心向外散射出幾道柔和的光芒。
如圖所示,將標著圓圈記號的語句即所有的“i=i+1”全都修改成“i=i+0.3”,然后運行程序并觀察結果,接下來再全部修改成“i=i+0.33”后運行并觀察結果,再改成“i=i+0.333”和“i=i+0.3333”,雖然每次只是調整了一個很微小的量,但程序運行后得到的圖像差異明顯,有時不同顏色夾雜在一起,有時不同顏色卻涇渭分明。
將程序中所有的“i=i+1”全都修改成“i=i+0.33333333”,然后運行程序并觀察結果,接下來再逐步修改遞增的數值,如“i=i+0.44444444”、 “i=i+0.55555555”、“i=i+0.66666666”,以此類推,運行后將得到各種不同顏色的圓圈,這些顏色都不再是純的紅、綠、藍三色,有時是紫色,有時是淡藍色,情況變化多端,很難預料。
將程序中所有的“i=i+1”全都修改成“i=i+0.33333333”,然后按圖中所劃出的矩形框為段落,顛倒這三段程序的位置,程序功能看上去并沒有發生變化,但結果會得到不同的單純顏色圓。
將程序中標著圓圈記號的語句即所有的“i=i+1”全都修改成“i=i+0.001”,然后在程序的Command事件中的第一行即語句“i=1”之前增加一句“Form1.DrawWidth = 50”,將得到一個不同顏色交替滾動的精彩動畫。如果動畫速度太快,可以在“i=i+0.001”中的“0.001”的小數點后再增加幾個0。
本文的問題是,這些奇特效果是怎樣產生的呢?需要提醒大家的是,雖然文中所使用的編程環境是Visual Basic,但用其他的可視化程序設計環境,只要稍加改造也能產生類似的奇怪效果。另外,本文采用像素(Pixel)作為繪畫單位,但若將單位設置成默認的Twip,只要合理調整程序中數字的值,效果會更加變幻莫測、難以琢磨。(答案在本期找)