亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        在MATLAB中實現(xiàn)多種漸變填充效果

        2020-03-11 01:29:10
        河北科技師范學院學報 2020年4期
        關(guān)鍵詞:色彩效果

        史 文 崇

        (河北科技師范學院數(shù)學與信息科技學院,河北 秦皇島,066004)

        許多圖形圖像處理軟件都有漸變填充功能,可輕松實現(xiàn)從線性漸變到放射漸變填充,就連文字處理軟件Word也有相應(yīng)功能。MATLAB作為優(yōu)秀的數(shù)學類軟件,具有杰出的圖形圖像處理功能,許多函數(shù)可用于色彩填充:fill函數(shù)用于常規(guī)二維圖形色彩填充,fill3函數(shù)用于立體圖形的色彩填充[1~3],patch函數(shù)既可用于二維圖形也可用于三維圖形色彩填充,而mesh,surf,sphere等函數(shù)可實現(xiàn)三維圖形曲面的色彩填充效果[4,5]。其中,用patch函數(shù)實現(xiàn)線性漸變填充極其簡單[6],但在使用過程中,不確定性很大,很難掌控。mesh,surf,sphere等函數(shù)會自動產(chǎn)生漸變色[7,8],而且在使用中因為視角、光線等參數(shù)對總體效果的影響,很少需要進一步設(shè)置色彩漸變填充效果;對于錐角漸變、放射漸變、路徑漸變等填充,MATLAB中也沒有專門的函數(shù)。要想達到理想的漸變填充效果需要獨辟蹊徑。

        1 線性漸變填充

        1.1 水平方向線性漸變填充

        fill函數(shù)一般用于二維圖形的單色填充。要想實現(xiàn)漸變填充,一是填充區(qū)域要不斷改變,二是其色彩矩陣必須是變量。而要想實現(xiàn)線性漸變填充,就要使填充區(qū)域一直沿著某一個方向移動。這在循環(huán)程序中不難實現(xiàn),但要使?jié)u變填充效果達到平滑均勻,一是原始填充區(qū)域和移動幅度要足夠小,二是色彩的變化幅度要足夠小。還需注意,當利用fill函數(shù)填充一個圖形時,其色彩涉及填充區(qū)域顏色(facecolor)和外圍輪廓色(edgecolor)兩個屬性。忽略后一個屬性,或者后一個屬性值設(shè)置不當,都不會達到預(yù)期目的。一般會認為這兩個屬性應(yīng)采用不同的值,如果兩者的差值設(shè)置得當,效果會很完美。但鑒于輪廓線的寬度最小值和系統(tǒng)精度限制,實驗表明,這一思路往往難以達到預(yù)期目的。這里簡化操作,使輪廓色和填充色取相同的顏色值,以期獲得理想效果。

        根據(jù)上述思路,首先考慮實現(xiàn)從左向右水平方向的線性漸變填充。構(gòu)建水平方向尺寸為0.01個單位,鉛垂方向為0.5個單位的微小矩形,在循環(huán)體內(nèi)每次向右平移0.01個單位。填充色變化幅度也為0.01。在100次循環(huán)中從黑色漸變?yōu)榘咨?。核心代碼如下:

        x=[0,0,0.01,0.01];%微分矩形,寬度極小

        y=[0,0.5,0.5,0]; %微分矩形,高度

        hold on;%保持連續(xù)畫圖狀態(tài)

        for i=0:100

        c0=0.01*i; %填充色三元組隨循環(huán)變量變化,顏色值不斷增大

        c=[c0,c0,c0];%填充色矩陣,初值黑色[0,0,0],終值白色[1,1,1]

        fill(x,y,c,′edgecolor′,c);%填充色=輪廓色

        x=x+0.01;%小矩形向右微量平移

        end

        執(zhí)行上述程序,得到圖1??梢妼崿F(xiàn)了非常理想的水平漸變(從較黑到較白)填充效果,充分驗證了這種漸變填充原理的正確性。實驗表明,輪廓色屬性值設(shè)為“none”,效果相同。如在循環(huán)開始前,通過input語句設(shè)置初始和終止色彩矩陣C1,C2,其值由用戶自行輸入,只要程序中c0,c,i變量作相應(yīng)調(diào)整,完全可以實現(xiàn)任意兩種色彩的漸變填充效果。

        1.2 垂直漸變與斜角漸變

        上例之所以實現(xiàn)了水平方向漸變填充效果,是因為最初的微小四邊形水平尺寸遠遠小于垂直尺寸。而且在執(zhí)行每一循環(huán)后不斷向右微量平移(x=x+0.01)。在程序中,如最初取x=[0,0,1,1];y=[1,1.01,1.01,1],在每執(zhí)行一次循環(huán)體后改變y矩陣,如y=y-0.01,則可以實現(xiàn)從上向下垂直線性漸變填充的效果。不僅如此,在循環(huán)中同時小幅度改變x和y矩陣,還可以實現(xiàn)類似圖2的斜向線性漸變的填充效果。由此可以肯定,只要微小矩形矩陣構(gòu)建、色彩矩陣變化幅度和x,y矩陣變化幅度設(shè)置科學合理,利用fill函數(shù)可以實現(xiàn)所有線性漸變填充效果。

        圖1 矩形輪廓的線性漸變填充 圖2 斜向線性漸變填充效果

        1.3 線性漸變填充原理的綜合應(yīng)用

        上述線性漸變填充原理絕非僅僅適應(yīng)于矩形或平行四邊形輪廓的漸變填充。只要初始微小四邊形設(shè)置得當,在后面的循環(huán)體中科學設(shè)置縱橫坐標的函數(shù)關(guān)系和位移幅度、色彩變化幅度,可填充曲線輪廓圖形。例如,要繪制圓心在(0,0)點,半徑為2的圓(x2+y2=4)內(nèi)從黑色到白色的線性漸變,核心代碼可為:

        x=[-2,-1.98,-1.98,-2]; %微四邊形橫坐標初值

        hold on;

        for n=0:200

        y0=sqrt(4-x.∧2); %求相應(yīng)的縱坐標

        y=[y0(1),y0(2),-y0(3),-y0(4)];%微小四邊形縱坐標

        c0=n*0.005;%三原色顏色值隨循環(huán)變量不斷增大

        c=[c0,c0,c0]; %填充顏色值矩陣

        fill(x,y,c,′edgecolor′,c);%填充色=輪廓色或′edgecolor′值為“none”

        x=x+0.02; %小幅度向右平移

        end

        axis square;axis tight;

        運行上述程序,可得到圖3。這里得到的只是平面圖形效果,但綜合運用可呈現(xiàn)立體效果,并具有實用價值。例如,在圖3的基礎(chǔ)上,再疊加一層線性漸變填充——相同圓心和較小半徑的圓(例如,x2+y2=1),沿平行于x軸的方向從左到右從白色到黑色的漸變填充,核心代碼可為:

        xx=[-1,-0.98,-0.98,-1];

        for m=0:100 %因半徑小,循環(huán)次數(shù)可減少

        y0=sqrt(1-xx.∧2);

        yx=[y0(1),y0(2),-y0(3),-y0(4)];

        cx0=1-m*0.01;%從白到黑

        cx=[cx0,cx0,cx0];

        fill(xx,yx,cx,′edgecolor′, ′none′);

        xx=xx+0.02;

        end

        運行上述程序,得到圖4??梢娨褜崿F(xiàn)類似圓形紐扣或按鈕的理想的立體效果。

        圖3 曲線輪廓的線性漸變填充 圖4 線性漸變填充原理的綜合運用一例

        2 徑向漸變——錐形漸變與輻射漸變

        2.1 實現(xiàn)徑向漸變填充的基本思路

        在實際應(yīng)用中,正多邊形、星形、圓形往往不需要線性漸變填充,而更多的是錐角漸變、球面漸變填充。稍加分析不難發(fā)現(xiàn),正多邊形、星形、圓形這些圖形都是中心對稱圖形。無論向哪個方向平移都不可能實現(xiàn)錐角漸變或球形面漸變填充。這些漸變歸根結(jié)底屬于從邊緣向中心點的徑向縮放漸變,與線性漸變根本不同,不能用前面的fill填充原理實現(xiàn),只能靠合理安排縮放幅度來控制。用MATLAB繪出這些中心對稱圖形并不困難,而縮放主要靠半徑的漸變來實現(xiàn),而不是角度的改變。理論上,可以先繪制出這些中心對稱圖形,再在循環(huán)體中不斷改變半徑和填充(輪廓)色矩陣,即可實現(xiàn)錐角漸變或球面漸變效果。但Matlab中有scatter和plot函數(shù),可用于畫散點圖。而點的形狀(marker)可以是圓形、正三角型、正方形、五角星、六角形等,籍此完全可以省去編寫繪制中心對稱幾何圖形程序,模擬一些中心對稱圖形的漸變填充效果。持續(xù)畫圖時,點的坐標始終不變,而圖形大小、色彩(填充色和輪廓色)從大到小按均勻微小幅度變化,由于后產(chǎn)生的圖形將出現(xiàn)在先產(chǎn)生的圖形之上,最終必將呈現(xiàn)漸變填充效果。當然,同樣要借助循環(huán)語句實現(xiàn),關(guān)鍵是圖形大小和色彩值的變化幅度要足夠小,填充色和輪廓色保持一致?;谶@一思想,編寫如下代碼(色彩模式為RGB模式),可繪制三角形、正方形、五角星、圓形的漸變填充效果。例如,欲得到圖5所示球面漸變填充效果,程序核心代碼如下:

        圖5 圓球的漸變填充

        hold on; %持續(xù)畫圖

        for i=100:-1:1 %點的大小變量

        k=1-0.01*i; %色彩值相應(yīng)變化

        h=plot(3,3, ′o′,′markersize′,i); %重疊畫點

        %marker樣式可取s/p/h/∧/d等,得不同圖案

        c=[k,k,k]; %三色彩值相等,灰度效果

        set(h,′markerfacecolor′,c,′markeredgecolor′,c);

        %填充色和輪廓色取相同值或后者為none

        End

        而要想繪制圖6的有立體感的紅五角星,可將上述代碼段核心部分修改為:

        hold on;

        for i=0:99

        j=0.01*i;

        h=plot(3,3, ′p′,′markersize′,100-i);

        c=[1,j,j];

        set(h,′markerfacecolor′,c,′markeredgecolor′,c)

        end

        圖6 五角星的漸變填充

        不難看出,在程序中并未刻意考慮是哪類漸變,結(jié)果卻既有錐形漸變、也有球面(輻射)漸變??梢?,利用這一原理繪制徑向漸變效果圖案,漸變類型只取決于圖形的輪廓。這種徑向漸變技術(shù)用平面圖形逼真地模擬出了立體效果。

        2.2 徑向漸變填充原理的綜合運用

        綜合運用這一漸變填充原理具有重要意義。例如,以3個半徑不等的同心圓互為填充邊界形成3個圓環(huán),最外圍沿徑向從黑到白漸變,中間圓環(huán)從外向內(nèi)沿圓心方向從白色到黑色漸變填充,中間圓形以純白色填充??傻玫綀D7的環(huán)狀效果。

        圖7 徑向漸變填充應(yīng)用一例

        3 路徑漸變填充

        線性漸變填充色彩改變方向為直線。錐形漸變或球面漸變填充色彩改變方向為徑向。但有時候需要的漸變方向既非直線也非徑向,路徑可能是一條曲線。要實現(xiàn)此類色彩漸變填充,必須尋求其他途徑。

        在MATLAB中,填充函數(shù)fill(X,Y,C)的X,Y矩陣經(jīng)常包含y=f(x)類函數(shù)關(guān)系,可以認為該函數(shù)就是路徑函數(shù)或方向函數(shù)。當這種函數(shù)關(guān)系確定后,在色彩矩陣C控制得當時,利用線性漸變原理,即可實現(xiàn)路徑漸變填充效果。值得注意的是輪廓色和填充色設(shè)置原理與上文思路相同。

        例如,對于兩個圓曲線x2+y2=22和x2+y2=42圍成的環(huán)形區(qū)域?qū)崿F(xiàn)漸變填充。x和y的函數(shù)關(guān)系可通過中間變量t利用極坐標間接地表示。填充色和輪廓色隨循環(huán)變量相應(yīng)設(shè)置。核心程序代碼可為:

        hold on;

        t1=0:0.001:pi/100; %外圓弧度變化范圍

        t2=pi/100:-0.001:0; %內(nèi)圓弧度變化范圍

        for n=1:200

        x11=4*cos(t1); y11=4*sin(t1); %外圓坐標

        x21=2*cos(t2); y21=2*sin(t2); %內(nèi)圓坐標

        X=[x11 x21]; Y=[y11 y21]; %方位矩陣

        C0=0.005*n;

        C=[C0,C0,C0]; %填充色矩陣

        F=fill(X,Y,C); %填充函數(shù)

        set(F,′edgecolor′,C);%設(shè)置輪廓色

        t1=t1+pi/100;

        t2=t2+pi/100;

        end

        上述程序的執(zhí)行結(jié)果見圖8。可以看出,其色彩漸變的方向既非直線,亦非徑向,而是圓周曲線方向。其實,這一填充技法不局限于規(guī)則的圓環(huán)區(qū)域,漸變路徑也不局限于規(guī)則的圓周曲線。只要將2個閉合曲線的方程稍加改變,也可以實現(xiàn)不對稱環(huán)形的漸變填充效果。圖9實現(xiàn)了坐標方程x1=4.5*cos (t1),y1=3*sin (t1)的外橢圓和方程x2=1.5*cos (t2)+1,y2=2.2*sin (t2)-0.5的內(nèi)橢圓所包圍區(qū)域從黑色到白色的漸變填充??梢钥闯?,二者半徑和幾何中心并不相同,色彩漸變方向也非圓周曲線。

        圖8 對稱圓環(huán)漸變填充效果 圖9 不對稱環(huán)形的漸變填充

        這種漸變效果可用于平面廣告設(shè)計等領(lǐng)域。

        4 結(jié) 論

        在MATLAB中,通過fill函數(shù)、plot函數(shù)和循環(huán)語句可實現(xiàn)多種漸變填充效果。利用fill函數(shù)實現(xiàn)的關(guān)鍵是構(gòu)建微小四邊形,在循環(huán)中保持縱橫坐標值的函數(shù)關(guān)系,并不斷做微量平移,同時顏色值做微量改變;用plot函數(shù)實現(xiàn)的關(guān)鍵是在循環(huán)體中從大到小(變化幅度極小)在同一坐標點產(chǎn)生多個中心對稱圖形。二者都需要科學地構(gòu)建填充色彩矩陣,保證輪廓內(nèi)部填充色和輪廓線顏色一致。綜合運用這些填充原理,可得到具有實用價值的圖案,如用平面圖形模擬出理想的立體圖效果等。由于最終的漸變效果取決于輪廓的改變,在設(shè)計中,不必刻意考慮色彩漸變的類別或方向,而應(yīng)主要考慮圖形輪廓在循環(huán)中的改變規(guī)律。

        猜你喜歡
        色彩效果
        按摩效果確有理論依據(jù)
        迅速制造慢門虛化效果
        秋天的色彩
        繽紛夏日
        抓住“瞬間性”效果
        中華詩詞(2018年11期)2018-03-26 06:41:34
        神奇的色彩(上)
        模擬百種唇妝效果
        Coco薇(2016年8期)2016-10-09 02:11:50
        春天的色彩
        色彩當?shù)?俘獲夏日
        Coco薇(2015年5期)2016-03-29 23:18:25
        2015春夏鞋履色彩大集結(jié)
        Coco薇(2015年3期)2015-12-24 02:46:58
        爽爽精品dvd蜜桃成熟时电影院| 亚洲av熟女传媒国产一区二区| 2020国产在视频线自在拍| 99久久精品免费观看国产| 亚洲综合av在线在线播放| 久久久久人妻精品一区5555| 亚洲精品一区二在线观看| 精品无码国产自产在线观看水浒传| 久久精品娱乐亚洲领先| 91久久久久无码精品露脸| 日韩av中文字幕少妇精品| 久久久亚洲熟妇熟女av| 日本精品αv中文字幕| 2021国产成人精品国产| 日韩人妖一区二区三区| 亚洲中文字幕精品乱码2021| 国产乱码一二三区精品| 亚洲Av午夜精品a区| 国产丝袜在线福利观看| 国产av无码专区亚洲av果冻传媒| 日本xxxx色视频在线播放| 国产女奸网站在线观看| 经典黄色一区二区三区| 亚洲人交乣女bbw| 欧美在线三级艳情网站| 亚洲免费视频一区二区三区| 97中文字幕精品一区二区三区 | 日韩精品极品视频在线观看免费 | 激情丁香婷婷| 日本高清免费播放一区二区| 中字乱码视频| 国产99久久亚洲综合精品| 国产AV高清精品久久| 久久精品久99精品免费| 亚洲成在人线在线播放无码| 国产日产精品久久久久久| 日韩av一区二区无卡| 国产裸体美女永久免费无遮挡| 激情久久av一区av二区av三区| 国产精品亚洲综合色区丝瓜| 亚洲丝袜美腿在线视频|