






|||
上面這個圖是畫等距螺線用的,如果畫不等距螺線,需要改變每條斜線的間距和斜率。


說明:圖片的右下會出現(xiàn)一道黑色的痕跡,這條黑線是原圖的底邊上的黑點映射過來的。原圖的底邊在極坐標后會映射為與新圖外邊框內(nèi)切的圓(正方形畫布,如果是長方形畫布就是橢圓)以及圓外的所有空白的地方。如果要避免這條黑線,只要注意原圖的底邊線為背景色就可以了。其實這道線也有其特殊的用法,具體見后面的例子。
畫好的螺線還可以用imageready做成gif動畫。
2.5 縱向斜線和網(wǎng)格的極坐標變化
道理都是一樣的,看明白一個,其他的就都會了。但要注意,如果是填充豎線,新的畫布尺寸最好是原定義圖案尺寸的整數(shù)倍。不然,原圖的左右兩邊在極坐標濾鏡之后不能很好的融和。
下面的這兩個圖就利用了剛才介紹的黑線做成了內(nèi)切圓外的放射線。


復(fù)雜圖形演變

2.6 網(wǎng)格的極坐標變化
利用簡單的網(wǎng)格配合其他一些濾鏡的使用可以做出各種出人意料的效果。如圖組6~組9。下面以組8為例簡單介紹一下制作方法。
先畫網(wǎng)格,不知道大家用什么方法畫網(wǎng)格?填充還是別的什么方法,以后可以交流一下。我畫網(wǎng)格用的是拼貼(tiles)。

|||
使用極坐標濾鏡(極坐標—>直角坐標),垂直翻轉(zhuǎn)。

再次s使用極坐標濾鏡(極坐標—>直角坐標),垂直翻轉(zhuǎn)。

再使用極坐標濾鏡(直角坐標—>極坐標)

使用光照濾鏡,曲線


完成效果如下。

|||
組7和組9的制作方法與組8類似,只是中間夾雜了一些其他的步驟。


其他應(yīng)用

2.7 制作光盤
制作光盤的方法很多,這個當(dāng)然是用極坐標畫的,但感覺做得并不好。

2.8 放射文字
組11,關(guān)于這個網(wǎng)上有很多教程,不再贅述。
既然如此,那么極坐標到直角坐標轉(zhuǎn)換有什么用處呢?大部分情況下,需要進行極坐標變換的僅僅是圖像中的一部分,如果直接“做直線->直角坐標轉(zhuǎn)極坐標”,那么原有圖像也會被扭曲。因此可按照“極坐標轉(zhuǎn)直角坐標->做直線->直角坐標轉(zhuǎn)極坐標”的方式,就能保持原有圖像不變。
由此我們可以總結(jié)出極坐標濾鏡以下幾個特點:
與風(fēng)結(jié)合
風(fēng)濾鏡恰好是制作直線特別是漸隱的放射效果直線的好工具。根據(jù)上面 “極坐標轉(zhuǎn)直角坐標->做直線->直角坐標轉(zhuǎn)極坐標”的理論,使用風(fēng)來制作直線,就能獲得所需的放射效果

2.9 形狀的極坐標變化
我最喜歡這個,是無意中試出來的。組12。

具體應(yīng)用就講到這里,最后講講一點點理論,說一下極坐標轉(zhuǎn)換濾鏡的工作過程。
三、 極坐標濾鏡的工作過程(直角坐標到極坐標)
一般而言,位圖圖像中的任意一點(象素)可以用直角坐標(x,y)來表示。同樣這個象素也可以由極坐標(r,a)來表示。極坐標濾鏡的工作過程就是將基于直角坐標系的象素(x,y)經(jīng)過極坐標映射(r,a)之后再由直角坐標(x’,y’)表示出來的過程。
直角坐標和極坐標的互化公式如下:
r = sqrt ( x * x + y * y )
a = arctg ( y / x )
x = r * cos ( a )
y = r * sin ( a )
下面是一段是模擬極坐標濾鏡工作的偽代碼。這個代碼并不是我編寫的,我也只是看懂而已,更詳細的解釋可以參考下面的鏈接:
http://www.jasonwaltman.com/thesis/filter-polar.html
(這是個國外的網(wǎng)站,站主利用c++模擬出了一些ps的濾鏡的效果,而且提供源代碼和源程序。)
for every pixel in the original image do
{
// x和y是當(dāng)前象素在直角坐標內(nèi)的坐標。
// 圖像中心點的坐標為 x = 0, y = 0。
// r 和 a 是象素的極坐標。其中角度a為弧度單位。
r = sqrt ( x * x + y * y );
a = atan2 ( y / x );
// r取圖像長和寬的最小值的一半。
r= min[ image_width , image_height ] / 2
// 新的x和y是經(jīng)過極坐標濾鏡變換之后,象素在直角坐標系中的新坐標。這個轉(zhuǎn)換的目的,特別是r和6.2832(2pi)的選擇,我認為是將轉(zhuǎn)換后的圖像限定到原畫布大小之內(nèi)的作用。同時這個步驟最終導(dǎo)致了圖像的變形。
x = r * image_height / r;
y = a * image_width / 6.2832;
filterpixel.x = x;
filterpixel.y = y;
}
這僅僅是一段偽代碼而已,真正的執(zhí)行過程要復(fù)雜一些,如果繼續(xù)深入下去就嚴重跑題了,所以深入的討論還是請參見那個鏈接,自己去看吧。
最后引用那個網(wǎng)站的一句話作為結(jié)束語。
“if used creatively, the effect is worth more than just its novelty.”
希望各位在看過本文之后能有所啟發(fā)。口動不如心動,心動不如行動,期待各位的作品
|
新聞熱點
疑難解答