999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

在MATLAB中實現多種漸變填充效果

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

史 文 崇

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

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

1 線性漸變填充

1.1 水平方向線性漸變填充

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

根據上述思路,首先考慮實現從左向右水平方向的線性漸變填充。構建水平方向尺寸為0.01個單位,鉛垂方向為0.5個單位的微小矩形,在循環體內每次向右平移0.01個單位。填充色變化幅度也為0.01。在100次循環中從黑色漸變為白色。核心代碼如下:

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

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

hold on;%保持連續畫圖狀態

for i=0:100

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

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

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

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

end

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

1.2 垂直漸變與斜角漸變

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

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

1.3 線性漸變填充原理的綜合應用

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

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

hold on;

for n=0:200

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

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

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

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

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

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

end

axis square;axis tight;

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

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

for m=0:100 %因半徑小,循環次數可減少

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。可見已實現類似圓形紐扣或按鈕的理想的立體效果。

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

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

2.1 實現徑向漸變填充的基本思路

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

圖5 圓球的漸變填充

hold on; %持續畫圖

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

k=1-0.01*i; %色彩值相應變化

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 五角星的漸變填充

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

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

綜合運用這一漸變填充原理具有重要意義。例如,以3個半徑不等的同心圓互為填充邊界形成3個圓環,最外圍沿徑向從黑到白漸變,中間圓環從外向內沿圓心方向從白色到黑色漸變填充,中間圓形以純白色填充。可得到圖7的環狀效果。

圖7 徑向漸變填充應用一例

3 路徑漸變填充

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

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

例如,對于兩個圓曲線x2+y2=22和x2+y2=42圍成的環形區域實現漸變填充。x和y的函數關系可通過中間變量t利用極坐標間接地表示。填充色和輪廓色隨循環變量相應設置。核心程序代碼可為:

hold on;

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

t2=pi/100:-0.001:0; %內圓弧度變化范圍

for n=1:200

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

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

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

C0=0.005*n;

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

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

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

t1=t1+pi/100;

t2=t2+pi/100;

end

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

圖8 對稱圓環漸變填充效果 圖9 不對稱環形的漸變填充

這種漸變效果可用于平面廣告設計等領域。

4 結 論

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

猜你喜歡
色彩效果
按摩效果確有理論依據
迅速制造慢門虛化效果
秋天的色彩
繽紛夏日
抓住“瞬間性”效果
中華詩詞(2018年11期)2018-03-26 06:41:34
神奇的色彩(上)
模擬百種唇妝效果
Coco薇(2016年8期)2016-10-09 02:11:50
春天的色彩
環球人物(2016年9期)2016-04-20 03:03:30
色彩當道 俘獲夏日
Coco薇(2015年5期)2016-03-29 23:18:25
2015春夏鞋履色彩大集結
Coco薇(2015年3期)2015-12-24 02:46:58
主站蜘蛛池模板: 亚洲综合第一区| 欧美午夜视频在线| 久久人体视频| 91色老久久精品偷偷蜜臀| 思思99热精品在线| 亚洲精品老司机| 国产成人免费手机在线观看视频 | 国产成人亚洲日韩欧美电影| 亚洲区视频在线观看| 无码区日韩专区免费系列| 成人综合在线观看| 99re热精品视频国产免费| 亚洲第一中文字幕| 亚洲首页在线观看| 都市激情亚洲综合久久| 在线中文字幕网| 日韩第九页| 国产成人91精品免费网址在线| 尤物精品国产福利网站| 国产成人乱码一区二区三区在线| 国产不卡在线看| 伊人久久大香线蕉影院| 少妇精品网站| 四虎成人免费毛片| 欧美在线综合视频| 精品自窥自偷在线看| 99久久成人国产精品免费| 伊人色天堂| 亚洲日韩精品欧美中文字幕 | 亚洲AV电影不卡在线观看| 一本大道东京热无码av | 国产成人一区在线播放| 国产精品密蕾丝视频| 亚洲综合香蕉| 国产在线小视频| 91青青草视频| 高清亚洲欧美在线看| 久久婷婷六月| 蜜芽国产尤物av尤物在线看| 国产成人8x视频一区二区| 色婷婷电影网| 久久久久国色AV免费观看性色| 老熟妇喷水一区二区三区| 国产精品9| 18禁黄无遮挡网站| 国产精品私拍在线爆乳| 欧美成人日韩| 色偷偷综合网| 国产免费看久久久| 全部无卡免费的毛片在线看| 伊人久久婷婷五月综合97色| 亚洲精品老司机| 国产91在线|日本| 日本午夜影院| 99热这里都是国产精品| 国产视频一二三区| 国产天天射| Jizz国产色系免费| 国产亚洲日韩av在线| 日本福利视频网站| 中文字幕波多野不卡一区| 久久午夜影院| 成人噜噜噜视频在线观看| 视频二区亚洲精品| 老司机久久精品视频| 亚洲人成人伊人成综合网无码| 亚洲美女AV免费一区| 免费国产高清精品一区在线| 亚洲乱码精品久久久久..| 中字无码精油按摩中出视频| 国产欧美日韩另类| 午夜不卡福利| 久久公开视频| 国产三区二区| 亚洲va欧美va国产综合下载| 中文字幕在线看| 999在线免费视频| 青青青草国产| 国产精品久久久久久久久| 亚洲午夜久久久精品电影院| 欧美亚洲综合免费精品高清在线观看| 国产制服丝袜91在线|